FinancialPlanAccountController.php 3.6 KB

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