PartnerAgreementServiceController.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\PartnerAgreementServiceRequest;
  4. use App\Http\Requests\UploadMediaRequest;
  5. use App\Http\Resources\MediaResource;
  6. use App\Http\Resources\PartnerAgreementServiceResource;
  7. use App\Services\MediaService;
  8. use App\Services\PartnerAgreementServiceService;
  9. use Illuminate\Http\JsonResponse;
  10. class PartnerAgreementServiceController extends Controller
  11. {
  12. public function __construct(
  13. protected PartnerAgreementServiceService $service,
  14. protected MediaService $mediaService,
  15. ) {}
  16. public function indexByPartner(int $partnerAgreementId): JsonResponse
  17. {
  18. $items = $this->service->getAllByPartner($partnerAgreementId);
  19. return $this->successResponse(payload: PartnerAgreementServiceResource::collection($items));
  20. }
  21. public function store(PartnerAgreementServiceRequest $request): JsonResponse
  22. {
  23. $item = $this->service->create($request->validated());
  24. return $this->successResponse(
  25. payload: new PartnerAgreementServiceResource($item),
  26. message: __('messages.created'),
  27. code: 201,
  28. );
  29. }
  30. public function show(int $id): JsonResponse
  31. {
  32. $item = $this->service->findById($id);
  33. return $this->successResponse(payload: new PartnerAgreementServiceResource($item));
  34. }
  35. public function update(PartnerAgreementServiceRequest $request, int $id): JsonResponse
  36. {
  37. $item = $this->service->update($id, $request->validated());
  38. return $this->successResponse(
  39. payload: new PartnerAgreementServiceResource($item),
  40. message: __('messages.updated'),
  41. );
  42. }
  43. public function destroy(int $id): JsonResponse
  44. {
  45. $this->service->delete($id);
  46. return $this->successResponse(message: __('messages.deleted'), code: 204);
  47. }
  48. public function uploadMedia(UploadMediaRequest $request, int $id): JsonResponse
  49. {
  50. $file = $request->file('file');
  51. $mediaType = str_starts_with($file->getMimeType(), 'image/') ? 'imagem' : 'documento';
  52. $media = $this->mediaService->upload($file, 'partner_agreement_service', $id, $mediaType);
  53. return $this->successResponse(payload: new MediaResource($media), code: 201);
  54. }
  55. public function deleteMedia(int $id, int $mediaId): JsonResponse
  56. {
  57. $this->mediaService->delete($mediaId);
  58. return $this->successResponse(message: __('messages.deleted'), code: 204);
  59. }
  60. }