DashboardController.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. use Illuminate\Support\Facades\Log;
  10. class DashboardController extends Controller
  11. {
  12. public function __construct(private readonly DashboardService $service) {}
  13. public function dadosDashboardCliente(): JsonResponse
  14. {
  15. try {
  16. $dados = $this->service->dadosDashboardCliente();
  17. return $this->successResponse(
  18. payload: new DashboardClienteResource($dados),
  19. );
  20. } catch (AuthorizationException $e) {
  21. return $this->errorResponse(message: $e->getMessage(), code: 403);
  22. } catch (ModelNotFoundException) {
  23. return $this->errorResponse(message: 'Cliente não encontrado.', code: 404);
  24. } catch (\Exception $e) {
  25. Log::error('Erro ao obter dados do dashboard do cliente: '.$e->getMessage());
  26. return $this->errorResponse(message: __('messages.error_fetching_data'), code: 500);
  27. }
  28. }
  29. public function scheduleClienteDetails(int $id): JsonResponse
  30. {
  31. try {
  32. $dados = $this->service->getScheduleClienteDetails($id);
  33. return $this->successResponse(payload: $dados);
  34. } catch (\Exception $e) {
  35. Log::error('Erro ao obter detalhes do schedule do cliente: '.$e->getMessage());
  36. return $this->errorResponse(message: __('messages.error_fetching_data'), code: 500);
  37. }
  38. }
  39. public function dadosDashboardPrestador(): JsonResponse
  40. {
  41. try {
  42. $dados = $this->service->dadosDashboardPrestador();
  43. return $this->successResponse(
  44. payload: new DashboardPrestadorResource($dados),
  45. );
  46. } catch (AuthorizationException $e) {
  47. return $this->errorResponse(message: $e->getMessage(), code: 403);
  48. } catch (ModelNotFoundException) {
  49. return $this->errorResponse(message: 'Prestador não encontrado.', code: 404);
  50. } catch (\Exception $e) {
  51. Log::error('Erro ao obter dados do dashboard do prestador: '.$e->getMessage());
  52. return $this->errorResponse(message: __('messages.error_fetching_data'), code: 500);
  53. }
  54. }
  55. }