DashboardController.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Resources\DashboardClienteResource;
  4. use App\Http\Resources\DashboardPrestadorResource;
  5. use App\Services\DashboardService;
  6. use Illuminate\Auth\Access\AuthorizationException;
  7. use Illuminate\Database\Eloquent\ModelNotFoundException;
  8. use Illuminate\Http\JsonResponse;
  9. class DashboardController extends Controller
  10. {
  11. public function __construct(private readonly DashboardService $service) {}
  12. public function dadosDashboardCliente(): JsonResponse
  13. {
  14. try {
  15. $dados = $this->service->dadosDashboardCliente();
  16. return $this->successResponse(
  17. payload: new DashboardClienteResource($dados),
  18. );
  19. } catch (AuthorizationException $e) {
  20. return $this->errorResponse(message: $e->getMessage(), code: 403);
  21. } catch (ModelNotFoundException) {
  22. return $this->errorResponse(message: __('messages.client_not_found'), code: 404);
  23. } catch (\Exception $e) {
  24. return $this->errorResponse(message: __('messages.error_fetching_data'), code: 500, exception: $e);
  25. }
  26. }
  27. public function dadosPedidosCliente(): JsonResponse
  28. {
  29. try {
  30. $dados = $this->service->dadosPedidosCliente();
  31. return $this->successResponse(payload: $dados);
  32. } catch (AuthorizationException $e) {
  33. return $this->errorResponse(message: $e->getMessage(), code: 403);
  34. } catch (ModelNotFoundException) {
  35. return $this->errorResponse(message: __('messages.client_not_found'), code: 404);
  36. } catch (\Exception $e) {
  37. return $this->errorResponse(message: __('messages.error_fetching_data'), code: 500, exception: $e);
  38. }
  39. }
  40. public function dadosDashboardPrestador(): JsonResponse
  41. {
  42. try {
  43. $dados = $this->service->dadosDashboardPrestador();
  44. return $this->successResponse(
  45. payload: new DashboardPrestadorResource($dados),
  46. );
  47. } catch (AuthorizationException $e) {
  48. return $this->errorResponse(message: $e->getMessage(), code: 403);
  49. } catch (ModelNotFoundException) {
  50. return $this->errorResponse(message: __('messages.provider_not_found'), code: 404);
  51. } catch (\Exception $e) {
  52. return $this->errorResponse(message: __('messages.error_fetching_data'), code: 500, exception: $e);
  53. }
  54. }
  55. public function scheduleClienteDetails(int $id): JsonResponse
  56. {
  57. try {
  58. $dados = $this->service->getScheduleClienteDetails($id);
  59. return $this->successResponse(payload: $dados);
  60. } catch (\Exception $e) {
  61. return $this->errorResponse(message: __('messages.error_fetching_data'), code: 500, exception: $e);
  62. }
  63. }
  64. }