Skip to content

Instantly share code, notes, and snippets.

@thewebartisan7
Created October 16, 2020 06:34
Show Gist options
  • Save thewebartisan7/1e1302e851088e9830b8b4ea8869c950 to your computer and use it in GitHub Desktop.
Save thewebartisan7/1e1302e851088e9830b8b4ea8869c950 to your computer and use it in GitHub Desktop.
Generated API Controller
<?php
namespace App\Api\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Spatie\QueryBuilder\QueryBuilder;
use App\Api\Http\Resources\User as UserResource;
use App\Api\Http\Resources\UserCollection;
use App\Api\Http\Requests\UserCreateRequest;
use App\Api\Http\Requests\UserUpdateRequest;
use App\Api\Http\Requests\UserUpdateAccountRequest;
class UserController extends BaseController
{
/**
* @var User $user
*/
protected $user;
/**
* Controller constructor
*
* @param User $user
*/
public function __construct(User $user)
{
$this->user = $user;
}
/**
* Display a listing of the users.
*
* @return UserCollection
*/
public function index()
{
/** @var User $users */
$users = QueryBuilder::for($this->user->query())
->allowedFilters($this->user::$filterableBy)
->defaultSort($this->user::getOrderByColumnName())
->allowedSorts($this->user::$sortableBy)
->jsonPaginate();
return new UserCollection($users);
}
/**
* Display the specified user.
*
* @param User $user
*
* @return UserResource
*/
public function show(User $user)
{
return new UserResource($user);
}
/**
* Store a newly created User in storage.
*
* @param UserCreateRequest $request
*
* @return UserResource
*/
public function store(UserCreateRequest $request)
{
/** @var User $user */
$user = $this->user->create($request->validated());
return new UserResource($user);
}
/**
* Update the specified user in storage.
*
* @param User $user
* @param UserUpdateRequest $request
*
* @return UserResource
*/
public function update(User $user, UserUpdateRequest $request)
{
$validated = $request->validated();
$user->fill($validated)->save();
return new UserResource($user);
}
/**
* Update the specified user in storage.
*
* @param User $user
* @param UserUpdateAccountRequest $request
*
* @return UserResource
*/
public function updateAccount(User $user, UserUpdateAccountRequest $request)
{
$validated = $request->validated();
if(empty($validated['password'])) {
unset($validated['password']);
}
$user->fill($validated)->save();
return new UserResource($user);
}
/**
* Trash the specified User.
*
* @param User $user
*
* @return UserResource
*/
public function trash(User $user)
{
$user->delete();
return new UserResource($user);
}
/**
* Remove the specified User from storage.
*
* @param User $user
*
* @return UserResource
*/
public function destroy(User $user)
{
$user->forceDelete();
return new UserResource($user);
}
/**
* Restore trashed user.
*
* @param User $user
*
* @return UserResource
*/
public function restore(User $user)
{
$user->restore();
return new UserResource($user);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment