TreasuryAccountController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Controllers\Concerns\ResolvesActiveUnit;
  4. use App\Http\Requests\TreasuryAccountRequest;
  5. use App\Http\Resources\TreasuryAccountResource;
  6. use App\Services\TreasuryAccountService;
  7. use Illuminate\Http\JsonResponse;
  8. use Illuminate\Http\Request;
  9. class TreasuryAccountController extends Controller
  10. {
  11. use ResolvesActiveUnit;
  12. public function __construct(
  13. protected TreasuryAccountService $service,
  14. ) {}
  15. public function index(Request $request): JsonResponse
  16. {
  17. $unitId = $request->filled('unit_id') ? (int) $request->input('unit_id') : null;
  18. $items = $this->service->getAll($unitId);
  19. return $this->successResponse(payload: TreasuryAccountResource::collection($items));
  20. }
  21. public function store(TreasuryAccountRequest $request): JsonResponse
  22. {
  23. $item = $this->service->create($request->validated());
  24. return $this->successResponse(payload: new TreasuryAccountResource($item), message: __('messages.created'), code: 201);
  25. }
  26. public function show(int $id): JsonResponse
  27. {
  28. $item = $this->service->findById($id);
  29. return $this->successResponse(payload: new TreasuryAccountResource($item));
  30. }
  31. public function update(TreasuryAccountRequest $request, int $id): JsonResponse
  32. {
  33. $item = $this->service->update($id, $request->validated());
  34. return $this->successResponse(payload: new TreasuryAccountResource($item), message: __('messages.updated'));
  35. }
  36. public function destroy(int $id): JsonResponse
  37. {
  38. $this->service->delete($id);
  39. return $this->successResponse(message: __('messages.deleted'), code: 204);
  40. }
  41. // --- Unidade ativa (Franchisee) ---
  42. public function indexMe(): JsonResponse
  43. {
  44. $unitId = $this->activeUnitId();
  45. if (!$unitId) {
  46. return $this->errorResponse(message: 'Unidade não encontrada', code: 404);
  47. }
  48. return $this->successResponse(
  49. payload: TreasuryAccountResource::collection($this->service->getAll($unitId)),
  50. );
  51. }
  52. public function storeMe(TreasuryAccountRequest $request): JsonResponse
  53. {
  54. $unitId = $this->activeUnitId();
  55. if (!$unitId) {
  56. return $this->errorResponse(message: 'Unidade não encontrada', code: 404);
  57. }
  58. $data = $request->validated();
  59. $data['unit_id'] = $unitId;
  60. $item = $this->service->create($data);
  61. return $this->successResponse(payload: new TreasuryAccountResource($item), message: __('messages.created'), code: 201);
  62. }
  63. public function updateMe(TreasuryAccountRequest $request, int $id): JsonResponse
  64. {
  65. $unitId = $this->activeUnitId();
  66. if (!$unitId || !$this->service->findByIdForUnit($id, $unitId)) {
  67. return $this->errorResponse(message: 'Conta não encontrada', code: 404);
  68. }
  69. $data = $request->validated();
  70. unset($data['unit_id']);
  71. $item = $this->service->update($id, $data);
  72. return $this->successResponse(payload: new TreasuryAccountResource($item), message: __('messages.updated'));
  73. }
  74. public function destroyMe(int $id): JsonResponse
  75. {
  76. $unitId = $this->activeUnitId();
  77. if (!$unitId || !$this->service->findByIdForUnit($id, $unitId)) {
  78. return $this->errorResponse(message: 'Conta não encontrada', code: 404);
  79. }
  80. $this->service->delete($id);
  81. return $this->successResponse(message: __('messages.deleted'), code: 204);
  82. }
  83. }