<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\ApplicationApi; use Exception; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Str; class ApplicationApiController extends Controller { /** * Display a listing of the resource. * * @return Application|Factory|View|Response */ public function index() { return view('admin.api.index'); } /** * Show the form for creating a new resource. * * @return Application|Factory|View|Response */ public function create() { return view('admin.api.create'); } /** * Store a newly created resource in storage. * * @param Request $request * @return RedirectResponse */ public function store(Request $request) { $request->validate([ 'memo' => 'nullable|string|max:60' ]); ApplicationApi::create([ 'memo' => $request->input('memo') ]); return redirect()->route('admin.api.index')->with('success', 'api key created!'); } /** * Display the specified resource. * * @param ApplicationApi $applicationApi * @return Response */ public function show(ApplicationApi $applicationApi) { // } /** * Show the form for editing the specified resource. * * @param ApplicationApi $applicationApi * @return Application|Factory|View|Response */ public function edit(ApplicationApi $applicationApi) { return view('admin.api.edit' , [ 'applicationApi' => $applicationApi ]); } /** * Update the specified resource in storage. * * @param Request $request * @param ApplicationApi $applicationApi * @return RedirectResponse */ public function update(Request $request, ApplicationApi $applicationApi) { $request->validate([ 'memo' => 'nullable|string|max:60' ]); $applicationApi->update($request->all()); return redirect()->route('admin.api.index')->with('success', 'api key updated!'); } /** * Remove the specified resource from storage. * * @param ApplicationApi $applicationApi * @return RedirectResponse */ public function destroy(ApplicationApi $applicationApi) { $applicationApi->delete(); return redirect()->back()->with('success', 'api key has been removed!'); } /** * @param Request $request * @return JsonResponse|mixed * @throws Exception */ public function dataTable(Request $request) { $query = ApplicationApi::query(); return datatables($query) ->addColumn('actions', function (ApplicationApi $apiKey) { return ' <a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.api.edit', $apiKey->token) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a> <form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.api.destroy', $apiKey->token) . '"> ' . csrf_field() . ' ' . method_field("DELETE") . ' <button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button> </form> '; }) ->editColumn('token' , function (ApplicationApi $apiKey) { return "<code>{$apiKey->token}</code>"; }) ->editColumn('last_used' , function (ApplicationApi $apiKey) { return $apiKey->last_used ? $apiKey->last_used->diffForHumans() : ''; }) ->rawColumns(['actions' , 'token']) ->make(); } }