UserDependentController.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\UserDependentRequest;
  4. use App\Http\Resources\UserDependentResource;
  5. use App\Services\UserDependentService;
  6. use Illuminate\Http\JsonResponse;
  7. use Illuminate\Http\Request;
  8. class UserDependentController extends Controller
  9. {
  10. public function __construct(protected UserDependentService $service) {}
  11. public function indexByUser(int $userId): JsonResponse
  12. {
  13. $items = $this->service->getAllByUser($userId);
  14. return $this->successResponse(payload: UserDependentResource::collection($items));
  15. }
  16. public function indexPaginated(Request $request): JsonResponse
  17. {
  18. $filters = $request->only(['status', 'search']);
  19. $perPage = min((int) $request->get('per_page', 10), 100);
  20. $paginator = $this->service->getAllPaginated($filters, $perPage);
  21. return $this->successResponse(payload: [
  22. 'data' => UserDependentResource::collection($paginator->items()),
  23. 'total' => $paginator->total(),
  24. 'from' => $paginator->firstItem() ?? 0,
  25. 'to' => $paginator->lastItem() ?? 0,
  26. ]);
  27. }
  28. public function store(UserDependentRequest $request): JsonResponse
  29. {
  30. $item = $this->service->create($request->validated());
  31. return $this->successResponse(
  32. payload: new UserDependentResource($item),
  33. message: __('messages.created'),
  34. code: 201,
  35. );
  36. }
  37. public function show(int $id): JsonResponse
  38. {
  39. $item = $this->service->findById($id);
  40. return $this->successResponse(payload: new UserDependentResource($item));
  41. }
  42. public function update(UserDependentRequest $request, int $id): JsonResponse
  43. {
  44. $item = $this->service->update($id, $request->validated());
  45. return $this->successResponse(
  46. payload: new UserDependentResource($item),
  47. message: __('messages.updated'),
  48. );
  49. }
  50. public function destroy(int $id): JsonResponse
  51. {
  52. $this->service->delete($id);
  53. return $this->successResponse(message: __('messages.deleted'), code: 204);
  54. }
  55. public function approve(int $id): JsonResponse
  56. {
  57. $item = $this->service->approve($id);
  58. if (!$item) {
  59. return $this->errorResponse(message: __('messages.not_found'), code: 404);
  60. }
  61. return $this->successResponse(payload: new UserDependentResource($item), message: __('messages.updated'));
  62. }
  63. public function refuse(int $id): JsonResponse
  64. {
  65. $item = $this->service->refuse($id);
  66. if (!$item) {
  67. return $this->errorResponse(message: __('messages.not_found'), code: 404);
  68. }
  69. return $this->successResponse(payload: new UserDependentResource($item), message: __('messages.updated'));
  70. }
  71. }