UnitHistoryController.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Controllers\Concerns\ResolvesActiveUnit;
  4. use App\Services\UnitHistoryService;
  5. use App\Http\Requests\UnitHistoryRequest;
  6. use App\Http\Resources\UnitHistoryResource;
  7. use Illuminate\Http\JsonResponse;
  8. use Illuminate\Http\Request;
  9. class UnitHistoryController extends Controller
  10. {
  11. use ResolvesActiveUnit;
  12. public function __construct(
  13. protected UnitHistoryService $service,
  14. ) {}
  15. public function index(Request $request): JsonResponse
  16. {
  17. $items = $this->service->getByUnitId($request->integer('unit_id'));
  18. return $this->successResponse(payload: UnitHistoryResource::collection($items));
  19. }
  20. public function store(UnitHistoryRequest $request): JsonResponse
  21. {
  22. $item = $this->service->create($request->validated());
  23. return $this->successResponse(payload: new UnitHistoryResource($item), message: __('messages.created'), code: 201);
  24. }
  25. public function show(int $id): JsonResponse
  26. {
  27. $item = $this->service->findById($id);
  28. return $this->successResponse(payload: new UnitHistoryResource($item));
  29. }
  30. public function update(UnitHistoryRequest $request, int $id): JsonResponse
  31. {
  32. $item = $this->service->update($id, $request->validated());
  33. return $this->successResponse(payload: new UnitHistoryResource($item), message: __('messages.updated'));
  34. }
  35. public function destroy(int $id): JsonResponse
  36. {
  37. $this->service->delete($id);
  38. return $this->successResponse(message: __('messages.deleted'), code: 204);
  39. }
  40. //
  41. public function indexMe(): JsonResponse
  42. {
  43. $unitId = $this->currentUnitId();
  44. if (!$unitId) {
  45. return $this->errorResponse(message: 'Unidade não encontrada', code: 404);
  46. }
  47. $items = $this->service->getVisibleByUnitId($unitId);
  48. return $this->successResponse(payload: UnitHistoryResource::collection($items));
  49. }
  50. //
  51. private function currentUnitId(): ?int
  52. {
  53. return $this->activeUnitId();
  54. }
  55. }