ReviewController.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\ReviewRequest;
  4. use App\Http\Resources\ReviewDetailResource;
  5. use App\Http\Resources\ReviewResource;
  6. use App\Services\ReviewService;
  7. use Illuminate\Http\JsonResponse;
  8. class ReviewController extends Controller
  9. {
  10. public function __construct(
  11. private ReviewService $service
  12. ) {}
  13. public function index(): JsonResponse
  14. {
  15. $reviews = $this->service->getAll();
  16. return $this->successResponse(
  17. payload: ReviewResource::collection($reviews),
  18. );
  19. }
  20. public function indexBySchedule(int $scheduleId): JsonResponse
  21. {
  22. $reviews = $this->service->getByScheduleId($scheduleId);
  23. return $this->successResponse(
  24. payload: ReviewResource::collection($reviews),
  25. );
  26. }
  27. public function indexByOrigin(string $origin, int $originId): JsonResponse
  28. {
  29. $reviews = $this->service->getByOrigin($origin, $originId);
  30. return $this->successResponse(
  31. payload: ReviewResource::collection($reviews),
  32. );
  33. }
  34. public function clientSent(int $clientId): JsonResponse
  35. {
  36. $reviews = $this->service->getByClientSent($clientId);
  37. return $this->successResponse(
  38. payload: ReviewDetailResource::collection($reviews),
  39. );
  40. }
  41. public function clientReceived(int $clientId): JsonResponse
  42. {
  43. $reviews = $this->service->getByClientReceived($clientId);
  44. return $this->successResponse(
  45. payload: ReviewDetailResource::collection($reviews),
  46. );
  47. }
  48. public function providerSent(int $providerId): JsonResponse
  49. {
  50. $reviews = $this->service->getByProviderSent($providerId);
  51. return $this->successResponse(
  52. payload: ReviewDetailResource::collection($reviews),
  53. );
  54. }
  55. public function providerReceived(int $providerId): JsonResponse
  56. {
  57. $reviews = $this->service->getByProviderReceived($providerId);
  58. return $this->successResponse(
  59. payload: ReviewDetailResource::collection($reviews),
  60. );
  61. }
  62. public function store(ReviewRequest $request): JsonResponse
  63. {
  64. $review = $this->service->create($request->validated());
  65. return $this->successResponse(
  66. payload: new ReviewResource($review),
  67. message: __('messages.created'),
  68. code: 201,
  69. );
  70. }
  71. public function update(ReviewRequest $request, int $id): JsonResponse
  72. {
  73. $review = $this->service->update($id, $request->validated());
  74. return $this->successResponse(
  75. payload: new ReviewResource($review),
  76. message: __('messages.updated'),
  77. );
  78. }
  79. public function destroy(int $id): JsonResponse
  80. {
  81. $this->service->delete($id);
  82. return $this->successResponse(
  83. message: __('messages.deleted'),
  84. code: 204,
  85. );
  86. }
  87. }