ReviewController.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\ReviewRequest;
  4. use App\Http\Resources\ReviewResource;
  5. use App\Services\ReviewService;
  6. use Illuminate\Http\JsonResponse;
  7. class ReviewController extends Controller
  8. {
  9. public function __construct(
  10. private ReviewService $service
  11. ) {}
  12. public function index(): JsonResponse
  13. {
  14. $reviews = $this->service->getAll();
  15. return $this->successResponse(
  16. payload: ReviewResource::collection($reviews),
  17. );
  18. }
  19. public function indexBySchedule(int $scheduleId): JsonResponse
  20. {
  21. $reviews = $this->service->getByScheduleId($scheduleId);
  22. return $this->successResponse(
  23. payload: ReviewResource::collection($reviews),
  24. );
  25. }
  26. public function indexByOrigin(string $origin, int $originId): JsonResponse
  27. {
  28. $reviews = $this->service->getByOrigin($origin, $originId);
  29. return $this->successResponse(
  30. payload: ReviewResource::collection($reviews),
  31. );
  32. }
  33. public function store(ReviewRequest $request): JsonResponse
  34. {
  35. $review = $this->service->create($request->validated());
  36. return $this->successResponse(
  37. payload: new ReviewResource($review),
  38. message: __('messages.created'),
  39. code: 201,
  40. );
  41. }
  42. public function update(ReviewRequest $request, int $id): JsonResponse
  43. {
  44. $review = $this->service->update($id, $request->validated());
  45. return $this->successResponse(
  46. payload: new ReviewResource($review),
  47. message: __('messages.updated'),
  48. );
  49. }
  50. public function destroy(int $id): JsonResponse
  51. {
  52. $this->service->delete($id);
  53. return $this->successResponse(
  54. message: __('messages.deleted'),
  55. code: 204,
  56. );
  57. }
  58. }