bajapro/Penilaian-Esai/app/Http/Controllers/API/RoleAPIController.php
2025-06-07 16:18:13 +07:00

132 lines
2.9 KiB
PHP

<?php
namespace App\Http\Controllers\API;
use App\Http\Requests\API\CreateRoleAPIRequest;
use App\Http\Requests\API\UpdateRoleAPIRequest;
use App\Models\Role;
use App\Repositories\RoleRepository;
use Illuminate\Http\Request;
use App\Http\Controllers\AppBaseController;
use Response;
/**
* Class RoleController
* @package App\Http\Controllers\API
*/
class RoleAPIController extends AppBaseController
{
/** @var RoleRepository */
private $roleRepository;
public function __construct(RoleRepository $roleRepo)
{
$this->roleRepository = $roleRepo;
}
/**
* Display a listing of the Role.
* GET|HEAD /roles
*
* @param Request $request
* @return Response
*/
public function index(Request $request)
{
$roles = $this->roleRepository->all(
$request->except(['skip', 'limit']),
$request->get('skip'),
$request->get('limit')
);
return $this->sendResponse($roles->toArray(), 'Roles retrieved successfully');
}
/**
* Store a newly created Role in storage.
* POST /roles
*
* @param CreateRoleAPIRequest $request
*
* @return Response
*/
public function store(CreateRoleAPIRequest $request)
{
$input = $request->all();
$role = $this->roleRepository->create($input);
return $this->sendResponse($role->toArray(), 'Role saved successfully');
}
/**
* Display the specified Role.
* GET|HEAD /roles/{id}
*
* @param int $id
*
* @return Response
*/
public function show($id)
{
/** @var Role $role */
$role = $this->roleRepository->find($id);
if (empty($role)) {
return $this->sendError('Role not found');
}
return $this->sendResponse($role->toArray(), 'Role retrieved successfully');
}
/**
* Update the specified Role in storage.
* PUT/PATCH /roles/{id}
*
* @param int $id
* @param UpdateRoleAPIRequest $request
*
* @return Response
*/
public function update($id, UpdateRoleAPIRequest $request)
{
$input = $request->all();
/** @var Role $role */
$role = $this->roleRepository->find($id);
if (empty($role)) {
return $this->sendError('Role not found');
}
$role = $this->roleRepository->update($input, $id);
return $this->sendResponse($role->toArray(), 'Role updated successfully');
}
/**
* Remove the specified Role from storage.
* DELETE /roles/{id}
*
* @param int $id
*
* @throws \Exception
*
* @return Response
*/
public function destroy($id)
{
/** @var Role $role */
$role = $this->roleRepository->find($id);
if (empty($role)) {
return $this->sendError('Role not found');
}
$role->delete();
return $this->sendSuccess('Role deleted successfully');
}
}