ProviderBlockedDayController.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\ProviderBlockedDayRequest;
  4. use App\Http\Resources\ProviderBlockedDayResource;
  5. use App\Services\ProviderBlockedDayService;
  6. use Illuminate\Http\JsonResponse;
  7. use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
  8. use Illuminate\Support\Facades\Log;
  9. class ProviderBlockedDayController extends Controller
  10. {
  11. public function __construct(
  12. private readonly ProviderBlockedDayService $service
  13. ) {}
  14. public function index(int $providerId): JsonResponse
  15. {
  16. $blockedDays = $this->service->getByProvider($providerId);
  17. return $this->successResponse(
  18. payload: ProviderBlockedDayResource::collection($blockedDays),
  19. );
  20. }
  21. public function show(int $id): JsonResponse
  22. {
  23. $blockedDay = $this->service->findById($id);
  24. abort_if(!$blockedDay, 404);
  25. return $this->successResponse(
  26. payload: new ProviderBlockedDayResource($blockedDay),
  27. );
  28. }
  29. public function store(ProviderBlockedDayRequest $request): JsonResponse
  30. {
  31. $blockedDay = $this->service->create($request->validated());
  32. return $this->successResponse(
  33. payload: new ProviderBlockedDayResource($blockedDay),
  34. message: __("messages.created"),
  35. code: 201,
  36. );
  37. }
  38. public function update(ProviderBlockedDayRequest $request, int $id): JsonResponse
  39. {
  40. $blockedDay = $this->service->findById($id);
  41. $blockedDay = $this->service->update($blockedDay, $request->validated());
  42. return $this->successResponse(
  43. payload: new ProviderBlockedDayResource($blockedDay),
  44. message: __("messages.updated"),
  45. );
  46. }
  47. public function destroy(int $id): JsonResponse
  48. {
  49. $blockedDay = $this->service->findById($id);
  50. abort_if(!$blockedDay, 404);
  51. $this->service->delete($blockedDay);
  52. return $this->successResponse(
  53. message: __("messages.deleted"),
  54. code: 204,
  55. );
  56. }
  57. }