withRouting( web: __DIR__.'/../routes/web.php', api: __DIR__.'/../routes/api.php', commands: __DIR__.'/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { $middleware->append(ForceJsonResponse::class); $middleware->append(StartSession::class); $middleware->append(HandleCors::class); }) ->withExceptions(function (Exceptions $exceptions) { $exceptions->shouldRenderJsonWhen(function (Request $request, Throwable $e) { if ($request->is('api/*')) { return true; } return $request->expectsJson(); }); /** @var OutputService $outputService */ $outputService = resolve(OutputService::class); $exceptions->render(fn (ValidationException $e, Request $request) => $outputService ->response(false, null, [$e->getMessage()], 404) ); $exceptions->render(fn (NotFoundHttpException $e, Request $request) => response()->json( $outputService->response(false, null, ['MODEL_NOT_FOUND']), 404 )); $exceptions->render(fn (AccessDeniedHttpException $e, Request $request) => response()->json( $outputService->response(false, null, [$e->getMessage()]), 403 )); }) ->withCommands([ GenerateScheduleCommand::class, ]) ->create();