UnitController.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\UnitRequest;
  4. use App\Http\Resources\UnitResource;
  5. use App\Services\UnitService;
  6. use Illuminate\Http\JsonResponse;
  7. use Illuminate\Support\Facades\Auth;
  8. class UnitController extends Controller
  9. {
  10. public function __construct(
  11. protected UnitService $service,
  12. ) {}
  13. public function index(): JsonResponse
  14. {
  15. $items = $this->service->getAll();
  16. return $this->successResponse(payload: UnitResource::collection($items));
  17. }
  18. public function store(UnitRequest $request): JsonResponse
  19. {
  20. $item = $this->service->create($request->validated());
  21. return $this->successResponse(payload: new UnitResource($item), message: __('messages.created'), code: 201);
  22. }
  23. public function show(int $id): JsonResponse
  24. {
  25. $item = $this->service->findById($id);
  26. return $this->successResponse(payload: new UnitResource($item));
  27. }
  28. public function update(UnitRequest $request, int $id): JsonResponse
  29. {
  30. $item = $this->service->update($id, $request->validated());
  31. return $this->successResponse(payload: new UnitResource($item), message: __('messages.updated'));
  32. }
  33. public function destroy(int $id): JsonResponse
  34. {
  35. $this->service->delete($id);
  36. return $this->successResponse(message: __('messages.deleted'), code: 204);
  37. }
  38. //
  39. public function showMe(): JsonResponse
  40. {
  41. $user = Auth::user()->load('units');
  42. $unit = $user->units->first();
  43. if (!$unit) {
  44. return $this->errorResponse(message: 'Unidade não encontrada', code: 404);
  45. }
  46. $item = $this->service->findById($unit->id);
  47. return $this->successResponse(payload: new UnitResource($item));
  48. }
  49. public function updateMe(UnitRequest $request): JsonResponse
  50. {
  51. $user = Auth::user()->load('units');
  52. $unit = $user->units->first();
  53. if (!$unit) {
  54. return $this->errorResponse(message: 'Unidade não encontrada', code: 404);
  55. }
  56. $item = $this->service->update($unit->id, $request->validated());
  57. return $this->successResponse(payload: new UnitResource($item), message: __('messages.updated'));
  58. }
  59. //
  60. public function selectList(): JsonResponse
  61. {
  62. $items = $this->service->getSelectList();
  63. return $this->successResponse(payload: $items);
  64. }
  65. }