Skip to content

Instantly share code, notes, and snippets.

@thewebartisan7
Created October 16, 2020 06:18
Show Gist options
  • Save thewebartisan7/99c9882dfaad0def42fd61e16ec5c19b to your computer and use it in GitHub Desktop.
Save thewebartisan7/99c9882dfaad0def42fd61e16ec5c19b to your computer and use it in GitHub Desktop.
Generated CRUD Controller
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\BaseController;
use App\Models\Dummy;
use Spatie\QueryBuilder\QueryBuilder;
use Spatie\QueryBuilder\AllowedFilter;
use App\Filters\AdvancedSearch;
use App\Contracts\SearchService;
use Illuminate\Http\Request;
use App\Http\Requests\Admin\CreateDummyRequest;
use App\Http\Requests\Admin\UpdateDummyRequest;
class DummyController extends BaseController
{
/**
* @var Dummy $dummy
*/
protected $dummy;
/**
* Controller constructor
*
* @param Dummy $dummy
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function __construct(Dummy $dummy)
{
$this->dummy = $dummy;
}
/**
* Display a listing of the Dummy.
*
* @param Request $request
*
* @return \Illuminate\View\View
*/
public function index(Request $request)
{
$this->authorize('viewAny', $this->dummy);
try {
/** @var Dummy $dummies */
$dummies = QueryBuilder::for($this->dummy->query())
->allowedFilters(array_merge(
$this->dummy::$filterableBy?? [], [
AllowedFilter::custom('search', new AdvancedSearch, implode(',', $this->dummy::$filterableBy?? [])),
AllowedFilter::exact($this->dummy->getKeyName()),
AllowedFilter::trashed()
]))
->defaultSort($this->dummy::$orderByColumnName)
->allowedSorts($this->dummy::$sortableBy)
->paginate();
return view('admin.dummies.index', compact('dummies'));
} catch (\Exception $e) {
return $this->respondWithError($e->getMessage());
}
}
/**
* Show the form for creating a new Dummy.
*
* @return \Illuminate\View\View
*/
public function create()
{
$this->authorize('create', $this->dummy);
return view('admin.dummies.create');
}
/**
* Store a newly created Dummy in storage.
*
* @param CreateDummyRequest $request
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function store(CreateDummyRequest $request)
{
$this->authorize('create', $this->dummy);
/** @var Dummy $dummy */
$dummy = $this->dummy->create($request->validated());
return $this->respondWithSuccess(__('admin::crud.response_saved', ['resource' => __('models/dummies.singular')]));
}
/**
* Display the specified dummy.
*
* @param Dummy $dummy
* @return \Illuminate\View\View|\Illuminate\Http\RedirectResponse
*/
public function show(Dummy $dummy)
{
$this->authorize('view', $this->dummy);
return view('admin.dummies.show', compact('dummy'));
}
/**
* Show the form for editing the specified dummy.
*
* @param Dummy $dummy
* @return \Illuminate\View\View|\Illuminate\Http\RedirectResponse
*/
public function edit(Dummy $dummy)
{
$this->authorize('update', $this->dummy);
return view('admin.dummies.edit', compact('dummy'));
}
/**
* Update the specified dummy in storage.
*
* @param Dummy $dummy
* @param UpdateDummyRequest $request
* @return \Illuminate\Http\RedirectResponse
*/
public function update(Dummy $dummy, UpdateDummyRequest $request)
{
$this->authorize('update', $this->dummy);
$dummy->fill($request->validated())->save();
return $this->respondWithSuccess(__('admin::crud.response_updated', ['resource' => __('models/dummies.singular')]));
}
/**
* Trash the specified dummy from storage.
*
* @param Dummy $dummy
* @param Request $request
*
* @return \Illuminate\Http\RedirectResponse
*
* @throws \Exception
*/
public function trash(Dummy $dummy)
{
$this->authorize('trash', $dummy);
$dummy->delete();
return $this->respondWithSuccess(__('admin::crud.response_trashed', ['resource' => __('models/dummies.singular')]));
}
/**
* Remove the specified dummy from storage.
*
* @param Dummy $dummy
* @param Request $request
* @return \Illuminate\Http\RedirectResponse
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function destroy(Dummy $dummy)
{
$this->authorize('delete', $dummy);
$dummy->forceDelete();
return $this->respondWithSuccess(__('admin::crud.response_deleted', ['resource' => __('models/dummies.singular')]));
}
/**
* Remove the specified dummy from storage.
*
* @param Dummy $dummy
* @param Request $request
* @return \Illuminate\Http\RedirectResponse
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function restore(Dummy $dummy)
{
$this->authorize('restore', $dummy);
$dummy->restore();
return $this->respondWithSuccess(__('admin::crud.response_restored', ['resource' => __('models/dummies.singular')]));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment