AppointmentController.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\AppointmentRequest;
  4. use App\Http\Resources\AppointmentResource;
  5. use App\Services\AppointmentService;
  6. use Illuminate\Http\JsonResponse;
  7. use Illuminate\Support\Facades\Auth;
  8. class AppointmentController extends Controller
  9. {
  10. public function __construct(protected AppointmentService $service) {}
  11. public function index(): JsonResponse
  12. {
  13. $items = $this->service->getAll();
  14. return $this->successResponse(payload: AppointmentResource::collection($items));
  15. }
  16. public function myAppointments(): JsonResponse
  17. {
  18. $items = $this->service->getAllByUser(Auth::id());
  19. return $this->successResponse(payload: AppointmentResource::collection($items));
  20. }
  21. public function store(AppointmentRequest $request): JsonResponse
  22. {
  23. $item = $this->service->create($request->validated());
  24. return $this->successResponse(
  25. payload: new AppointmentResource($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 AppointmentResource($item));
  34. }
  35. public function update(AppointmentRequest $request, int $id): JsonResponse
  36. {
  37. $item = $this->service->update($id, $request->validated());
  38. return $this->successResponse(
  39. payload: new AppointmentResource($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. }