ReviewController.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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 store(ReviewRequest $request): JsonResponse
  21. {
  22. $review = $this->service->create($request->validated());
  23. return $this->successResponse(
  24. payload: new ReviewResource($review),
  25. message: __('messages.created'),
  26. code: 201,
  27. );
  28. }
  29. public function update(ReviewRequest $request, int $id): JsonResponse
  30. {
  31. $review = $this->service->update($id, $request->validated());
  32. return $this->successResponse(
  33. payload: new ReviewResource($review),
  34. message: __('messages.updated'),
  35. );
  36. }
  37. public function destroy(int $id): JsonResponse
  38. {
  39. $this->service->delete($id);
  40. return $this->successResponse(
  41. message: __('messages.deleted'),
  42. code: 204,
  43. );
  44. }
  45. //
  46. public function indexByOrigin(string $origin, int $originId): JsonResponse
  47. {
  48. $reviews = $this->service->getByOrigin($origin, $originId);
  49. return $this->successResponse(
  50. payload: ReviewResource::collection($reviews),
  51. );
  52. }
  53. public function indexBySchedule(int $scheduleId): JsonResponse
  54. {
  55. $reviews = $this->service->getByScheduleId($scheduleId);
  56. return $this->successResponse(
  57. payload: ReviewResource::collection($reviews),
  58. );
  59. }
  60. public function clientReceived(int $clientId): JsonResponse
  61. {
  62. $reviews = $this->service->getByClientReceived($clientId);
  63. return $this->successResponse(
  64. payload: ReviewDetailResource::collection($reviews),
  65. );
  66. }
  67. public function clientSent(int $clientId): JsonResponse
  68. {
  69. $reviews = $this->service->getByClientSent($clientId);
  70. return $this->successResponse(
  71. payload: ReviewDetailResource::collection($reviews),
  72. );
  73. }
  74. public function providerReceived(int $providerId): JsonResponse
  75. {
  76. $reviews = $this->service->getByProviderReceived($providerId);
  77. return $this->successResponse(
  78. payload: ReviewDetailResource::collection($reviews),
  79. );
  80. }
  81. public function providerSent(int $providerId): JsonResponse
  82. {
  83. $reviews = $this->service->getByProviderSent($providerId);
  84. return $this->successResponse(
  85. payload: ReviewDetailResource::collection($reviews),
  86. );
  87. }
  88. }