Controller.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\JsonResponse;
  4. use Illuminate\Support\Facades\Log;
  5. use Illuminate\Support\Facades\Route;
  6. use Throwable;
  7. abstract class Controller
  8. {
  9. public function successResponse($payload = null, ?string $message = null, int $code = 200): JsonResponse
  10. {
  11. return response()->json(data: ['payload' => $payload, 'message' => $message], status: $code);
  12. }
  13. public function errorResponse(
  14. ?string $message = null,
  15. int $code = 404,
  16. ?Throwable $exception = null,
  17. ): JsonResponse {
  18. if ($code >= 500) {
  19. $route = Route::current();
  20. Log::withContext([
  21. 'route' => $route?->uri(),
  22. 'route_name' => $route?->getName(),
  23. 'controller' => $route?->getActionName(),
  24. 'method' => request()->method(),
  25. ]);
  26. if ($exception) {
  27. report($exception);
  28. } else {
  29. Log::error('Resposta de erro interno retornada pela API.', [
  30. 'message' => $message,
  31. 'code' => $code,
  32. ]);
  33. }
  34. }
  35. return response()->json(data: ['message' => $message], status: $code);
  36. }
  37. }