UnitPartnerController.php 3.7 KB

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