diff --git a/.github/workflows/psalm.yml b/.github/workflows/psalm.yml deleted file mode 100644 index e48b24f..0000000 --- a/.github/workflows/psalm.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: Psalm - -on: - push: - paths: - - '**.php' - - 'psalm.xml.dist' - -jobs: - psalm: - name: psalm - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.0' - extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick - coverage: none - - - name: Cache composer dependencies - uses: actions/cache@v2 - with: - path: vendor - key: composer-${{ hashFiles('composer.lock') }} - - - name: Run composer install - run: composer install -n --prefer-dist - - - name: Run psalm - run: ./vendor/bin/psalm --output-format=github diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml deleted file mode 100644 index ca3d2a7..0000000 --- a/.github/workflows/run-tests.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: run-tests - -on: - push: - branches: [master] - pull_request: - branches: [master] - -jobs: - test: - runs-on: ${{ matrix.os }} - strategy: - fail-fast: true - matrix: - os: [ubuntu-latest, windows-latest] - php: [8.0] - laravel: [8.*] - stability: [prefer-lowest, prefer-stable] - include: - - laravel: 8.* - testbench: ^6.6 - - name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }} - - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo - coverage: none - - - name: Setup problem matchers - run: | - echo "::add-matcher::${{ runner.tool_cache }}/php.json" - echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - - - name: Install dependencies - run: | - composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update - composer update --${{ matrix.stability }} --prefer-dist --no-interaction - - - name: Execute tests - run: vendor/bin/phpunit diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache index f725472..2a93acd 100644 --- a/.php-cs-fixer.cache +++ b/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.0.11","version":"3.2.1","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"single_trait_insert_per_statement":true},"hashes":{"src\/Commands\/KoboLinkCommand.php":2331085645,"src\/KoboLinkServiceProvider.php":2870030101,"src\/Observers\/TeamObserver.php":4173604539,"src\/Observers\/XlsformObserver.php":1850846029,"src\/Http\/Requests\/XlsformRequest.php":3203147297,"src\/Http\/Controllers\/Admin\/XlsformCrudController.php":3068731921,"src\/Http\/Controllers\/Admin\/TeamXlsformCrudController.php":3167446341,"src\/Http\/Controllers\/Admin\/SubmissionCrudController.php":2251890448,"src\/Events\/KoboArchiveRequestReturnedError.php":2324967477,"src\/Events\/KoboGetDataReturnedSuccess.php":1524511544,"src\/Events\/KoboDeploymentReturnedError.php":2488229468,"src\/Events\/KoboGetDataReturnedError.php":3492815138,"src\/Events\/KoboUploadReturnedError.php":3389205587,"src\/Events\/KoboDeploymentReturnedSuccess.php":2130135336,"src\/Events\/NewDataVariableSpotted.php":2946529935,"src\/Events\/KoboUploadReturnedSuccess.php":3506290957,"src\/Events\/KoboArchiveRequestReturnedSuccess.php":1933560997,"src\/Jobs\/CheckKoboUpload.php":2086508028,"src\/Jobs\/ProcessSubmission.php":2628266776,"src\/Jobs\/MediaFiles\/UpdateFormCsvFiles.php":906265899,"src\/Jobs\/MediaFiles\/UploadCsvMediaFileAttachmentsToKoboForm.php":3240773836,"src\/Jobs\/MediaFiles\/UploadMediaFileAttachmentsToKoboForm.php":341319785,"src\/Jobs\/MediaFiles\/GenerateCsvLookupFiles.php":2045518162,"src\/Jobs\/MediaFiles\/UploadFileToKoboForm.php":1758870208,"src\/Jobs\/DeployFormToKobo.php":2228093810,"src\/Jobs\/ShareFormsWithExistingUsers.php":2149157094,"src\/Jobs\/ImportAttachmentFromKobo.php":345481195,"src\/Jobs\/ArchiveKoboForm.php":1197960119,"src\/Jobs\/UploadXlsFormToKobo.php":2791165276,"src\/Jobs\/DeploymentSuccessMessage.php":2760640803,"src\/Jobs\/SetKoboFormToActive.php":2601000659,"src\/Jobs\/GetDataFromKobo.php":4003484763,"src\/Jobs\/ShareFormWithUsers.php":635569902,"src\/Jobs\/UpdateFormNameOnKobo.php":502117614,"src\/Models\/Xlsform.php":1804763281,"src\/Models\/TeamXlsform.php":584788750,"src\/Models\/Submission.php":1637855293,"src\/Models\/Datamap.php":1381264911,"src\/Models\/Traits\/HasUploadFields.php":3460280102,"src\/Exports\/FormSubmissionsExport.php":2310350657,"src\/Exports\/SqlViewExport.php":4133777330,"src\/KoboLink.php":1625728582,"src\/KoboLinkFacade.php":717468166}} \ No newline at end of file +{"php":"8.0.11","version":"3.2.1","indent":" ","lineEnding":"\n","rules":{"blank_line_after_namespace":true,"braces":true,"class_definition":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline","keep_multiple_spaces_after_comma":true},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"visibility_required":{"elements":["method","property"]},"encoding":true,"full_opening_tag":true,"array_syntax":{"syntax":"short"},"ordered_imports":{"sort_algorithm":"alpha"},"no_unused_imports":true,"not_operator_with_successor_space":true,"trailing_comma_in_multiline":true,"phpdoc_scalar":true,"unary_operator_spaces":true,"binary_operator_spaces":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try"]},"phpdoc_single_line_var_spacing":true,"phpdoc_var_without_name":true,"single_trait_insert_per_statement":true},"hashes":{"src\/Commands\/KoboLinkCommand.php":2331085645,"src\/KoboLinkServiceProvider.php":546274302,"src\/Observers\/TeamObserver.php":1005019983,"src\/Observers\/XlsformObserver.php":313173966,"src\/Http\/Requests\/XlsformRequest.php":3994138938,"src\/Http\/Controllers\/Admin\/XlsformCrudController.php":3129166519,"src\/Http\/Controllers\/Admin\/TeamXlsformCrudController.php":156649413,"src\/Http\/Controllers\/Admin\/SubmissionCrudController.php":1937110497,"src\/Events\/KoboArchiveRequestReturnedError.php":2475300001,"src\/Events\/KoboGetDataReturnedSuccess.php":3901385478,"src\/Events\/KoboDeploymentReturnedError.php":353121381,"src\/Events\/KoboGetDataReturnedError.php":2981268243,"src\/Events\/KoboUploadReturnedError.php":3077652517,"src\/Events\/KoboDeploymentReturnedSuccess.php":2789695322,"src\/Events\/NewDataVariableSpotted.php":3656703639,"src\/Events\/KoboUploadReturnedSuccess.php":606115655,"src\/Events\/KoboArchiveRequestReturnedSuccess.php":2230717964,"src\/Jobs\/CheckKoboUpload.php":2947475879,"src\/Jobs\/ProcessSubmission.php":3478744824,"src\/Jobs\/MediaFiles\/UpdateFormCsvFiles.php":2560138748,"src\/Jobs\/MediaFiles\/UploadCsvMediaFileAttachmentsToKoboForm.php":1690991642,"src\/Jobs\/MediaFiles\/UploadMediaFileAttachmentsToKoboForm.php":3547991310,"src\/Jobs\/MediaFiles\/GenerateCsvLookupFiles.php":2045518162,"src\/Jobs\/MediaFiles\/UploadFileToKoboForm.php":3833984214,"src\/Jobs\/DeployFormToKobo.php":3883519091,"src\/Jobs\/ShareFormsWithExistingUsers.php":1154911185,"src\/Jobs\/ImportAttachmentFromKobo.php":1864882726,"src\/Jobs\/ArchiveKoboForm.php":389141192,"src\/Jobs\/UploadXlsFormToKobo.php":857342352,"src\/Jobs\/DeploymentSuccessMessage.php":2322195503,"src\/Jobs\/SetKoboFormToActive.php":3918511442,"src\/Jobs\/GetDataFromKobo.php":433180703,"src\/Jobs\/ShareFormWithUsers.php":178188065,"src\/Jobs\/UpdateFormNameOnKobo.php":2205063369,"src\/Models\/Xlsform.php":4278550649,"src\/Models\/TeamXlsform.php":2244571443,"src\/Models\/Submission.php":1637855293,"src\/Models\/Datamap.php":386065238,"src\/Models\/Traits\/HasUploadFields.php":3460280102,"src\/Exports\/FormSubmissionsExport.php":464880722,"src\/Exports\/SqlViewExport.php":4133777330,"src\/KoboLink.php":1625728582,"src\/KoboLinkFacade.php":717468166,"src\/Services\/DatamapService.php":2444360661,"src\/Http\/Requests\/TeamRequest.php":717146594,"src\/Http\/Controllers\/Admin\/TeamCrudController.php":2342232145,"src\/Models\/Invite.php":4097477361,"src\/Models\/Traits\/HasDataMaps.php":2047546011,"src\/Models\/Team.php":2887957371,"src\/Rules\/KoboUsernameIsValid.php":2989917371}} \ No newline at end of file diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php new file mode 100644 index 0000000..a2cf1cc --- /dev/null +++ b/.phpstorm.meta.php @@ -0,0 +1,2201 @@ + + * @see https://github.com/barryvdh/laravel-ide-helper + */ + override(new \Illuminate\Contracts\Container\Container, map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\FlareClient\Flare' => \Facade\FlareClient\Flare::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\DumpRecorder\MultiDumpHandler' => \Facade\Ignition\DumpRecorder\MultiDumpHandler::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\JobRecorder\JobRecorder' => \Facade\Ignition\JobRecorder\JobRecorder::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Facade\Ignition\Support\SentReports' => \Facade\Ignition\Support\SentReports::class, + 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, + 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, + 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Telescope\Contracts\ClearableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Maatwebsite\Excel\Cache\CacheManager' => \Maatwebsite\Excel\Cache\CacheManager::class, + 'Maatwebsite\Excel\Files\Filesystem' => \Maatwebsite\Excel\Files\Filesystem::class, + 'Maatwebsite\Excel\Files\TemporaryFileFactory' => \Maatwebsite\Excel\Files\TemporaryFileFactory::class, + 'Maatwebsite\Excel\Transactions\TransactionHandler' => \Maatwebsite\Excel\Transactions\DbTransactionHandler::class, + 'Maatwebsite\Excel\Transactions\TransactionManager' => \Maatwebsite\Excel\Transactions\TransactionManager::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Spatie\Permission\Contracts\Permission' => \Spatie\Permission\Models\Permission::class, + 'Spatie\Permission\Contracts\Role' => \Spatie\Permission\Models\Role::class, + 'Spatie\Permission\PermissionRegistrar' => \Spatie\Permission\PermissionRegistrar::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'alerts' => \Prologue\Alerts\AlertsMessageBag::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.cast.make' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.component.make' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.prune' => \Illuminate\Database\Console\PruneCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.make:solution-provider' => \Facade\Ignition\Commands\SolutionProviderMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.batches-table' => \Illuminate\Queue\Console\BatchesTableCommand::class, + 'command.queue.clear' => \Illuminate\Queue\Console\ClearCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.monitor' => \Illuminate\Queue\Console\MonitorCommand::class, + 'command.queue.prune-batches' => \Illuminate\Queue\Console\PruneBatchesCommand::class, + 'command.queue.prune-failed-jobs' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.retry-batch' => \Illuminate\Queue\Console\RetryBatchCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.schema.dump' => \Illuminate\Database\Console\DumpCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.stub.publish' => \Illuminate\Foundation\Console\StubPublishCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'crud' => \Backpack\CRUD\app\Library\CrudPanel\CrudPanel::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'excel' => \Maatwebsite\Excel\Excel::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'gravatar' => \Creativeorange\Gravatar\Gravatar::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mail.manager' => \Illuminate\Mail\MailManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + 'widgets' => \Illuminate\Support\Collection::class, + ])); + override(\Illuminate\Container\Container::makeWith(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\FlareClient\Flare' => \Facade\FlareClient\Flare::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\DumpRecorder\MultiDumpHandler' => \Facade\Ignition\DumpRecorder\MultiDumpHandler::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\JobRecorder\JobRecorder' => \Facade\Ignition\JobRecorder\JobRecorder::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Facade\Ignition\Support\SentReports' => \Facade\Ignition\Support\SentReports::class, + 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, + 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, + 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Telescope\Contracts\ClearableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Maatwebsite\Excel\Cache\CacheManager' => \Maatwebsite\Excel\Cache\CacheManager::class, + 'Maatwebsite\Excel\Files\Filesystem' => \Maatwebsite\Excel\Files\Filesystem::class, + 'Maatwebsite\Excel\Files\TemporaryFileFactory' => \Maatwebsite\Excel\Files\TemporaryFileFactory::class, + 'Maatwebsite\Excel\Transactions\TransactionHandler' => \Maatwebsite\Excel\Transactions\DbTransactionHandler::class, + 'Maatwebsite\Excel\Transactions\TransactionManager' => \Maatwebsite\Excel\Transactions\TransactionManager::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Spatie\Permission\Contracts\Permission' => \Spatie\Permission\Models\Permission::class, + 'Spatie\Permission\Contracts\Role' => \Spatie\Permission\Models\Role::class, + 'Spatie\Permission\PermissionRegistrar' => \Spatie\Permission\PermissionRegistrar::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'alerts' => \Prologue\Alerts\AlertsMessageBag::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.cast.make' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.component.make' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.prune' => \Illuminate\Database\Console\PruneCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.make:solution-provider' => \Facade\Ignition\Commands\SolutionProviderMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.batches-table' => \Illuminate\Queue\Console\BatchesTableCommand::class, + 'command.queue.clear' => \Illuminate\Queue\Console\ClearCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.monitor' => \Illuminate\Queue\Console\MonitorCommand::class, + 'command.queue.prune-batches' => \Illuminate\Queue\Console\PruneBatchesCommand::class, + 'command.queue.prune-failed-jobs' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.retry-batch' => \Illuminate\Queue\Console\RetryBatchCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.schema.dump' => \Illuminate\Database\Console\DumpCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.stub.publish' => \Illuminate\Foundation\Console\StubPublishCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'crud' => \Backpack\CRUD\app\Library\CrudPanel\CrudPanel::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'excel' => \Maatwebsite\Excel\Excel::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'gravatar' => \Creativeorange\Gravatar\Gravatar::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mail.manager' => \Illuminate\Mail\MailManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + 'widgets' => \Illuminate\Support\Collection::class, + ])); + override(\Illuminate\Contracts\Container\Container::get(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\FlareClient\Flare' => \Facade\FlareClient\Flare::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\DumpRecorder\MultiDumpHandler' => \Facade\Ignition\DumpRecorder\MultiDumpHandler::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\JobRecorder\JobRecorder' => \Facade\Ignition\JobRecorder\JobRecorder::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Facade\Ignition\Support\SentReports' => \Facade\Ignition\Support\SentReports::class, + 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, + 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, + 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Telescope\Contracts\ClearableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Maatwebsite\Excel\Cache\CacheManager' => \Maatwebsite\Excel\Cache\CacheManager::class, + 'Maatwebsite\Excel\Files\Filesystem' => \Maatwebsite\Excel\Files\Filesystem::class, + 'Maatwebsite\Excel\Files\TemporaryFileFactory' => \Maatwebsite\Excel\Files\TemporaryFileFactory::class, + 'Maatwebsite\Excel\Transactions\TransactionHandler' => \Maatwebsite\Excel\Transactions\DbTransactionHandler::class, + 'Maatwebsite\Excel\Transactions\TransactionManager' => \Maatwebsite\Excel\Transactions\TransactionManager::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Spatie\Permission\Contracts\Permission' => \Spatie\Permission\Models\Permission::class, + 'Spatie\Permission\Contracts\Role' => \Spatie\Permission\Models\Role::class, + 'Spatie\Permission\PermissionRegistrar' => \Spatie\Permission\PermissionRegistrar::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'alerts' => \Prologue\Alerts\AlertsMessageBag::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.cast.make' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.component.make' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.prune' => \Illuminate\Database\Console\PruneCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.make:solution-provider' => \Facade\Ignition\Commands\SolutionProviderMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.batches-table' => \Illuminate\Queue\Console\BatchesTableCommand::class, + 'command.queue.clear' => \Illuminate\Queue\Console\ClearCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.monitor' => \Illuminate\Queue\Console\MonitorCommand::class, + 'command.queue.prune-batches' => \Illuminate\Queue\Console\PruneBatchesCommand::class, + 'command.queue.prune-failed-jobs' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.retry-batch' => \Illuminate\Queue\Console\RetryBatchCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.schema.dump' => \Illuminate\Database\Console\DumpCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.stub.publish' => \Illuminate\Foundation\Console\StubPublishCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'crud' => \Backpack\CRUD\app\Library\CrudPanel\CrudPanel::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'excel' => \Maatwebsite\Excel\Excel::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'gravatar' => \Creativeorange\Gravatar\Gravatar::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mail.manager' => \Illuminate\Mail\MailManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + 'widgets' => \Illuminate\Support\Collection::class, + ])); + override(\Illuminate\Contracts\Container\Container::make(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\FlareClient\Flare' => \Facade\FlareClient\Flare::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\DumpRecorder\MultiDumpHandler' => \Facade\Ignition\DumpRecorder\MultiDumpHandler::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\JobRecorder\JobRecorder' => \Facade\Ignition\JobRecorder\JobRecorder::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Facade\Ignition\Support\SentReports' => \Facade\Ignition\Support\SentReports::class, + 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, + 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, + 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Telescope\Contracts\ClearableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Maatwebsite\Excel\Cache\CacheManager' => \Maatwebsite\Excel\Cache\CacheManager::class, + 'Maatwebsite\Excel\Files\Filesystem' => \Maatwebsite\Excel\Files\Filesystem::class, + 'Maatwebsite\Excel\Files\TemporaryFileFactory' => \Maatwebsite\Excel\Files\TemporaryFileFactory::class, + 'Maatwebsite\Excel\Transactions\TransactionHandler' => \Maatwebsite\Excel\Transactions\DbTransactionHandler::class, + 'Maatwebsite\Excel\Transactions\TransactionManager' => \Maatwebsite\Excel\Transactions\TransactionManager::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Spatie\Permission\Contracts\Permission' => \Spatie\Permission\Models\Permission::class, + 'Spatie\Permission\Contracts\Role' => \Spatie\Permission\Models\Role::class, + 'Spatie\Permission\PermissionRegistrar' => \Spatie\Permission\PermissionRegistrar::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'alerts' => \Prologue\Alerts\AlertsMessageBag::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.cast.make' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.component.make' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.prune' => \Illuminate\Database\Console\PruneCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.make:solution-provider' => \Facade\Ignition\Commands\SolutionProviderMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.batches-table' => \Illuminate\Queue\Console\BatchesTableCommand::class, + 'command.queue.clear' => \Illuminate\Queue\Console\ClearCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.monitor' => \Illuminate\Queue\Console\MonitorCommand::class, + 'command.queue.prune-batches' => \Illuminate\Queue\Console\PruneBatchesCommand::class, + 'command.queue.prune-failed-jobs' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.retry-batch' => \Illuminate\Queue\Console\RetryBatchCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.schema.dump' => \Illuminate\Database\Console\DumpCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.stub.publish' => \Illuminate\Foundation\Console\StubPublishCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'crud' => \Backpack\CRUD\app\Library\CrudPanel\CrudPanel::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'excel' => \Maatwebsite\Excel\Excel::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'gravatar' => \Creativeorange\Gravatar\Gravatar::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mail.manager' => \Illuminate\Mail\MailManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + 'widgets' => \Illuminate\Support\Collection::class, + ])); + override(\Illuminate\Contracts\Container\Container::makeWith(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\FlareClient\Flare' => \Facade\FlareClient\Flare::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\DumpRecorder\MultiDumpHandler' => \Facade\Ignition\DumpRecorder\MultiDumpHandler::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\JobRecorder\JobRecorder' => \Facade\Ignition\JobRecorder\JobRecorder::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Facade\Ignition\Support\SentReports' => \Facade\Ignition\Support\SentReports::class, + 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, + 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, + 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Telescope\Contracts\ClearableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Maatwebsite\Excel\Cache\CacheManager' => \Maatwebsite\Excel\Cache\CacheManager::class, + 'Maatwebsite\Excel\Files\Filesystem' => \Maatwebsite\Excel\Files\Filesystem::class, + 'Maatwebsite\Excel\Files\TemporaryFileFactory' => \Maatwebsite\Excel\Files\TemporaryFileFactory::class, + 'Maatwebsite\Excel\Transactions\TransactionHandler' => \Maatwebsite\Excel\Transactions\DbTransactionHandler::class, + 'Maatwebsite\Excel\Transactions\TransactionManager' => \Maatwebsite\Excel\Transactions\TransactionManager::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Spatie\Permission\Contracts\Permission' => \Spatie\Permission\Models\Permission::class, + 'Spatie\Permission\Contracts\Role' => \Spatie\Permission\Models\Role::class, + 'Spatie\Permission\PermissionRegistrar' => \Spatie\Permission\PermissionRegistrar::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'alerts' => \Prologue\Alerts\AlertsMessageBag::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.cast.make' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.component.make' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.prune' => \Illuminate\Database\Console\PruneCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.make:solution-provider' => \Facade\Ignition\Commands\SolutionProviderMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.batches-table' => \Illuminate\Queue\Console\BatchesTableCommand::class, + 'command.queue.clear' => \Illuminate\Queue\Console\ClearCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.monitor' => \Illuminate\Queue\Console\MonitorCommand::class, + 'command.queue.prune-batches' => \Illuminate\Queue\Console\PruneBatchesCommand::class, + 'command.queue.prune-failed-jobs' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.retry-batch' => \Illuminate\Queue\Console\RetryBatchCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.schema.dump' => \Illuminate\Database\Console\DumpCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.stub.publish' => \Illuminate\Foundation\Console\StubPublishCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'crud' => \Backpack\CRUD\app\Library\CrudPanel\CrudPanel::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'excel' => \Maatwebsite\Excel\Excel::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'gravatar' => \Creativeorange\Gravatar\Gravatar::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mail.manager' => \Illuminate\Mail\MailManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + 'widgets' => \Illuminate\Support\Collection::class, + ])); + override(\App::get(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\FlareClient\Flare' => \Facade\FlareClient\Flare::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\DumpRecorder\MultiDumpHandler' => \Facade\Ignition\DumpRecorder\MultiDumpHandler::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\JobRecorder\JobRecorder' => \Facade\Ignition\JobRecorder\JobRecorder::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Facade\Ignition\Support\SentReports' => \Facade\Ignition\Support\SentReports::class, + 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, + 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, + 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Telescope\Contracts\ClearableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Maatwebsite\Excel\Cache\CacheManager' => \Maatwebsite\Excel\Cache\CacheManager::class, + 'Maatwebsite\Excel\Files\Filesystem' => \Maatwebsite\Excel\Files\Filesystem::class, + 'Maatwebsite\Excel\Files\TemporaryFileFactory' => \Maatwebsite\Excel\Files\TemporaryFileFactory::class, + 'Maatwebsite\Excel\Transactions\TransactionHandler' => \Maatwebsite\Excel\Transactions\DbTransactionHandler::class, + 'Maatwebsite\Excel\Transactions\TransactionManager' => \Maatwebsite\Excel\Transactions\TransactionManager::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Spatie\Permission\Contracts\Permission' => \Spatie\Permission\Models\Permission::class, + 'Spatie\Permission\Contracts\Role' => \Spatie\Permission\Models\Role::class, + 'Spatie\Permission\PermissionRegistrar' => \Spatie\Permission\PermissionRegistrar::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'alerts' => \Prologue\Alerts\AlertsMessageBag::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.cast.make' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.component.make' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.prune' => \Illuminate\Database\Console\PruneCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.make:solution-provider' => \Facade\Ignition\Commands\SolutionProviderMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.batches-table' => \Illuminate\Queue\Console\BatchesTableCommand::class, + 'command.queue.clear' => \Illuminate\Queue\Console\ClearCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.monitor' => \Illuminate\Queue\Console\MonitorCommand::class, + 'command.queue.prune-batches' => \Illuminate\Queue\Console\PruneBatchesCommand::class, + 'command.queue.prune-failed-jobs' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.retry-batch' => \Illuminate\Queue\Console\RetryBatchCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.schema.dump' => \Illuminate\Database\Console\DumpCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.stub.publish' => \Illuminate\Foundation\Console\StubPublishCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'crud' => \Backpack\CRUD\app\Library\CrudPanel\CrudPanel::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'excel' => \Maatwebsite\Excel\Excel::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'gravatar' => \Creativeorange\Gravatar\Gravatar::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mail.manager' => \Illuminate\Mail\MailManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + 'widgets' => \Illuminate\Support\Collection::class, + ])); + override(\App::make(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\FlareClient\Flare' => \Facade\FlareClient\Flare::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\DumpRecorder\MultiDumpHandler' => \Facade\Ignition\DumpRecorder\MultiDumpHandler::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\JobRecorder\JobRecorder' => \Facade\Ignition\JobRecorder\JobRecorder::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Facade\Ignition\Support\SentReports' => \Facade\Ignition\Support\SentReports::class, + 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, + 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, + 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Telescope\Contracts\ClearableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Maatwebsite\Excel\Cache\CacheManager' => \Maatwebsite\Excel\Cache\CacheManager::class, + 'Maatwebsite\Excel\Files\Filesystem' => \Maatwebsite\Excel\Files\Filesystem::class, + 'Maatwebsite\Excel\Files\TemporaryFileFactory' => \Maatwebsite\Excel\Files\TemporaryFileFactory::class, + 'Maatwebsite\Excel\Transactions\TransactionHandler' => \Maatwebsite\Excel\Transactions\DbTransactionHandler::class, + 'Maatwebsite\Excel\Transactions\TransactionManager' => \Maatwebsite\Excel\Transactions\TransactionManager::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Spatie\Permission\Contracts\Permission' => \Spatie\Permission\Models\Permission::class, + 'Spatie\Permission\Contracts\Role' => \Spatie\Permission\Models\Role::class, + 'Spatie\Permission\PermissionRegistrar' => \Spatie\Permission\PermissionRegistrar::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'alerts' => \Prologue\Alerts\AlertsMessageBag::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.cast.make' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.component.make' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.prune' => \Illuminate\Database\Console\PruneCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.make:solution-provider' => \Facade\Ignition\Commands\SolutionProviderMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.batches-table' => \Illuminate\Queue\Console\BatchesTableCommand::class, + 'command.queue.clear' => \Illuminate\Queue\Console\ClearCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.monitor' => \Illuminate\Queue\Console\MonitorCommand::class, + 'command.queue.prune-batches' => \Illuminate\Queue\Console\PruneBatchesCommand::class, + 'command.queue.prune-failed-jobs' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.retry-batch' => \Illuminate\Queue\Console\RetryBatchCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.schema.dump' => \Illuminate\Database\Console\DumpCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.stub.publish' => \Illuminate\Foundation\Console\StubPublishCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'crud' => \Backpack\CRUD\app\Library\CrudPanel\CrudPanel::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'excel' => \Maatwebsite\Excel\Excel::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'gravatar' => \Creativeorange\Gravatar\Gravatar::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mail.manager' => \Illuminate\Mail\MailManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + 'widgets' => \Illuminate\Support\Collection::class, + ])); + override(\App::makeWith(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\FlareClient\Flare' => \Facade\FlareClient\Flare::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\DumpRecorder\MultiDumpHandler' => \Facade\Ignition\DumpRecorder\MultiDumpHandler::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\JobRecorder\JobRecorder' => \Facade\Ignition\JobRecorder\JobRecorder::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Facade\Ignition\Support\SentReports' => \Facade\Ignition\Support\SentReports::class, + 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, + 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, + 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Telescope\Contracts\ClearableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Maatwebsite\Excel\Cache\CacheManager' => \Maatwebsite\Excel\Cache\CacheManager::class, + 'Maatwebsite\Excel\Files\Filesystem' => \Maatwebsite\Excel\Files\Filesystem::class, + 'Maatwebsite\Excel\Files\TemporaryFileFactory' => \Maatwebsite\Excel\Files\TemporaryFileFactory::class, + 'Maatwebsite\Excel\Transactions\TransactionHandler' => \Maatwebsite\Excel\Transactions\DbTransactionHandler::class, + 'Maatwebsite\Excel\Transactions\TransactionManager' => \Maatwebsite\Excel\Transactions\TransactionManager::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Spatie\Permission\Contracts\Permission' => \Spatie\Permission\Models\Permission::class, + 'Spatie\Permission\Contracts\Role' => \Spatie\Permission\Models\Role::class, + 'Spatie\Permission\PermissionRegistrar' => \Spatie\Permission\PermissionRegistrar::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'alerts' => \Prologue\Alerts\AlertsMessageBag::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.cast.make' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.component.make' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.prune' => \Illuminate\Database\Console\PruneCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.make:solution-provider' => \Facade\Ignition\Commands\SolutionProviderMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.batches-table' => \Illuminate\Queue\Console\BatchesTableCommand::class, + 'command.queue.clear' => \Illuminate\Queue\Console\ClearCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.monitor' => \Illuminate\Queue\Console\MonitorCommand::class, + 'command.queue.prune-batches' => \Illuminate\Queue\Console\PruneBatchesCommand::class, + 'command.queue.prune-failed-jobs' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.retry-batch' => \Illuminate\Queue\Console\RetryBatchCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.schema.dump' => \Illuminate\Database\Console\DumpCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.stub.publish' => \Illuminate\Foundation\Console\StubPublishCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'crud' => \Backpack\CRUD\app\Library\CrudPanel\CrudPanel::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'excel' => \Maatwebsite\Excel\Excel::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'gravatar' => \Creativeorange\Gravatar\Gravatar::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mail.manager' => \Illuminate\Mail\MailManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + 'widgets' => \Illuminate\Support\Collection::class, + ])); + override(\app(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\FlareClient\Flare' => \Facade\FlareClient\Flare::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\DumpRecorder\MultiDumpHandler' => \Facade\Ignition\DumpRecorder\MultiDumpHandler::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\JobRecorder\JobRecorder' => \Facade\Ignition\JobRecorder\JobRecorder::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Facade\Ignition\Support\SentReports' => \Facade\Ignition\Support\SentReports::class, + 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, + 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, + 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Telescope\Contracts\ClearableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Maatwebsite\Excel\Cache\CacheManager' => \Maatwebsite\Excel\Cache\CacheManager::class, + 'Maatwebsite\Excel\Files\Filesystem' => \Maatwebsite\Excel\Files\Filesystem::class, + 'Maatwebsite\Excel\Files\TemporaryFileFactory' => \Maatwebsite\Excel\Files\TemporaryFileFactory::class, + 'Maatwebsite\Excel\Transactions\TransactionHandler' => \Maatwebsite\Excel\Transactions\DbTransactionHandler::class, + 'Maatwebsite\Excel\Transactions\TransactionManager' => \Maatwebsite\Excel\Transactions\TransactionManager::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Spatie\Permission\Contracts\Permission' => \Spatie\Permission\Models\Permission::class, + 'Spatie\Permission\Contracts\Role' => \Spatie\Permission\Models\Role::class, + 'Spatie\Permission\PermissionRegistrar' => \Spatie\Permission\PermissionRegistrar::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'alerts' => \Prologue\Alerts\AlertsMessageBag::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.cast.make' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.component.make' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.prune' => \Illuminate\Database\Console\PruneCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.make:solution-provider' => \Facade\Ignition\Commands\SolutionProviderMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.batches-table' => \Illuminate\Queue\Console\BatchesTableCommand::class, + 'command.queue.clear' => \Illuminate\Queue\Console\ClearCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.monitor' => \Illuminate\Queue\Console\MonitorCommand::class, + 'command.queue.prune-batches' => \Illuminate\Queue\Console\PruneBatchesCommand::class, + 'command.queue.prune-failed-jobs' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.retry-batch' => \Illuminate\Queue\Console\RetryBatchCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.schema.dump' => \Illuminate\Database\Console\DumpCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.stub.publish' => \Illuminate\Foundation\Console\StubPublishCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'crud' => \Backpack\CRUD\app\Library\CrudPanel\CrudPanel::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'excel' => \Maatwebsite\Excel\Excel::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'gravatar' => \Creativeorange\Gravatar\Gravatar::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mail.manager' => \Illuminate\Mail\MailManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + 'widgets' => \Illuminate\Support\Collection::class, + ])); + override(\resolve(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\FlareClient\Flare' => \Facade\FlareClient\Flare::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\DumpRecorder\MultiDumpHandler' => \Facade\Ignition\DumpRecorder\MultiDumpHandler::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\JobRecorder\JobRecorder' => \Facade\Ignition\JobRecorder\JobRecorder::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Facade\Ignition\Support\SentReports' => \Facade\Ignition\Support\SentReports::class, + 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, + 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, + 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Telescope\Contracts\ClearableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Maatwebsite\Excel\Cache\CacheManager' => \Maatwebsite\Excel\Cache\CacheManager::class, + 'Maatwebsite\Excel\Files\Filesystem' => \Maatwebsite\Excel\Files\Filesystem::class, + 'Maatwebsite\Excel\Files\TemporaryFileFactory' => \Maatwebsite\Excel\Files\TemporaryFileFactory::class, + 'Maatwebsite\Excel\Transactions\TransactionHandler' => \Maatwebsite\Excel\Transactions\DbTransactionHandler::class, + 'Maatwebsite\Excel\Transactions\TransactionManager' => \Maatwebsite\Excel\Transactions\TransactionManager::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Spatie\Permission\Contracts\Permission' => \Spatie\Permission\Models\Permission::class, + 'Spatie\Permission\Contracts\Role' => \Spatie\Permission\Models\Role::class, + 'Spatie\Permission\PermissionRegistrar' => \Spatie\Permission\PermissionRegistrar::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'alerts' => \Prologue\Alerts\AlertsMessageBag::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.cast.make' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.component.make' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.prune' => \Illuminate\Database\Console\PruneCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.make:solution-provider' => \Facade\Ignition\Commands\SolutionProviderMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.batches-table' => \Illuminate\Queue\Console\BatchesTableCommand::class, + 'command.queue.clear' => \Illuminate\Queue\Console\ClearCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.monitor' => \Illuminate\Queue\Console\MonitorCommand::class, + 'command.queue.prune-batches' => \Illuminate\Queue\Console\PruneBatchesCommand::class, + 'command.queue.prune-failed-jobs' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.retry-batch' => \Illuminate\Queue\Console\RetryBatchCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.schema.dump' => \Illuminate\Database\Console\DumpCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.stub.publish' => \Illuminate\Foundation\Console\StubPublishCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'crud' => \Backpack\CRUD\app\Library\CrudPanel\CrudPanel::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'excel' => \Maatwebsite\Excel\Excel::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'gravatar' => \Creativeorange\Gravatar\Gravatar::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mail.manager' => \Illuminate\Mail\MailManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + 'widgets' => \Illuminate\Support\Collection::class, + ])); + override(\Psr\Container\ContainerInterface::get(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\FlareClient\Flare' => \Facade\FlareClient\Flare::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\DumpRecorder\MultiDumpHandler' => \Facade\Ignition\DumpRecorder\MultiDumpHandler::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\JobRecorder\JobRecorder' => \Facade\Ignition\JobRecorder\JobRecorder::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Facade\Ignition\Support\SentReports' => \Facade\Ignition\Support\SentReports::class, + 'Illuminate\Auth\Middleware\RequirePassword' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\BatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\DatabaseBatchRepository' => \Illuminate\Bus\DatabaseBatchRepository::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Cache\RateLimiter' => \Illuminate\Cache\RateLimiter::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleListCommand' => \Illuminate\Console\Scheduling\ScheduleListCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Console\Scheduling\ScheduleTestCommand' => \Illuminate\Console\Scheduling\ScheduleTestCommand::class, + 'Illuminate\Console\Scheduling\ScheduleWorkCommand' => \Illuminate\Console\Scheduling\ScheduleWorkCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Contracts\Validation\UncompromisedVerifier' => \Illuminate\Validation\NotPwnedVerifier::class, + 'Illuminate\Database\Console\DbCommand' => \Illuminate\Database\Console\DbCommand::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Foundation\PackageManifest' => \Illuminate\Foundation\PackageManifest::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class, + 'Laravel\Telescope\Contracts\ClearableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\EntriesRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Laravel\Telescope\Contracts\PrunableRepository' => \Laravel\Telescope\Storage\DatabaseEntriesRepository::class, + 'Maatwebsite\Excel\Cache\CacheManager' => \Maatwebsite\Excel\Cache\CacheManager::class, + 'Maatwebsite\Excel\Files\Filesystem' => \Maatwebsite\Excel\Files\Filesystem::class, + 'Maatwebsite\Excel\Files\TemporaryFileFactory' => \Maatwebsite\Excel\Files\TemporaryFileFactory::class, + 'Maatwebsite\Excel\Transactions\TransactionHandler' => \Maatwebsite\Excel\Transactions\DbTransactionHandler::class, + 'Maatwebsite\Excel\Transactions\TransactionManager' => \Maatwebsite\Excel\Transactions\TransactionManager::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Spatie\Permission\Contracts\Permission' => \Spatie\Permission\Models\Permission::class, + 'Spatie\Permission\Contracts\Role' => \Spatie\Permission\Models\Role::class, + 'Spatie\Permission\PermissionRegistrar' => \Spatie\Permission\PermissionRegistrar::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'alerts' => \Prologue\Alerts\AlertsMessageBag::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.cast.make' => \Illuminate\Foundation\Console\CastMakeCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.component.make' => \Illuminate\Foundation\Console\ComponentMakeCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.prune' => \Illuminate\Database\Console\PruneCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.make:solution-provider' => \Facade\Ignition\Commands\SolutionProviderMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.batches-table' => \Illuminate\Queue\Console\BatchesTableCommand::class, + 'command.queue.clear' => \Illuminate\Queue\Console\ClearCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.monitor' => \Illuminate\Queue\Console\MonitorCommand::class, + 'command.queue.prune-batches' => \Illuminate\Queue\Console\PruneBatchesCommand::class, + 'command.queue.prune-failed-jobs' => \Illuminate\Queue\Console\PruneFailedJobsCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.retry-batch' => \Illuminate\Queue\Console\RetryBatchCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.schema.dump' => \Illuminate\Database\Console\DumpCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.stub.publish' => \Illuminate\Foundation\Console\StubPublishCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'crud' => \Backpack\CRUD\app\Library\CrudPanel\CrudPanel::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'db.transactions' => \Illuminate\Database\DatabaseTransactionsManager::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'excel' => \Maatwebsite\Excel\Excel::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.cloud' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'gravatar' => \Creativeorange\Gravatar\Gravatar::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mail.manager' => \Illuminate\Mail\MailManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseUuidFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'redis.connection' => \Illuminate\Redis\Connections\PhpRedisConnection::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + 'widgets' => \Illuminate\Support\Collection::class, + ])); + + + override(\Illuminate\Support\Arr::add(0), type(0)); + override(\Illuminate\Support\Arr::except(0), type(0)); + override(\Illuminate\Support\Arr::first(0), elementType(0)); + override(\Illuminate\Support\Arr::last(0), elementType(0)); + override(\Illuminate\Support\Arr::get(0), elementType(0)); + override(\Illuminate\Support\Arr::only(0), type(0)); + override(\Illuminate\Support\Arr::prepend(0), type(0)); + override(\Illuminate\Support\Arr::pull(0), elementType(0)); + override(\Illuminate\Support\Arr::set(0), type(0)); + override(\Illuminate\Support\Arr::shuffle(0), type(0)); + override(\Illuminate\Support\Arr::sort(0), type(0)); + override(\Illuminate\Support\Arr::sortRecursive(0), type(0)); + override(\Illuminate\Support\Arr::where(0), type(0)); + override(\array_add(0), type(0)); + override(\array_except(0), type(0)); + override(\array_first(0), elementType(0)); + override(\array_last(0), elementType(0)); + override(\array_get(0), elementType(0)); + override(\array_only(0), type(0)); + override(\array_prepend(0), type(0)); + override(\array_pull(0), elementType(0)); + override(\array_set(0), type(0)); + override(\array_sort(0), type(0)); + override(\array_sort_recursive(0), type(0)); + override(\array_where(0), type(0)); + override(\head(0), elementType(0)); + override(\last(0), elementType(0)); + override(\with(0), type(0)); + override(\tap(0), type(0)); + override(\optional(0), type(0)); + +} diff --git a/README.md b/README.md index d60c189..64adca9 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,17 @@ [![GitHub Code Style Action Status](https://img.shields.io/github/workflow/status/stats4sd/laravel-kobo-link/Check%20&%20fix%20styling?label=code%20style)](https://github.com/stats4sd/laravel-kobo-link/actions?query=workflow%3A"Check+%26+fix+styling"+branch%3Amaster) [![Total Downloads](https://img.shields.io/packagist/dt/stats4sd/laravel-kobo-link.svg?style=flat-square)](https://packagist.org/packages/stats4sd/laravel-kobo-link) -This is where your description should go. Limit it to a paragraph or two. Consider adding a small example. +This package turns your Laravel / Laravel Backpack platform into a management system for data collected through [KoboToolBox](https://kf.kobotoolbox.org). It is designed to support research or survey data collection, and provides features beyond the scope of what KoboToolBox or other ODK Services can provide on their own. + +## Who is it for? +Platforms built with this package can help with the following scenarios: + +1. Multiple teams need to use the same set of ODK forms provided by a central team, but need to retain ownership of their data (i.e. the data of all teams cannot simply be pooled together and made accessible to everyone) +2. The data collection is complex, where data from some forms needs to be processed and then shared back to other forms as customised CSV files. + 1. Including the possibility that each team requires different data to be made available in their ODK forms. + +> ### IMPORTANT NOTE +> This is not an off-the-shelf data management solution! It requires you to build your own Laravel platform and pull in this package via composer. It does not handle the processing of the data collected through your ODK forms, but it provides hooks to enable you to write your own processing scripts to run automatically when ODK submissions are pulled in from KoboToolBox. You can provide your own database structures / data models to organise the processed data however you see fit. ## Installation @@ -31,6 +41,7 @@ KOBO_ENDPOINT= KOBO_OLD_ENDPOINT= KOBO_USERNAME= KOBO_PASSWORD= +DATA_PROCESSING_CLASS= ``` The two endpoint variables should be the full url to the server you are using. For example: @@ -44,67 +55,114 @@ KOBO_ENDPOINT=https://kobo.humanitarianresponse.info KOBO_OLD_ENDPOINT=https://kc.humanitarianresponse.info ``` -The platform requires a 'primary' user account on the KoboToolbox server to manage deployments of ODK forms. This account will *own* every form published by the platform. We HIGHLY recommend creating an account specifically for the Laravel application. If the application uses an account also used by other users, there is a chance that your database will become out of sync with the forms present on KoBoToolbox, and the form management functions may stop working correctly. +The platform requires a 'primary' user account on the KoboToolbox server to manage deployments of ODK forms. This account will *own* every form published by the platform. We **highly** recommend creating an account specifically for the Laravel platform. If the platform uses an account also used by others, there is a chance that your database will become out of sync with the forms present on KoBoToolbox, and the form management functions may stop working correctly. -## Setup Teams +## Setup Data Models This packages assumes that the following models exist in the platform: - `\App\Models\User` -- '\App\Models\Team` + +To create the database tables required by this package, publish and run the provided migration file: -At some point the package will be updated to allow you to customise these models, but for now they must be called exactly as above. +``` +php artisan vendor:publish --provider="Stats4sd\KoboLink\KoboLinkServiceProvider" --tag="kobo-link-migrations" +php artisan migrate +``` -They also require the following relationships: - - Users belong to many teams; - - teams belong to many users; +The package provides the following models: + +| Feature / Purpose| Model | Database Table | Comments +| --- | --- | --- | --- +| Team Management | Team | teams | If the platform will be used by a single group who share data (e.g. one research project, or a single survey), you can simply create 1 team. +| Team Management | Invite | invites | This package includes a system of inviting users to specific teams. This feature will hopefully be seperated into a separate package in the future, as it is not a core part of the ODK / KoboToolbox system. +| ODK Form Management | Xlsform | xlsforms | This stores every ODK form present in the platform. Forms can be either deployed to *every* team, or to a single team, based on needs. This allows most teams to use a 'common' form, but gives you the option to add a custom version of a form for a specific team if required. +| ODK Form Management | TeamXlsform | team_xlsform | The link table for ODK forms and teams. This table will contain 1 record for every unique form that gets deployed to KoboToolbox. +| Submission Processing | Submission | submissions | Every submission that is pulled from KoboToolbox is stored in this table. The main contents is stored as a JSON field, so the table structure is the same regardless of the form's structure. You can then write the processing scripts to 'unpack' this JSON into whatever formats you require. +| Submission Processing | Datamap | datamaps | Datamaps handle the link to the actual processing scripts. Each ODK form can be linked to 1 or more data maps, and submissions will be processed using *all* linked data maps. + +TODO: add section explaining how the data maps work, and include real examples. + +## Writing Data Processing Scripts +The Datamap model includes a `process(Submission $submission)` method. This hooks into a Datamap Service class, which is designed to be overwritten by you. Each platform will require a different set of data processing scripts tailored to the data being collected, so we have tried to make it easy to include these scripts in your platform. Here is the short version: + +1. Create a "DatamapService" class, and add the fully qualified path to this class into your .env file. E.g.: `DATAMAP_SERVICE_CLASS: "\App\Services\DatamapService::class"` +2. Write the methods you want to use to process a submisison. The method should accept a single Submission parameter, and can then do anything you want to 'process' the submission. e.g.: +```php + public function testForm(Stats4sd\KoboLink\Models\Submission $submission) + { + /* PROCESS SUBMISSION DATA */ + + /* get the submission contents */ + $data = $submission->content; + + // the Datamap model includes a helper function to remove the lengthy group names from the submission: + $data = $this->removeGroupNames($data); + + /** Now $data is a set of key-value pairs that can be processed however you need, including : + * - creating new database entries via Eloquent, + * - manual SQL querying, + * - passing the submission to an external process like R or Python running on the server. + * + * Repeat groups need to be handled manually - they will be left with the 'value' as a nested json array. + **/ + + /* At the end, you should update the $submission entry: */ + $submission->processed = 1; + + /* If your processing throws errors, e.g. validation errors, you can add those to the "errors" array: */ + $submission->errors = [ + 'variable_name' => 'Error message', + 'variable_2' => 'Error message', + ]; + + /** If your processing has created new Eloquent models, you can add those to the "entries" array. + * - This allows you to easily identify what records each submission created; + * - It is used in the 'reprocessSubmissions()' method to delete previously created entries and avoid duplication. + **/ + + // example, if your submission created 1 Household entry and 2 HouseholdMember entries: + $submission->entries = [ + "App\Models\Household" => [$household->id], + "App\Models\HouseholdMember" => [$memberOne->id, $memberTwo->id], + ]; + + $submission->save(); + } +``` -Next, you should add the following relationships to models from this package: +TODO: include real examples :) -``` -############################ -## For \App\Models\Team -############################ -public function xls_forms() -{ - return $this->belongsToMany(XlsForm::class, 'team_xlsform') - ->withPivot([ - 'kobo_id', - 'kobo_version_id', - 'enketo_url', - 'processing', - 'is_active', - ]); -} - -public function team_xlsforms() -{ - return $this->hasMany(TeamXlsForm::class); -} -``` +3. Now, you should create a Datamap entry with an ID of the method name. For the example above, you would add the following record to the `datamaps` table: + - `INSERT INTO datamaps SET id = "testForm", title = "Test Form Processing";` +It is vital to match the datamap ID to the method name, as this is how the datamap chooses which method to run during processing. ### Publishing The config -If you add the required ENV variables to your application, there should be no need to publish the config file. However, you may wish to do so anyway. To publish the file, use: +If you add the required ENV variables to your application, there should be no need to publish the config file. + +However, you may wish to do so anyway. To publish the file, use: ```bash php artisan vendor:publish --provider="Stats4sd\KoboLink\KoboLinkServiceProvider" --tag="kobo-link-config" ``` -## Add the CrudControllers to the Sidebar -This package assumes you are using Laravel Backpack as your admin panel. As such, it comes with a set of CrudControllers for managing your XLS forms and submissions. +## Add the Front-end +This package assumes you are using Laravel Backpack as your admin panel. As such, it comes with a set of CrudControllers for managing your XLS forms and submissions. It also assumes that you are able to build your own front-end to allow team members to access their data, manage forms etc. You can add links to these crud panels into your sidebar: +TODO: Add example team UI for team members to manage their own forms, submissions and team members/invites. + ``` - -``` -## Changelog + -Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently. + + +``` ## Security Vulnerabilities diff --git a/_ide_helper.php b/_ide_helper.php index c0ebc63..150100c 100644 --- a/_ide_helper.php +++ b/_ide_helper.php @@ -3,7 +3,7 @@ /** * A helper file for Laravel, to provide autocomplete information to your IDE - * Generated for Laravel 8.35.1. + * Generated for Laravel 8.63.0. * * This file should not be included in your code, only analyzed by your IDE! * @@ -129,7 +129,7 @@ public static function useAppPath($path) /** * Get the base path of the Laravel installation. * - * @param string $path Optionally, a path to append to the base path + * @param string $path * @return string * @static */ @@ -141,7 +141,7 @@ public static function basePath($path = '') /** * Get the path to the bootstrap directory. * - * @param string $path Optionally, a path to append to the bootstrap path + * @param string $path * @return string * @static */ @@ -153,7 +153,7 @@ public static function bootstrapPath($path = '') /** * Get the path to the application configuration files. * - * @param string $path Optionally, a path to append to the config path + * @param string $path * @return string * @static */ @@ -165,7 +165,7 @@ public static function configPath($path = '') /** * Get the path to the database directory. * - * @param string $path Optionally, a path to append to the database path + * @param string $path * @return string * @static */ @@ -564,6 +564,7 @@ public static function booted($callback) /** * {@inheritdoc} * + * @return \Symfony\Component\HttpFoundation\Response * @static */ public static function handle($request, $type = 1, $catch = true) @@ -937,6 +938,7 @@ public static function when($concrete) * `has($id)` returning true does not mean that `get($id)` will not throw an exception. * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`. * + * @return bool * @param string $id Identifier of the entry to look for. * @return bool * @static @@ -989,6 +991,7 @@ public static function isAlias($name) * @param \Closure|string|null $concrete * @param bool $shared * @return void + * @throws \TypeError * @static */ public static function bind($abstract, $concrete = null, $shared = false) @@ -1087,6 +1090,32 @@ public static function singletonIf($abstract, $concrete = null) { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->singletonIf($abstract, $concrete); + } + /** + * Register a scoped binding in the container. + * + * @param string $abstract + * @param \Closure|string|null $concrete + * @return void + * @static + */ + public static function scoped($abstract, $concrete = null) + { //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->scoped($abstract, $concrete); + } + /** + * Register a scoped binding if it hasn't already been registered. + * + * @param string $abstract + * @param \Closure|string|null $concrete + * @return void + * @static + */ + public static function scopedIf($abstract, $concrete = null) + { //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->scopedIf($abstract, $concrete); } /** * "Extend" an abstract type in the container. @@ -1238,6 +1267,7 @@ public static function makeWith($abstract, $parameters = []) /** * Finds an entry of the container by its identifier and returns it. * + * @return mixed * @param string $id Identifier of the entry to look for. * @throws NotFoundExceptionInterface No entry was found for **this** identifier. * @throws ContainerExceptionInterface Error while retrieving the entry. @@ -1359,6 +1389,17 @@ public static function forgetInstances() { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->forgetInstances(); + } + /** + * Clear all of the scoped instances from the container. + * + * @return void + * @static + */ + public static function forgetScopedInstances() + { //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->forgetScopedInstances(); } /** * Get the globally available instance of the container. @@ -1862,6 +1903,20 @@ public static function attempt($credentials = [], $remember = false) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->attempt($credentials, $remember); + } + /** + * Attempt to authenticate a user with credentials and additional callbacks. + * + * @param array $credentials + * @param array|callable $callbacks + * @param false $remember + * @return bool + * @static + */ + public static function attemptWhen($credentials = [], $callbacks = null, $remember = false) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->attemptWhen($credentials, $callbacks, $remember); } /** * Log the given user ID into the application. @@ -1920,7 +1975,7 @@ public static function logoutCurrentDevice() * * @param string $password * @param string $attribute - * @return bool|null + * @return \App\Models\User|null * @throws \Illuminate\Auth\AuthenticationException * @static */ @@ -2573,6 +2628,19 @@ public static function compileEndOnce() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->compileEndOnce(); + } + /** + * Add a handler to be executed before echoing a given class. + * + * @param string|callable $class + * @param callable|null $handler + * @return void + * @static + */ + public static function stringable($class, $handler = null) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->stringable($class, $handler); } /** * Compile Blade echos into valid PHP. @@ -2585,6 +2653,18 @@ public static function compileEchos($value) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->compileEchos($value); + } + /** + * Apply the echo handler for the value if it exists. + * + * @param string $value + * @return string + * @static + */ + public static function applyEchoHandler($value) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + return $instance->applyEchoHandler($value); } } @@ -2773,7 +2853,7 @@ public static function dispatch($command) /** * Dispatch a command to its appropriate handler in the current process. * - * Queuable jobs will be dispatched to the "sync" queue. + * Queueable jobs will be dispatched to the "sync" queue. * * @param mixed $command * @param mixed $handler @@ -2863,6 +2943,7 @@ public static function getCommandHandler($command) * * @param mixed $command * @return mixed + * @throws \RuntimeException * @static */ public static function dispatchToQueue($command) @@ -2945,6 +3026,45 @@ public static function assertNotDispatched($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertNotDispatched($command, $callback); + } + /** + * Assert if a job was explicitly dispatched synchronously based on a truth-test callback. + * + * @param string|\Closure $command + * @param callable|int|null $callback + * @return void + * @static + */ + public static function assertDispatchedSync($command, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + $instance->assertDispatchedSync($command, $callback); + } + /** + * Assert if a job was pushed synchronously a number of times. + * + * @param string $command + * @param int $times + * @return void + * @static + */ + public static function assertDispatchedSyncTimes($command, $times = 1) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + $instance->assertDispatchedSyncTimes($command, $times); + } + /** + * Determine if a job was dispatched based on a truth-test callback. + * + * @param string|\Closure $command + * @param callable|null $callback + * @return void + * @static + */ + public static function assertNotDispatchedSync($command, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + $instance->assertNotDispatchedSync($command, $callback); } /** * Assert if a job was dispatched after the response was sent based on a truth-test callback. @@ -3034,6 +3154,19 @@ public static function dispatched($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ return $instance->dispatched($command, $callback); + } + /** + * Get all of the jobs dispatched synchronously matching a truth-test callback. + * + * @param string $command + * @param callable|null $callback + * @return \Illuminate\Support\Collection + * @static + */ + public static function dispatchedSync($command, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + return $instance->dispatchedSync($command, $callback); } /** * Get all of the jobs dispatched after the response was sent matching a truth-test callback. @@ -3079,6 +3212,18 @@ public static function hasDispatched($command) * @return bool * @static */ + public static function hasDispatchedSync($command) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + return $instance->hasDispatchedSync($command); + } + /** + * Determine if there are any stored commands for a given class. + * + * @param string $command + * @return bool + * @static + */ public static function hasDispatchedAfterResponse($command) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ @@ -3266,6 +3411,7 @@ public static function many($keys) /** * Obtains multiple cache items by their unique keys. * + * @return \Illuminate\Cache\iterable * @param \Psr\SimpleCache\iterable $keys A list of keys that can obtained in a single operation. * @param mixed $default Default value to return for keys that do not exist. * @return \Psr\SimpleCache\iterable A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value. @@ -3309,6 +3455,7 @@ public static function put($key, $value, $ttl = null) /** * Persists data in the cache, uniquely referenced by a key with an optional expiration TTL time. * + * @return bool * @param string $key The key of the item to store. * @param mixed $value The value of the item to store, must be serializable. * @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and @@ -3340,6 +3487,7 @@ public static function putMany($values, $ttl = null) /** * Persists a set of key => value pairs in the cache, with an optional TTL. * + * @return bool * @param \Psr\SimpleCache\iterable $values A list of key => value pairs for a multiple-set operation. * @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and * the driver supports TTL then the library may set a default value @@ -3463,6 +3611,7 @@ public static function forget($key) /** * Delete an item from the cache by its unique key. * + * @return bool * @param string $key The unique cache key of the item to delete. * @return bool True if the item was successfully removed. False if there was an error. * @throws \Psr\SimpleCache\InvalidArgumentException @@ -3477,6 +3626,7 @@ public static function delete($key) /** * Deletes multiple cache items in a single operation. * + * @return bool * @param \Psr\SimpleCache\iterable $keys A list of string-based keys to be deleted. * @return bool True if the items were successfully removed. False if there was an error. * @throws \Psr\SimpleCache\InvalidArgumentException @@ -3492,6 +3642,7 @@ public static function deleteMultiple($keys) /** * Wipes clean the entire cache's keys. * + * @return bool * @return bool True on success and false on failure. * @static */ @@ -3994,6 +4145,20 @@ public static function queue(...$parameters) { /** @var \Illuminate\Cookie\CookieJar $instance */ $instance->queue(...$parameters); + } + /** + * Queue a cookie to expire with the next response. + * + * @param string $name + * @param string|null $path + * @param string|null $domain + * @return void + * @static + */ + public static function expire($name, $path = null, $domain = null) + { + /** @var \Illuminate\Cookie\CookieJar $instance */ + $instance->expire($name, $path, $domain); } /** * Remove a cookie from the queue. @@ -4462,6 +4627,18 @@ public static function setReconnector($reconnector) { /** @var \Illuminate\Database\DatabaseManager $instance */ $instance->setReconnector($reconnector); + } + /** + * Set the application instance used by the manager. + * + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Illuminate\Database\DatabaseManager + * @static + */ + public static function setApplication($app) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->setApplication($app); } /** * Determine if the connected database is a MariaDB database. @@ -4737,6 +4914,18 @@ public static function logQuery($query, $bindings, $time = null) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->logQuery($query, $bindings, $time); + } + /** + * Register a hook to be run just before a database query is executed. + * + * @param \Closure $callback + * @return \Illuminate\Database\MySqlConnection + * @static + */ + public static function beforeExecuting($callback) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->beforeExecuting($callback); } /** * Register a database query listener with the connection. @@ -4761,6 +4950,17 @@ public static function raw($value) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->raw($value); + } + /** + * Determine if the database connection has modified any database records. + * + * @return bool + * @static + */ + public static function hasModifiedRecords() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->hasModifiedRecords(); } /** * Indicate if any records have been modified. @@ -4773,6 +4973,18 @@ public static function recordsHaveBeenModified($value = true) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->recordsHaveBeenModified($value); + } + /** + * Set the record modification state. + * + * @param bool $value + * @return \Illuminate\Database\MySqlConnection + * @static + */ + public static function setRecordModificationState($value) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setRecordModificationState($value); } /** * Reset the record modification state. @@ -4784,6 +4996,18 @@ public static function forgetRecordModificationState() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->forgetRecordModificationState(); + } + /** + * Indicate that the connection should use the write PDO connection for reads. + * + * @param bool $value + * @return \Illuminate\Database\MySqlConnection + * @static + */ + public static function useWriteConnectionWhenReading($value = true) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->useWriteConnectionWhenReading($value); } /** * Is Doctrine available? @@ -4909,6 +5133,17 @@ public static function getName() { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getName(); + } + /** + * Get the database connection full name. + * + * @return string|null + * @static + */ + public static function getNameWithReadWriteType() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getNameWithReadWriteType(); } /** * Get an option from the configuration options. @@ -5147,6 +5382,18 @@ public static function setDatabaseName($database) { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setDatabaseName($database); + } + /** + * Set the read / write type of the connection. + * + * @param string|null $readWriteType + * @return \Illuminate\Database\MySqlConnection + * @static + */ + public static function setReadWriteType($readWriteType) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setReadWriteType($readWriteType); } /** * Get the table prefix for the connection. @@ -5273,6 +5520,7 @@ public static function transactionLevel() * * @param callable $callback * @return void + * @throws \RuntimeException * @static */ public static function afterCommit($callback) @@ -5404,7 +5652,7 @@ public static function getListeners($eventName) /** * Register an event listener with the dispatcher. * - * @param \Closure|string $listener + * @param \Closure|string|array $listener * @param bool $wildcard * @return \Closure * @static @@ -5664,6 +5912,7 @@ public static function getRequire($path, $data = []) * @param string $path * @param array $data * @return mixed + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException * @static */ public static function requireOnce($path, $data = []) @@ -5722,6 +5971,20 @@ public static function replace($path, $content) { /** @var \Illuminate\Filesystem\Filesystem $instance */ $instance->replace($path, $content); + } + /** + * Replace a given string within a given file. + * + * @param array|string $search + * @param array|string $replace + * @param string $path + * @return void + * @static + */ + public static function replaceInFile($search, $replace, $path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + $instance->replaceInFile($search, $replace, $path); } /** * Prepend to a file. @@ -5819,6 +6082,7 @@ public static function link($target, $link) * @param string $target * @param string $link * @return void + * @throws \RuntimeException * @static */ public static function relativeLink($target, $link) @@ -5879,6 +6143,7 @@ public static function extension($path) * * @param string $path * @return string|null + * @throws \RuntimeException * @static */ public static function guessExtension($path) @@ -6624,13 +6889,16 @@ public static function forgetDrivers() * @method static \Illuminate\Http\Client\PendingRequest asForm() * @method static \Illuminate\Http\Client\PendingRequest asJson() * @method static \Illuminate\Http\Client\PendingRequest asMultipart() - * @method static \Illuminate\Http\Client\PendingRequest attach(string $name, string $contents, string|null $filename = null, array $headers = []) + * @method static \Illuminate\Http\Client\PendingRequest async() + * @method static \Illuminate\Http\Client\PendingRequest attach(string|array $name, string $contents = '', string|null $filename = null, array $headers = []) * @method static \Illuminate\Http\Client\PendingRequest baseUrl(string $url) * @method static \Illuminate\Http\Client\PendingRequest beforeSending(callable $callback) * @method static \Illuminate\Http\Client\PendingRequest bodyFormat(string $format) * @method static \Illuminate\Http\Client\PendingRequest contentType(string $contentType) - * @method static \Illuminate\Http\Client\PendingRequest retry(int $times, int $sleep = 0) - * @method static \Illuminate\Http\Client\PendingRequest sink($to) + * @method static \Illuminate\Http\Client\PendingRequest dd() + * @method static \Illuminate\Http\Client\PendingRequest dump() + * @method static \Illuminate\Http\Client\PendingRequest retry(int $times, int $sleep = 0, ?callable $when = null) + * @method static \Illuminate\Http\Client\PendingRequest sink(string|resource $to) * @method static \Illuminate\Http\Client\PendingRequest stub(callable $callback) * @method static \Illuminate\Http\Client\PendingRequest timeout(int $seconds) * @method static \Illuminate\Http\Client\PendingRequest withBasicAuth(string $username, string $password) @@ -6638,15 +6906,16 @@ public static function forgetDrivers() * @method static \Illuminate\Http\Client\PendingRequest withCookies(array $cookies, string $domain) * @method static \Illuminate\Http\Client\PendingRequest withDigestAuth(string $username, string $password) * @method static \Illuminate\Http\Client\PendingRequest withHeaders(array $headers) + * @method static \Illuminate\Http\Client\PendingRequest withMiddleware(callable $middleware) * @method static \Illuminate\Http\Client\PendingRequest withOptions(array $options) * @method static \Illuminate\Http\Client\PendingRequest withToken(string $token, string $type = 'Bearer') + * @method static \Illuminate\Http\Client\PendingRequest withUserAgent(string $userAgent) * @method static \Illuminate\Http\Client\PendingRequest withoutRedirecting() * @method static \Illuminate\Http\Client\PendingRequest withoutVerifying() - * @method static \Illuminate\Http\Client\PendingRequest dump() - * @method static \Illuminate\Http\Client\PendingRequest dd() + * @method static array pool(callable $callback) * @method static \Illuminate\Http\Client\Response delete(string $url, array $data = []) - * @method static \Illuminate\Http\Client\Response get(string $url, array $query = []) - * @method static \Illuminate\Http\Client\Response head(string $url, array $query = []) + * @method static \Illuminate\Http\Client\Response get(string $url, array|string|null $query = null) + * @method static \Illuminate\Http\Client\Response head(string $url, array|string|null $query = null) * @method static \Illuminate\Http\Client\Response patch(string $url, array $data = []) * @method static \Illuminate\Http\Client\Response post(string $url, array $data = []) * @method static \Illuminate\Http\Client\Response put(string $url, array $data = []) @@ -6810,6 +7079,17 @@ public static function recorded($callback = null) { /** @var \Illuminate\Http\Client\Factory $instance */ return $instance->recorded($callback); + } + /** + * Get the current event dispatcher implementation. + * + * @return \Illuminate\Contracts\Events\Dispatcher|null + * @static + */ + public static function getDispatcher() + { + /** @var \Illuminate\Http\Client\Factory $instance */ + return $instance->getDispatcher(); } /** * Register a custom macro. @@ -7052,6 +7332,7 @@ public static function getLocale() * * @param string $locale * @return void + * @throws \InvalidArgumentException * @static */ public static function setLocale($locale) @@ -7148,6 +7429,8 @@ public static function hasMacro($name) /** * * + * @method static \Illuminate\Log\Logger withContext(array $context = []) + * @method static \Illuminate\Log\Logger withoutContext() * @method static void write(string $level, string $message, array $context = []) * @method static void listen(\Closure $callback) * @see \Illuminate\Log\Logger @@ -7204,7 +7487,7 @@ public static function getChannels() /** * Get the default log driver name. * - * @return string + * @return string|null * @static */ public static function getDefaultDriver() @@ -7420,6 +7703,7 @@ public static function driver($driver = null) * * @param array $config * @return \Swift_Transport + * @throws \InvalidArgumentException * @static */ public static function createTransport($config) @@ -7521,11 +7805,24 @@ public static function assertSent($mailable, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->assertSent($mailable, $callback); + } + /** + * Determine if a mailable was not sent or queued to be sent based on a truth-test callback. + * + * @param string|\Closure $mailable + * @param callable|null $callback + * @return void + * @static + */ + public static function assertNotOutgoing($mailable, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertNotOutgoing($mailable, $callback); } /** * Determine if a mailable was not sent based on a truth-test callback. * - * @param string $mailable + * @param string|\Closure $mailable * @param callable|null $callback * @return void * @static @@ -7534,6 +7831,17 @@ public static function assertNotSent($mailable, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->assertNotSent($mailable, $callback); + } + /** + * Assert that no mailables were sent or queued to be sent. + * + * @return void + * @static + */ + public static function assertNothingOutgoing() + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertNothingOutgoing(); } /** * Assert that no mailables were sent. @@ -7562,7 +7870,7 @@ public static function assertQueued($mailable, $callback = null) /** * Determine if a mailable was not queued based on a truth-test callback. * - * @param string $mailable + * @param string|\Closure $mailable * @param callable|null $callback * @return void * @static @@ -7586,7 +7894,7 @@ public static function assertNothingQueued() /** * Get all of the mailables matching a truth-test callback. * - * @param string $mailable + * @param string|\Closure $mailable * @param callable|null $callback * @return \Illuminate\Support\Collection * @static @@ -7611,7 +7919,7 @@ public static function hasSent($mailable) /** * Get all of the queued mailables matching a truth-test callback. * - * @param string $mailable + * @param string|\Closure $mailable * @param callable|null $callback * @return \Illuminate\Support\Collection * @static @@ -8072,7 +8380,6 @@ public static function setDefaultDriver($name) /** * * - * @method static void popUsing(string $workerName, callable $callback) * @see \Illuminate\Queue\QueueManager * @see \Illuminate\Queue\Queue */ @@ -8902,23 +9209,35 @@ public static function fullUrlWithQuery($query) return $instance->fullUrlWithQuery($query); } /** - * Get the current path info for the request. + * Get the full URL for the request without the given query string parameters. * + * @param array|string $query * @return string * @static */ - public static function path() + public static function fullUrlWithoutQuery($keys) { /** @var \Illuminate\Http\Request $instance */ - return $instance->path(); + return $instance->fullUrlWithoutQuery($keys); } /** - * Get the current decoded path info for the request. + * Get the current path info for the request. * * @return string * @static */ - public static function decodedPath() + public static function path() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->path(); + } + /** + * Get the current decoded path info for the request. + * + * @return string + * @static + */ + public static function decodedPath() { /** @var \Illuminate\Http\Request $instance */ return $instance->decodedPath(); @@ -9138,6 +9457,7 @@ public static function createFromBase($request) /** * Clones a request and overrides some of its parameters. * + * @return static * @param array $query The GET parameters * @param array $request The POST parameters * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...) @@ -10080,7 +10400,7 @@ public static function isMethodCacheable() * if the proxy is trusted (see "setTrustedProxies()"), otherwise it returns * the latter (from the "SERVER_PROTOCOL" server parameter). * - * @return string + * @return string|null * @static */ public static function getProtocolVersion() @@ -10352,7 +10672,7 @@ public static function format($default = 'html') * * @param string|null $key * @param string|array|null $default - * @return string|array + * @return string|array|null * @static */ public static function old($key = null, $default = null) @@ -10496,13 +10816,14 @@ public static function hasAny($keys) * * @param string $key * @param callable $callback + * @param callable|null $default * @return $this|mixed * @static */ - public static function whenHas($key, $callback) + public static function whenHas($key, $callback, $default = null) { /** @var \Illuminate\Http\Request $instance */ - return $instance->whenHas($key, $callback); + return $instance->whenHas($key, $callback, $default); } /** * Determine if the request contains a non-empty value for an input item. @@ -10545,13 +10866,14 @@ public static function anyFilled($keys) * * @param string $key * @param callable $callback + * @param callable|null $default * @return $this|mixed * @static */ - public static function whenFilled($key, $callback) + public static function whenFilled($key, $callback, $default = null) { /** @var \Illuminate\Http\Request $instance */ - return $instance->whenFilled($key, $callback); + return $instance->whenFilled($key, $callback, $default); } /** * Determine if the request is missing a given input item key. @@ -10615,6 +10937,18 @@ public static function boolean($key = null, $default = false) { /** @var \Illuminate\Http\Request $instance */ return $instance->boolean($key, $default); + } + /** + * Retrieve input from the request as a collection. + * + * @param string|null $key + * @return \Illuminate\Support\Collection + * @static + */ + public static function collect($key = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->collect($key); } /** * Get a subset containing the provided keys with values from the input data. @@ -10844,7 +11178,7 @@ class Response { /** * Create a new response instance. * - * @param string $content + * @param mixed $content * @param int $status * @param array $headers * @return \Illuminate\Http\Response @@ -11092,8 +11426,8 @@ public static function hasMacro($name) * @method static \Illuminate\Routing\RouteRegistrar middleware(array|string|null $middleware) * @method static \Illuminate\Routing\RouteRegistrar name(string $value) * @method static \Illuminate\Routing\RouteRegistrar namespace(string|null $value) - * @method static \Illuminate\Routing\RouteRegistrar prefix(string $prefix) - * @method static \Illuminate\Routing\RouteRegistrar where(array $where) + * @method static \Illuminate\Routing\RouteRegistrar prefix(string $prefix) + * @method static \Illuminate\Routing\RouteRegistrar where(array $where) * @see \Illuminate\Routing\Router */ class Route { @@ -12085,6 +12419,7 @@ public static function defaultStringLength($length) * * @param string $type * @return void + * @throws \InvalidArgumentException * @static */ public static function defaultMorphKeyType($type) @@ -12504,6 +12839,18 @@ public static function exists($key) { /** @var \Illuminate\Session\Store $instance */ return $instance->exists($key); + } + /** + * Determine if the given key is missing from the session data. + * + * @param string|array $key + * @return bool + * @static + */ + public static function missing($key) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->missing($key); } /** * Checks if a key is present and not null. @@ -12989,6 +13336,18 @@ public static function cloud() { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->cloud(); + } + /** + * Build an on-demand disk. + * + * @param string|array $config + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static + */ + public static function build($config) + { + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->build($config); } /** * Create an instance of the local driver. @@ -13552,6 +13911,56 @@ public static function getDriver() { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->getDriver(); + } + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Filesystem\FilesystemAdapter::macro($name, $macro); + } + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Filesystem\FilesystemAdapter::mixin($mixin, $replace); + } + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Filesystem\FilesystemAdapter::hasMacro($name); + } + /** + * Dynamically handle calls to the class. + * + * @param string $method + * @param array $parameters + * @return mixed + * @throws \BadMethodCallException + * @static + */ + public static function macroCall($method, $parameters) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->macroCall($method, $parameters); } } @@ -14132,6 +14541,17 @@ public static function replacer($rule, $replacer) { /** @var \Illuminate\Validation\Factory $instance */ $instance->replacer($rule, $replacer); + } + /** + * Indicate that unvalidated array keys should be excluded, even if the parent array was validated. + * + * @return void + * @static + */ + public static function excludeUnvalidatedArrayKeys() + { + /** @var \Illuminate\Validation\Factory $instance */ + $instance->excludeUnvalidatedArrayKeys(); } /** * Set the Validator instance resolver. @@ -14669,13 +15089,14 @@ public static function renderComponent() * * @param string $name * @param string|null $content + * @param array $attributes * @return void * @static */ - public static function slot($name, $content = null) + public static function slot($name, $content = null, $attributes = []) { /** @var \Illuminate\View\Factory $instance */ - $instance->slot($name, $content); + $instance->slot($name, $content, $attributes); } /** * Save the slot content for rendering. @@ -15067,6 +15488,40 @@ class Arr { */ class Str { + } + /** + * + * + */ + class Collection { + /** + * + * + * @see \Maatwebsite\Excel\Mixins\DownloadCollection::downloadExcel() + * @param string $fileName + * @param string|null $writerType + * @param mixed $withHeadings + * @static + */ + public static function downloadExcel($fileName, $writerType = null, $withHeadings = false) + { + return \Illuminate\Support\Collection::downloadExcel($fileName, $writerType, $withHeadings); + } + /** + * + * + * @see \Maatwebsite\Excel\Mixins\StoreCollection::storeExcel() + * @param string $filePath + * @param string|null $disk + * @param string|null $writerType + * @param mixed $withHeadings + * @static + */ + public static function storeExcel($filePath, $disk = null, $writerType = null, $withHeadings = false) + { + return \Illuminate\Support\Collection::storeExcel($filePath, $disk, $writerType, $withHeadings); + } + } } @@ -15278,8 +15733,8 @@ public static function sync($type, $fields, $attributes) * company model, the 'App/Models/Address' string will be returned. * @param string $relationString Relation string. A dot notation can be used to chain multiple relations. * @param int $length Optionally specify the number of relations to omit from the start of the relation string. If - * the provided length is negative, then that many relations will be omitted from the end of the relation - * string. + * the provided length is negative, then that many relations will be omitted from the end of the relation + * string. * @param \Illuminate\Database\Eloquent\Model $model Optionally specify a different model than the one in the crud object. * @return string Relation model name. * @static @@ -15295,8 +15750,8 @@ public static function getRelationModel($relationString, $length = null, $model * * @param \Illuminate\Database\Eloquent\Model $model Model (eg: user). * @param string $relationString Model relation. Can be a string representing the name of a relation method in the given - * Model or one from a different Model through multiple relations. A dot notation can be used to specify - * multiple relations (eg: user.company.address). + * Model or one from a different Model through multiple relations. A dot notation can be used to specify + * multiple relations (eg: user.company.address). * @param string $attribute The attribute from the relation model (eg: the street attribute from the address model). * @return array An array containing a list of attributes from the resulting model. * @static @@ -15388,16 +15843,6 @@ public static function syncPivot($model, $data) { /** @var \Backpack\CRUD\app\Library\CrudPanel\CrudPanel $instance */ return $instance->syncPivot($model, $data); - } - /** - * - * - * @static - */ - public static function getOnlyRelationEntity($relation_field) - { - /** @var \Backpack\CRUD\app\Library\CrudPanel\CrudPanel $instance */ - return $instance->getOnlyRelationEntity($relation_field); } /** * Find and retrieve the id of the current entry. @@ -15789,10 +16234,10 @@ public static function getUpdateFields($id = false) * Delete a row from the database. * * @param int $id The id of the item to be deleted. + * @return bool True if the item was deleted. * @throws \Illuminate\Database\Eloquent\ModelNotFoundException if the model was not found. * * TODO: should this delete items with relations to it too? - * @return bool True if the item was deleted. * @static */ public static function delete($id) @@ -15982,8 +16427,8 @@ public static function hasAccessToAll($operation_array) * Check if a operation is allowed for a Crud Panel. Fail if not. * * @param string $operation - * @throws \Backpack\CRUD\Exception\AccessDeniedException in case the operation is not enabled * @return bool + * @throws \Backpack\CRUD\Exception\AccessDeniedException in case the operation is not enabled * @static */ public static function hasAccessOrFail($operation) @@ -16905,7 +17350,7 @@ public static function orderButtons($stack, $order) * @param string $type Type of button: view or model_function. * @param string $content The HTML for the button. * @param bool|string $position Position on the stack: beginning or end. If false, the position will be - * 'beginning' for the line stack or 'end' otherwise. + * 'beginning' for the line stack or 'end' otherwise. * @param bool $replaceExisting True if a button with the same name on the given stack should be replaced. * @return \Backpack\CRUD\app\Library\CrudPanel\CrudButton The new CRUD button. * @static @@ -18641,6 +19086,29 @@ public static function inferRelationTypeFromRelationship($field) { /** @var \Backpack\CRUD\app\Library\CrudPanel\CrudPanel $instance */ return $instance->inferRelationTypeFromRelationship($field); + } + /** + * + * + * @static + */ + public static function getOnlyRelationEntity($relation_field) + { + /** @var \Backpack\CRUD\app\Library\CrudPanel\CrudPanel $instance */ + return $instance->getOnlyRelationEntity($relation_field); + } + /** + * Get the fields for relationships, according to the relation type. It looks only for direct + * relations - it will NOT look through relationships of relationships. + * + * @param string|array $relation_types Eloquent relation class or array of Eloquent relation classes. Eg: BelongsTo + * @return array The fields with corresponding relation types. + * @static + */ + public static function getFieldsWithRelationType($relation_types) + { + /** @var \Backpack\CRUD\app\Library\CrudPanel\CrudPanel $instance */ + return $instance->getFieldsWithRelationType($relation_types); } /** * Parse the field name back to the related entity after the form is submited. @@ -18704,6 +19172,18 @@ public static function guessIfFieldHasPivotFromRelationType($relation_type) public static function macro($name, $macro) { \Backpack\CRUD\app\Library\CrudPanel\CrudPanel::macro($name, $macro); + } + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function parentMacro($name, $macro) + { + \Backpack\CRUD\app\Library\CrudPanel\CrudPanel::parentMacro($name, $macro); } /** * Mix another object into the class. @@ -18824,6 +19304,26 @@ public static function determineVersionUsing($determineVersionCallable) { /** @var \Facade\FlareClient\Flare $instance */ return $instance->determineVersionUsing($determineVersionCallable); + } + /** + * + * + * @static + */ + public static function reportErrorLevels($reportErrorLevels) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->reportErrorLevels($reportErrorLevels); + } + /** + * + * + * @static + */ + public static function filterExceptionsUsing($filterExceptionsCallable) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->filterExceptionsUsing($filterExceptionsCallable); } /** * @@ -18991,6 +19491,16 @@ public static function anonymizeIp() * * @static */ + public static function censorRequestBodyFields($fieldNames) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->censorRequestBodyFields($fieldNames); + } + /** + * + * + * @static + */ public static function createReport($throwable) { /** @var \Facade\FlareClient\Flare $instance */ @@ -19125,109 +19635,353 @@ public static function cache($callback, $lifetime = null, $returnObj = false) } - namespace Prologue\Alerts\Facades { + namespace Maatwebsite\Excel\Facades { /** * * - * @method static \Prologue\Alerts\AlertsMessageBag success(string $text) - * @method static \Prologue\Alerts\AlertsMessageBag error(string $text) - * @method static \Prologue\Alerts\AlertsMessageBag warning(string $text) - * @method static \Prologue\Alerts\AlertsMessageBag info(string $text) */ - class Alert { + class Excel { /** - * Store the messages in the current session. + * * - * @return \Prologue\Alerts\AlertsMessageBag + * @param object $export + * @param string|null $fileName + * @param string $writerType + * @param array $headers + * @throws \PhpOffice\PhpSpreadsheet\Exception + * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse * @static */ - public static function flash() + public static function download($export, $fileName, $writerType = null, $headers = []) { - /** @var \Prologue\Alerts\AlertsMessageBag $instance */ - return $instance->flash(); + /** @var \Maatwebsite\Excel\Excel $instance */ + return $instance->download($export, $fileName, $writerType, $headers); } /** - * Deletes all messages. + * * - * @param bool $withSession - * @return \Prologue\Alerts\AlertsMessageBag + * @param object $export + * @param string $filePath + * @param string|null $disk + * @param string $writerType + * @param mixed $diskOptions + * @throws \PhpOffice\PhpSpreadsheet\Exception + * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception + * @return bool * @static */ - public static function flush($withSession = true) + public static function store($export, $filePath, $diskName = null, $writerType = null, $diskOptions = []) { - /** @var \Prologue\Alerts\AlertsMessageBag $instance */ - return $instance->flush($withSession); + /** @var \Maatwebsite\Excel\Excel $instance */ + return $instance->store($export, $filePath, $diskName, $writerType, $diskOptions); } /** - * Checks to see if any messages exist. + * * - * @param null $key A specific level you wish to check for. - * @return bool + * @param object $export + * @param string $filePath + * @param string|null $disk + * @param string $writerType + * @param mixed $diskOptions + * @return \Illuminate\Foundation\Bus\PendingDispatch * @static */ - public static function has($level = null) + public static function queue($export, $filePath, $disk = null, $writerType = null, $diskOptions = []) { - /** @var \Prologue\Alerts\AlertsMessageBag $instance */ - return $instance->has($level); + /** @var \Maatwebsite\Excel\Excel $instance */ + return $instance->queue($export, $filePath, $disk, $writerType, $diskOptions); } /** - * Get the number of messages in the message bag. + * * - * @param null $level A specific level name you wish to count. - * @return int + * @param object $export + * @param string $writerType + * @return string * @static */ - public static function count($level = null) + public static function raw($export, $writerType) { - /** @var \Prologue\Alerts\AlertsMessageBag $instance */ - return $instance->count($level); + /** @var \Maatwebsite\Excel\Excel $instance */ + return $instance->raw($export, $writerType); } /** - * Returns the alert levels from the config. + * * - * @return array + * @param object $import + * @param string|\Symfony\Component\HttpFoundation\File\UploadedFile $filePath + * @param string|null $disk + * @param string|null $readerType + * @return \Maatwebsite\Excel\Reader|\Illuminate\Foundation\Bus\PendingDispatch * @static */ - public static function getLevels() + public static function import($import, $filePath, $disk = null, $readerType = null) { - /** @var \Prologue\Alerts\AlertsMessageBag $instance */ - return $instance->getLevels(); + /** @var \Maatwebsite\Excel\Excel $instance */ + return $instance->import($import, $filePath, $disk, $readerType); } /** - * Returns the Illuminate Session Store. + * * - * @return \Illuminate\Session\Store + * @param object $import + * @param string|\Symfony\Component\HttpFoundation\File\UploadedFile $filePath + * @param string|null $disk + * @param string|null $readerType + * @return array * @static */ - public static function getSession() + public static function toArray($import, $filePath, $disk = null, $readerType = null) { - /** @var \Prologue\Alerts\AlertsMessageBag $instance */ - return $instance->getSession(); + /** @var \Maatwebsite\Excel\Excel $instance */ + return $instance->toArray($import, $filePath, $disk, $readerType); } /** - * Returns the Illuminate Config Repository. + * * - * @return \Illuminate\Config\Repository + * @param object $import + * @param string|\Symfony\Component\HttpFoundation\File\UploadedFile $filePath + * @param string|null $disk + * @param string|null $readerType + * @return \Illuminate\Support\Collection * @static */ - public static function getConfig() + public static function toCollection($import, $filePath, $disk = null, $readerType = null) { - /** @var \Prologue\Alerts\AlertsMessageBag $instance */ - return $instance->getConfig(); + /** @var \Maatwebsite\Excel\Excel $instance */ + return $instance->toCollection($import, $filePath, $disk, $readerType); } /** - * Get the keys present in the message bag. + * * - * @return array + * @param \Illuminate\Contracts\Queue\ShouldQueue $import + * @param string|\Symfony\Component\HttpFoundation\File\UploadedFile $filePath + * @param string|null $disk + * @param string $readerType + * @return \Illuminate\Foundation\Bus\PendingDispatch * @static */ - public static function keys() - { //Method inherited from \Illuminate\Support\MessageBag - /** @var \Prologue\Alerts\AlertsMessageBag $instance */ - return $instance->keys(); + public static function queueImport($import, $filePath, $disk = null, $readerType = null) + { + /** @var \Maatwebsite\Excel\Excel $instance */ + return $instance->queueImport($import, $filePath, $disk, $readerType); } /** - * Add a message to the message bag. + * + * + * @param string $concern + * @param callable $handler + * @param string $event + * @static + */ + public static function extend($concern, $handler, $event = 'Maatwebsite\\Excel\\Events\\BeforeWriting') + { + return \Maatwebsite\Excel\Excel::extend($concern, $handler, $event); + } + /** + * When asserting downloaded, stored, queued or imported, use regular expression + * to look for a matching file path. + * + * @return void + * @static + */ + public static function matchByRegex() + { + /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */ + $instance->matchByRegex(); + } + /** + * When asserting downloaded, stored, queued or imported, use regular string + * comparison for matching file path. + * + * @return void + * @static + */ + public static function doNotMatchByRegex() + { + /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */ + $instance->doNotMatchByRegex(); + } + /** + * + * + * @param string $fileName + * @param callable|null $callback + * @static + */ + public static function assertDownloaded($fileName, $callback = null) + { + /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */ + return $instance->assertDownloaded($fileName, $callback); + } + /** + * + * + * @param string $filePath + * @param string|callable|null $disk + * @param callable|null $callback + * @static + */ + public static function assertStored($filePath, $disk = null, $callback = null) + { + /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */ + return $instance->assertStored($filePath, $disk, $callback); + } + /** + * + * + * @param string $filePath + * @param string|callable|null $disk + * @param callable|null $callback + * @static + */ + public static function assertQueued($filePath, $disk = null, $callback = null) + { + /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */ + return $instance->assertQueued($filePath, $disk, $callback); + } + /** + * + * + * @static + */ + public static function assertQueuedWithChain($chain) + { + /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */ + return $instance->assertQueuedWithChain($chain); + } + /** + * + * + * @param string $classname + * @param callable|null $callback + * @static + */ + public static function assertExportedInRaw($classname, $callback = null) + { + /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */ + return $instance->assertExportedInRaw($classname, $callback); + } + /** + * + * + * @param string $filePath + * @param string|callable|null $disk + * @param callable|null $callback + * @static + */ + public static function assertImported($filePath, $disk = null, $callback = null) + { + /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */ + return $instance->assertImported($filePath, $disk, $callback); + } + + } + +} + + namespace Prologue\Alerts\Facades { + /** + * + * + * @method static \Prologue\Alerts\AlertsMessageBag success(string $text) + * @method static \Prologue\Alerts\AlertsMessageBag error(string $text) + * @method static \Prologue\Alerts\AlertsMessageBag warning(string $text) + * @method static \Prologue\Alerts\AlertsMessageBag info(string $text) + */ + class Alert { + /** + * Store the messages in the current session. + * + * @return \Prologue\Alerts\AlertsMessageBag + * @static + */ + public static function flash() + { + /** @var \Prologue\Alerts\AlertsMessageBag $instance */ + return $instance->flash(); + } + /** + * Deletes all messages. + * + * @param bool $withSession + * @return \Prologue\Alerts\AlertsMessageBag + * @static + */ + public static function flush($withSession = true) + { + /** @var \Prologue\Alerts\AlertsMessageBag $instance */ + return $instance->flush($withSession); + } + /** + * Checks to see if any messages exist. + * + * @param null $key A specific level you wish to check for. + * @return bool + * @static + */ + public static function has($level = null) + { + /** @var \Prologue\Alerts\AlertsMessageBag $instance */ + return $instance->has($level); + } + /** + * Get the number of messages in the message bag. + * + * @param null $level A specific level name you wish to count. + * @return int + * @static + */ + public static function count($level = null) + { + /** @var \Prologue\Alerts\AlertsMessageBag $instance */ + return $instance->count($level); + } + /** + * Returns the alert levels from the config. + * + * @return array + * @static + */ + public static function getLevels() + { + /** @var \Prologue\Alerts\AlertsMessageBag $instance */ + return $instance->getLevels(); + } + /** + * Returns the Illuminate Session Store. + * + * @return \Illuminate\Session\Store + * @static + */ + public static function getSession() + { + /** @var \Prologue\Alerts\AlertsMessageBag $instance */ + return $instance->getSession(); + } + /** + * Returns the Illuminate Config Repository. + * + * @return \Illuminate\Config\Repository + * @static + */ + public static function getConfig() + { + /** @var \Prologue\Alerts\AlertsMessageBag $instance */ + return $instance->getConfig(); + } + /** + * Get the keys present in the message bag. + * + * @return array + * @static + */ + public static function keys() + { //Method inherited from \Illuminate\Support\MessageBag + /** @var \Prologue\Alerts\AlertsMessageBag $instance */ + return $instance->keys(); + } + /** + * Add a message to the message bag. * * @param string $key * @param string $message @@ -19453,172 +20207,6 @@ public static function toJson($options = 0) } -} - - namespace Orangehill\Iseed\Facades { - /** - * - * - */ - class Iseed { - /** - * - * - * @static - */ - public static function readStubFile($file) - { - /** @var \Orangehill\Iseed\Iseed $instance */ - return $instance->readStubFile($file); - } - /** - * Generates a seed file. - * - * @param string $table - * @param string $prefix - * @param string $suffix - * @param string $database - * @param int $max - * @param string $prerunEvent - * @param string $postunEvent - * @return bool - * @throws Orangehill\Iseed\TableNotFoundException - * @static - */ - public static function generateSeed($table, $prefix = null, $suffix = null, $database = null, $max = 0, $chunkSize = 0, $exclude = null, $prerunEvent = null, $postrunEvent = null, $dumpAuto = true, $indexed = true, $orderBy = null, $direction = 'ASC') - { - /** @var \Orangehill\Iseed\Iseed $instance */ - return $instance->generateSeed($table, $prefix, $suffix, $database, $max, $chunkSize, $exclude, $prerunEvent, $postrunEvent, $dumpAuto, $indexed, $orderBy, $direction); - } - /** - * Get a seed folder path - * - * @return string - * @static - */ - public static function getSeedPath() - { - /** @var \Orangehill\Iseed\Iseed $instance */ - return $instance->getSeedPath(); - } - /** - * Get the Data - * - * @param string $table - * @return Array - * @static - */ - public static function getData($table, $max, $exclude = null, $orderBy = null, $direction = 'ASC') - { - /** @var \Orangehill\Iseed\Iseed $instance */ - return $instance->getData($table, $max, $exclude, $orderBy, $direction); - } - /** - * Repacks data read from the database - * - * @param array|object $data - * @return array - * @static - */ - public static function repackSeedData($data) - { - /** @var \Orangehill\Iseed\Iseed $instance */ - return $instance->repackSeedData($data); - } - /** - * Checks if a database table exists - * - * @param string $table - * @return boolean - * @static - */ - public static function hasTable($table) - { - /** @var \Orangehill\Iseed\Iseed $instance */ - return $instance->hasTable($table); - } - /** - * Generates a seed class name (also used as a filename) - * - * @param string $table - * @param string $prefix - * @param string $suffix - * @return string - * @static - */ - public static function generateClassName($table, $prefix = null, $suffix = null) - { - /** @var \Orangehill\Iseed\Iseed $instance */ - return $instance->generateClassName($table, $prefix, $suffix); - } - /** - * Get the path to the stub file. - * - * @return string - * @static - */ - public static function getStubPath() - { - /** @var \Orangehill\Iseed\Iseed $instance */ - return $instance->getStubPath(); - } - /** - * Populate the place-holders in the seed stub. - * - * @param string $class - * @param string $stub - * @param string $table - * @param string $data - * @param int $chunkSize - * @param string $prerunEvent - * @param string $postunEvent - * @return string - * @static - */ - public static function populateStub($class, $stub, $table, $data, $chunkSize = null, $prerunEvent = null, $postrunEvent = null, $indexed = true) - { - /** @var \Orangehill\Iseed\Iseed $instance */ - return $instance->populateStub($class, $stub, $table, $data, $chunkSize, $prerunEvent, $postrunEvent, $indexed); - } - /** - * Create the full path name to the seed file. - * - * @param string $name - * @param string $path - * @return string - * @static - */ - public static function getPath($name, $path) - { - /** @var \Orangehill\Iseed\Iseed $instance */ - return $instance->getPath($name, $path); - } - /** - * Cleans the iSeed section - * - * @return bool - * @static - */ - public static function cleanSection() - { - /** @var \Orangehill\Iseed\Iseed $instance */ - return $instance->cleanSection(); - } - /** - * Updates the DatabaseSeeder file's run method (kudoz to: https://github.com/JeffreyWay/Laravel-4-Generators) - * - * @param string $className - * @return bool - * @static - */ - public static function updateDatabaseSeederRunMethod($className) - { - /** @var \Orangehill\Iseed\Iseed $instance */ - return $instance->updateDatabaseSeederRunMethod($className); - } - - } - } namespace Illuminate\Http { @@ -19861,7 +20449,7 @@ public static function where($column, $operator = null, $value = null, $boolean * @param mixed $operator * @param mixed $value * @param string $boolean - * @return \Illuminate\Database\Eloquent\Model|static + * @return \Illuminate\Database\Eloquent\Model|static|null * @static */ public static function firstWhere($column, $operator = null, $value = null, $boolean = 'and') @@ -20093,6 +20681,20 @@ public static function value($column) return $instance->value($column); } + /** + * Get a single column's value from the first result of the query or throw an exception. + * + * @param string|\Illuminate\Database\Query\Expression $column + * @return mixed + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException + * @static + */ + public static function valueOrFail($column) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->valueOrFail($column); + } + /** * Execute the query as a "select" statement. * @@ -20191,6 +20793,22 @@ public static function simplePaginate($perPage = null, $columns = [], $pageName return $instance->simplePaginate($perPage, $columns, $pageName, $page); } + /** + * Paginate the given query into a cursor paginator. + * + * @param int|null $perPage + * @param array $columns + * @param string $cursorName + * @param \Illuminate\Pagination\Cursor|string|null $cursor + * @return \Illuminate\Contracts\Pagination\CursorPaginator + * @static + */ + public static function cursorPaginate($perPage = null, $columns = [], $cursorName = 'cursor', $cursor = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->cursorPaginate($perPage, $columns, $cursorName, $cursor); + } + /** * Save a new model and return the instance. * @@ -20283,6 +20901,19 @@ public static function without($relations) return $instance->without($relations); } + /** + * Set the relationships that should be eager loaded while removing any previously added eager loading specifications. + * + * @param mixed $relations + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function withOnly($relations) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->withOnly($relations); + } + /** * Create a new instance of the model being queried. * @@ -20446,6 +21077,18 @@ public static function hasGlobalMacro($name) return \Illuminate\Database\Eloquent\Builder::hasGlobalMacro($name); } + /** + * Clone the Eloquent query builder. + * + * @return static + * @static + */ + public static function clone() + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->clone(); + } + /** * Add a relationship count / exists condition to the query. * @@ -20695,6 +21338,131 @@ public static function orWhereDoesntHaveMorph($relation, $types, $callback = nul return $instance->orWhereDoesntHaveMorph($relation, $types, $callback); } + /** + * Add a basic where clause to a relationship query. + * + * @param string $relation + * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column + * @param mixed $operator + * @param mixed $value + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function whereRelation($relation, $column, $operator = null, $value = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->whereRelation($relation, $column, $operator, $value); + } + + /** + * Add an "or where" clause to a relationship query. + * + * @param string $relation + * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column + * @param mixed $operator + * @param mixed $value + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orWhereRelation($relation, $column, $operator = null, $value = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orWhereRelation($relation, $column, $operator, $value); + } + + /** + * Add a polymorphic relationship condition to the query with a where clause. + * + * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param string|array $types + * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column + * @param mixed $operator + * @param mixed $value + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function whereMorphRelation($relation, $types, $column, $operator = null, $value = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->whereMorphRelation($relation, $types, $column, $operator, $value); + } + + /** + * Add a polymorphic relationship condition to the query with an "or where" clause. + * + * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param string|array $types + * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column + * @param mixed $operator + * @param mixed $value + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orWhereMorphRelation($relation, $types, $column, $operator = null, $value = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orWhereMorphRelation($relation, $types, $column, $operator, $value); + } + + /** + * Add a morph-to relationship condition to the query. + * + * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Model|string $model + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function whereMorphedTo($relation, $model, $boolean = 'and') + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->whereMorphedTo($relation, $model, $boolean); + } + + /** + * Add a morph-to relationship condition to the query with an "or where" clause. + * + * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation + * @param \Illuminate\Database\Eloquent\Model|string $model + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orWhereMorphedTo($relation, $model) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orWhereMorphedTo($relation, $model); + } + + /** + * Add a "belongs to" relationship where clause to the query. + * + * @param \Illuminate\Database\Eloquent\Model $related + * @param string $relationship + * @param string $boolean + * @return \Illuminate\Database\Eloquent\Builder|static + * @throws \Exception + * @static + */ + public static function whereBelongsTo($related, $relationshipName = null, $boolean = 'and') + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->whereBelongsTo($related, $relationshipName, $boolean); + } + + /** + * Add an "BelongsTo" relationship with an "or where" clause to the query. + * + * @param \Illuminate\Database\Eloquent\Model $related + * @param string $relationship + * @return \Illuminate\Database\Eloquent\Builder|static + * @throws \Exception + * @static + */ + public static function orWhereBelongsTo($related, $relationshipName = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orWhereBelongsTo($related, $relationshipName); + } + /** * Add subselect queries to include an aggregate value for a relationship. * @@ -20779,6 +21547,19 @@ public static function withAvg($relation, $column) return $instance->withAvg($relation, $column); } + /** + * Add subselect queries to include the existence of related models. + * + * @param string|array $relation + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function withExists($relation) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->withExists($relation); + } + /** * Merge the where constraints from another query to the current query. * @@ -20838,6 +21619,7 @@ public static function chunkMap($callback, $count = 1000) * @param callable $callback * @param int $count * @return bool + * @throws \RuntimeException * @static */ public static function each($callback, $count = 1000) @@ -20883,6 +21665,7 @@ public static function eachById($callback, $count = 1000, $column = null, $alias * * @param int $chunkSize * @return \Illuminate\Support\LazyCollection + * @throws \InvalidArgumentException * @static */ public static function lazy($chunkSize = 1000) @@ -20898,6 +21681,7 @@ public static function lazy($chunkSize = 1000) * @param string|null $column * @param string|null $alias * @return \Illuminate\Support\LazyCollection + * @throws \InvalidArgumentException * @static */ public static function lazyById($chunkSize = 1000, $column = null, $alias = null) @@ -20935,40 +21719,40 @@ public static function baseSole($columns = []) } /** - * Apply the callback's query changes if the given "value" is true. + * Pass the query to a given callback. * - * @param mixed $value * @param callable $callback - * @param callable|null $default - * @return mixed|$this + * @return $this|mixed * @static */ - public static function when($value, $callback, $default = null) + public static function tap($callback) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->when($value, $callback, $default); + return $instance->tap($callback); } /** - * Pass the query to a given callback. + * Apply the callback if the given "value" is truthy. * + * @param mixed $value * @param callable $callback - * @return \Illuminate\Database\Eloquent\Builder|static + * @param callable|null $default + * @return $this|mixed * @static */ - public static function tap($callback) + public static function when($value, $callback, $default = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->tap($callback); + return $instance->when($value, $callback, $default); } /** - * Apply the callback's query changes if the given "value" is false. + * Apply the callback if the given "value" is falsy. * * @param mixed $value * @param callable $callback * @param callable|null $default - * @return mixed|$this + * @return $this|mixed * @static */ public static function unless($value, $callback, $default = null) @@ -20993,7 +21777,7 @@ public static function select($columns = []) /** * Add a subselect expression to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|string $query + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder|string $query * @param string $as * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException @@ -21064,6 +21848,7 @@ public static function addSelect($column) /** * Force the query to only return distinct results. * + * @param mixed $distinct * @return \Illuminate\Database\Query\Builder * @static */ @@ -21496,7 +22281,7 @@ public static function whereNull($columns, $boolean = 'and', $not = false) /** * Add an "or where null" clause to the query. * - * @param string $column + * @param string|array $column * @return \Illuminate\Database\Query\Builder * @static */ @@ -22159,7 +22944,7 @@ public static function orHavingRaw($sql, $bindings = []) /** * Add an "order by" clause to the query. * - * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Query\Expression|string $column + * @param \Closure|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder|\Illuminate\Database\Query\Expression|string $column * @param string $direction * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException @@ -22174,7 +22959,7 @@ public static function orderBy($column, $direction = 'asc') /** * Add a descending "order by" clause to the query. * - * @param string $column + * @param \Closure|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder|\Illuminate\Database\Query\Expression|string $column * @return \Illuminate\Database\Query\Builder * @static */ @@ -22310,7 +23095,7 @@ public static function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id' /** * Remove all existing orders and optionally add a new order. * - * @param string|null $column + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Query\Expression|string|null $column * @param string $direction * @return \Illuminate\Database\Query\Builder * @static @@ -22385,6 +23170,31 @@ public static function sharedLock() return $instance->sharedLock(); } + /** + * Register a closure to be invoked before the query is executed. + * + * @param callable $callback + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function beforeQuery($callback) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->beforeQuery($callback); + } + + /** + * Invoke the "before query" modification callbacks. + * + * @return void + * @static + */ + public static function applyBeforeQueryCallbacks() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + $instance->applyBeforeQueryCallbacks(); + } + /** * Get the SQL representation of the query. * @@ -22789,18 +23599,6 @@ public static function useWritePdo() return $instance->useWritePdo(); } - /** - * Clone the query. - * - * @return static - * @static - */ - public static function clone() - { - /** @var \Illuminate\Database\Query\Builder $instance */ - return $instance->clone(); - } - /** * Clone the query without the given properties. * @@ -22920,8 +23718,8 @@ class Widget extends \Backpack\CRUD\app\Library\Widget {} class Gravatar extends \Creativeorange\Gravatar\Facades\Gravatar {} class Flare extends \Facade\Ignition\Facades\Flare {} class Image extends \Intervention\Image\Facades\Image {} + class Excel extends \Maatwebsite\Excel\Facades\Excel {} class Alert extends \Prologue\Alerts\Facades\Alert {} - class Iseed extends \Orangehill\Iseed\Facades\Iseed {} } diff --git a/_ide_helper_models.php b/_ide_helper_models.php new file mode 100644 index 0000000..de99b5b --- /dev/null +++ b/_ide_helper_models.php @@ -0,0 +1,246 @@ + + */ + + +namespace App\Models{ +/** + * App\Models\Datamap + * + * @property-read \Illuminate\Database\Eloquent\Collection|\Stats4sd\KoboLink\Models\Xlsform[] $xlsforms + * @property-read int|null $xlsforms_count + * @method static \Illuminate\Database\Eloquent\Builder|Datamap newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Datamap newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Datamap query() + */ + class Datamap extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\User + * + * @property int $id + * @property string $name + * @property string $email + * @property \Illuminate\Support\Carbon|null $email_verified_at + * @property string $password + * @property string|null $remember_token + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property string|null $kobo_username + * @property-read \Illuminate\Notifications\DatabaseNotificationCollection|\Illuminate\Notifications\DatabaseNotification[] $notifications + * @property-read int|null $notifications_count + * @property-read \Illuminate\Database\Eloquent\Collection|\Spatie\Permission\Models\Permission[] $permissions + * @property-read int|null $permissions_count + * @property-read \Illuminate\Database\Eloquent\Collection|\Spatie\Permission\Models\Role[] $roles + * @property-read int|null $roles_count + * @method static \Database\Factories\UserFactory factory(...$parameters) + * @method static \Illuminate\Database\Eloquent\Builder|User newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|User newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|User permission($permissions) + * @method static \Illuminate\Database\Eloquent\Builder|User query() + * @method static \Illuminate\Database\Eloquent\Builder|User role($roles, $guard = null) + * @method static \Illuminate\Database\Eloquent\Builder|User whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|User whereEmail($value) + * @method static \Illuminate\Database\Eloquent\Builder|User whereEmailVerifiedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|User whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|User whereKoboUsername($value) + * @method static \Illuminate\Database\Eloquent\Builder|User whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|User wherePassword($value) + * @method static \Illuminate\Database\Eloquent\Builder|User whereRememberToken($value) + * @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value) + */ + class User extends \Eloquent {} +} + +namespace Stats4sd\KoboLink\Models{ +/** + * Stats4sd\KoboLink\Models\Datamap + * + * @property-read \Illuminate\Database\Eloquent\Collection|\Stats4sd\KoboLink\Models\Xlsform[] $xlsforms + * @property-read int|null $xlsforms_count + * @method static \Illuminate\Database\Eloquent\Builder|Datamap newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Datamap newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Datamap query() + */ + class Datamap extends \Eloquent {} +} + +namespace Stats4sd\KoboLink\Models{ +/** + * Stats4sd\KoboLink\Models\Invite + * + * @property-read \App\Models\User $inviter + * @property-read \Stats4sd\KoboLink\Models\Team $team + * @method static \Illuminate\Database\Eloquent\Builder|Invite newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Invite newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Invite query() + */ + class Invite extends \Eloquent {} +} + +namespace Stats4sd\KoboLink\Models{ +/** + * Stats4sd\KoboLink\Models\Submission + * + * @property int $id + * @property int $team_xlsform_id + * @property string $uuid + * @property string $submitted_at + * @property string|null $submitted_by + * @property array $content + * @property array|null $errors + * @property int $processed + * @property array|null $entries + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \Stats4sd\KoboLink\Models\TeamXlsform $teamXlsform + * @method static \Illuminate\Database\Eloquent\Builder|Submission newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Submission newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Submission query() + * @method static \Illuminate\Database\Eloquent\Builder|Submission whereContent($value) + * @method static \Illuminate\Database\Eloquent\Builder|Submission whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Submission whereEntries($value) + * @method static \Illuminate\Database\Eloquent\Builder|Submission whereErrors($value) + * @method static \Illuminate\Database\Eloquent\Builder|Submission whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Submission whereProcessed($value) + * @method static \Illuminate\Database\Eloquent\Builder|Submission whereSubmittedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Submission whereSubmittedBy($value) + * @method static \Illuminate\Database\Eloquent\Builder|Submission whereTeamXlsformId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Submission whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Submission whereUuid($value) + */ + class Submission extends \Eloquent {} +} + +namespace Stats4sd\KoboLink\Models{ +/** + * Stats4sd\KoboLink\Models\Team + * + * @property int $id + * @property int $creator_id + * @property string $name + * @property string $slug + * @property string $description + * @property int $status + * @property string|null $avatar + * @property string|null $deleted_at + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\User[] $admins + * @property-read int|null $admins_count + * @property-read \App\Models\User $creator + * @property-read \Illuminate\Database\Eloquent\Collection|\Stats4sd\KoboLink\Models\Invite[] $invites + * @property-read int|null $invites_count + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\User[] $members + * @property-read int|null $members_count + * @property-read \Illuminate\Database\Eloquent\Collection|\Stats4sd\KoboLink\Models\TeamXlsform[] $teamXlsforms + * @property-read int|null $team_xlsforms_count + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\User[] $users + * @property-read int|null $users_count + * @property-read \Illuminate\Database\Eloquent\Collection|\Stats4sd\KoboLink\Models\Xlsform[] $xlsforms + * @property-read int|null $xlsforms_count + * @method static \Illuminate\Database\Eloquent\Builder|Team newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Team newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Team query() + * @method static \Illuminate\Database\Eloquent\Builder|Team whereAvatar($value) + * @method static \Illuminate\Database\Eloquent\Builder|Team whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Team whereCreatorId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Team whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Team whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|Team whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Team whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|Team whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|Team whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|Team whereUpdatedAt($value) + */ + class Team extends \Eloquent {} +} + +namespace Stats4sd\KoboLink\Models{ +/** + * Stats4sd\KoboLink\Models\TeamXlsform + * + * @property int $id + * @property int $team_id + * @property int $xlsform_id + * @property string|null $kobo_id The unique ID of the form on Kobotools. If null, the form has not yet been pushed to Kobo. + * @property string|null $kobo_version_id current or most recently deployed version on Kobotools. If null, the form has not yet been deployed on Kobo. + * @property string|null $is_active is the form active on Kobotools? + * @property string|null $enketo_url url to the enketo version - pulled from Kobotools + * @property int $processing Is the form currently being processed by a Kobo Job? + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read int $records + * @property-read string $title + * @property-read \Illuminate\Database\Eloquent\Collection|\Stats4sd\KoboLink\Models\Submission[] $submissions + * @property-read int|null $submissions_count + * @property-read \Stats4sd\KoboLink\Models\Team $team + * @property-read \Stats4sd\KoboLink\Models\Xlsform $xlsform + * @method static \Illuminate\Database\Eloquent\Builder|TeamXlsform newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|TeamXlsform newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|TeamXlsform query() + * @method static \Illuminate\Database\Eloquent\Builder|TeamXlsform whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|TeamXlsform whereEnketoUrl($value) + * @method static \Illuminate\Database\Eloquent\Builder|TeamXlsform whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TeamXlsform whereIsActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|TeamXlsform whereKoboId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TeamXlsform whereKoboVersionId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TeamXlsform whereProcessing($value) + * @method static \Illuminate\Database\Eloquent\Builder|TeamXlsform whereTeamId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TeamXlsform whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|TeamXlsform whereXlsformId($value) + */ + class TeamXlsform extends \Eloquent {} +} + +namespace Stats4sd\KoboLink\Models{ +/** + * Stats4sd\KoboLink\Models\Xlsform + * + * @property int $id + * @property string $title + * @property string $xlsfile + * @property string|null $description + * @property array|null $media links to stored files that should be added as media attachments to the ODK form + * @property array|null $csv_lookups information to enable mysql tables or views to be converted to csv files and added as additional media attachments to the ODK form + * @property string|null $available Available to all users? If false, the form is only available to testers or admins. + * @property int|null $private_team_id + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property string|null $deleted_at + * @property-read \Illuminate\Database\Eloquent\Collection|\Stats4sd\KoboLink\Models\Datamap[] $datamaps + * @property-read int|null $datamaps_count + * @property-read \Stats4sd\KoboLink\Models\Team|null $privateTeam + * @property-read \Illuminate\Database\Eloquent\Collection|\Stats4sd\KoboLink\Models\Submission[] $submissions + * @property-read int|null $submissions_count + * @property-read \Illuminate\Database\Eloquent\Collection|\Stats4sd\KoboLink\Models\TeamXlsform[] $teamXlsform + * @property-read int|null $team_xlsform_count + * @property-read \Illuminate\Database\Eloquent\Collection|\Stats4sd\KoboLink\Models\Team[] $teams + * @property-read int|null $teams_count + * @method static \Illuminate\Database\Eloquent\Builder|Xlsform newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Xlsform newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Xlsform query() + * @method static \Illuminate\Database\Eloquent\Builder|Xlsform whereAvailable($value) + * @method static \Illuminate\Database\Eloquent\Builder|Xlsform whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Xlsform whereCsvLookups($value) + * @method static \Illuminate\Database\Eloquent\Builder|Xlsform whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Xlsform whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|Xlsform whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Xlsform whereMedia($value) + * @method static \Illuminate\Database\Eloquent\Builder|Xlsform wherePrivateTeamId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Xlsform whereTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|Xlsform whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Xlsform whereXlsfile($value) + */ + class Xlsform extends \Eloquent {} +} + diff --git a/composer.json b/composer.json index 0be5aa8..6080ca6 100644 --- a/composer.json +++ b/composer.json @@ -16,10 +16,9 @@ } ], "require": { - "php": "^7.4|^8.0", + "php": "^8.0", "ext-json": "*", "backpack/crud": "^4.1", - "backpack/revise-operation": "^1.0", "intervention/image": "^2.5", "maatwebsite/excel": "^3.1", "spatie/laravel-package-tools": "^1.4.3" diff --git a/config/kobo-link.php b/config/kobo-link.php index 955b161..bebcd85 100644 --- a/config/kobo-link.php +++ b/config/kobo-link.php @@ -2,15 +2,14 @@ return [ - 'echo' => false, - 'models' => [ - 'xlsform' => '\\Stats4sd\\KoboLink\\Models\\Xlsform', - 'teamxlsform' => '\\Stats4sd\\KoboLink\\Models\\TeamXlsform', - 'submission' => '\\Stats4sd\\KoboLink\\Models\\Submission', - 'datamap' => '\\Stats4sd\\KoboLink\\Models\\Datamap', - 'user' => '\\App\\Models\\User', - ], + /** + * Enter the fully-qualified path to the class that contains the scripts used to process incoming ODK submissions + * See Stats4sd\KoboLink\Services\DatamapService::class for a basic example + */ + 'data_processing_class' => env('DATA_PROCESSING_CLASS', 'Stats4sd\KoboLink\Services\DatamapService::class'), + + 'echo' => false, /** * Configuration for the link to KoBoToolbox @@ -25,10 +24,6 @@ /** The url for the legacy API. This is still required for some functionality. */ 'old_endpoint' => env('KOBO_OLD_ENDPOINT', 'https://kc.kobotoolbox.org'), - - // TODO: Check and remove Kobo account token - 'token' => env('KOBO_TOKEN', ''), - /** * Username and password for the main platform account * The platform requires a 'primary' user account on the KoboToolbox server to manage deployments of ODK forms. @@ -46,7 +41,7 @@ 'storage_disk' => config('filesystems.default'), ], - 'kobomedia' => [ + 'media' => [ 'storage_disk' => config('filesystems.default'), ] ]; diff --git a/database/migrations/create_kobo_link_tables.php.stub b/database/migrations/create_kobo_link_tables.php.stub index b65bd63..b1c2846 100644 --- a/database/migrations/create_kobo_link_tables.php.stub +++ b/database/migrations/create_kobo_link_tables.php.stub @@ -16,6 +16,21 @@ class CreateKoboLinkTables extends Migration $table->string('kobo_username')->nullable(); }); + /** + * Creates table to store teams (should be moved to seperate package eventually!) + */ + Schema::create('teams', function (Blueprint $table) { + $table->id(); + $table->foreignId('creator_id'); + $table->string('name')->unique(); + $table->string('slug')->unique(); + $table->text('description'); + $table->tinyInteger('status'); + $table->string('avatar')->nullable(); + $table->softDeletes($column = 'deleted_at', $precision = 0); + $table->timestamps(); + }); + /** * Table to store ODK forms managed through the platform */ @@ -63,6 +78,22 @@ class CreateKoboLinkTables extends Migration $table->json('entries')->nullable(); $table->timestamps(); }); + + /** + * Table to store all data maps + */ + Schema::create('datamaps', function (Blueprint $table) { + $table->string('id')->primary(); + $table->string('title'); + $table->timestamps(); + }); + + Schema::create('datamap_xlsform', function (Blueprint $table) { + $table->id(); + $table->string('datamap_id'); + $table->foreignId('xlsform_id'); + $table->timestamps(); + }); } public function down() diff --git a/resources/views/crud/buttons/xlsforms/archive.blade.php b/resources/views/crud/buttons/xlsforms/archive.blade.php index 9d8c002..b086840 100644 --- a/resources/views/crud/buttons/xlsforms/archive.blade.php +++ b/resources/views/crud/buttons/xlsforms/archive.blade.php @@ -14,9 +14,9 @@ function archiveForm(button) { // ask for confirmation before deleting an item // e.preventDefault(); - var button = $(button); - var route = button.attr('data-route'); - var row = $("#crudTable a[data-route='"+route+"']").closest('tr'); + button = $(button); + const route = button.attr('data-route'); + const row = $("#crudTable a[data-route='" + route + "']").closest('tr'); $.ajax({ url: route, @@ -25,7 +25,7 @@ function archiveForm(button) { console.log(result); new Noty({ type: "info", - text: "Archive Request Sent to Kobotoolbox" + text: "Archive Request Sent to KoboToolBox" }).show(); }, error: function(result) { diff --git a/routes/backpack/kobolink.php b/routes/backpack/kobolink.php index 273f34b..4a2a6f0 100644 --- a/routes/backpack/kobolink.php +++ b/routes/backpack/kobolink.php @@ -1,23 +1,31 @@ config('backpack.base.route_prefix', 'admin'), 'middleware' => array_merge( (array) config('backpack.base.web_middleware', 'web'), (array) config('backpack.base.middleware_key', 'admin'), ), - 'namespace' => 'Stats4sd\KoboLink\Http\Controllers\Admin', ], function () { - Route::crud('xlsform', 'XlsformCrudController'); - Route::crud('submission', 'SubmissionCrudController'); - Route::crud('teamxlsform', 'TeamXlsformCrudController'); + Route::crud('xlsform', XlsformCrudController::class); + Route::crud('submission', SubmissionCrudController::class); + Route::crud('teamxlsform', TeamXlsformCrudController::class); + Route::crud('team', TeamCrudController::class); + // XLS Form <--> KoBoToolbox handling - Route::post('teamxlsform/{form}/deploytokobo', 'TeamXlsformCrudController@deployToKobo'); - Route::post('teamxlsform/{form}/syncdata', 'TeamXlsformCrudController@syncData'); - Route::post('teamxlsform/{form}/archive', 'TeamXlsformCrudController@archiveOnKobo'); - Route::post('teamxlsform/{form}/csvgenerate', 'TeamXlsformCrudController@regenerateCsvFileAttachments'); - Route::get('teamxlsform/{form}/downloadsubmissions', 'TeamXlsformCrudController@downloadSubmissions')->name('team_xlsforms.submissions'); + Route::post('teamxlsform/{form}/deploytokobo', [TeamXlsformCrudController::class, 'deployToKobo']); + Route::post('teamxlsform/{form}/syncdata', [TeamXlsformCrudController::class, 'syncData']); + Route::post('teamxlsform/{form}/archive', [TeamXlsformCrudController::class, 'archiveOnKobo']); + Route::post('teamxlsform/{form}/csvgenerate', [TeamXlsformCrudController::class, 'regenerateCsvFileAttachments']); + Route::get('teamxlsform/{form}/downloadsubmissions', [TeamXlsformCrudController::class, 'downloadSubmissions'])->name('team_xlsforms.submissions'); - Route::post('submission/{submission}/reprocess', 'SubmissionCrudController@reprocessSubmission'); + Route::post('submission/{submission}/reprocess', [SubmissionCrudController::class, 'reprocessSubmission']); }); + + diff --git a/src/Events/KoboArchiveRequestReturnedError.php b/src/Events/KoboArchiveRequestReturnedError.php index 57d057b..0b430b0 100644 --- a/src/Events/KoboArchiveRequestReturnedError.php +++ b/src/Events/KoboArchiveRequestReturnedError.php @@ -3,13 +3,13 @@ namespace Stats4sd\KoboLink\Events; ; +use App\Models\TeamXlsform; use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; -use Stats4SD\KoboLink\Models\TeamXlsform; class KoboArchiveRequestReturnedError implements ShouldBroadcast { @@ -17,33 +17,28 @@ class KoboArchiveRequestReturnedError implements ShouldBroadcast use InteractsWithSockets; use SerializesModels; - public $user; - public TeamXlsform $form; - public string $errorType; - public string $errorMessage; - /** * Create a new event instance. * @return void */ - public function __construct(TeamXlsform $form, string $errorType, string $errorMessage, $user = null) + public function __construct( + public TeamXlsform $form, + public string $errorType, + public string $errorMessage, + public mixed $user = null + ) { - // - $this->user = $user; - $this->form = $form; - $this->errorType = $errorType; - $this->errorMessage = $errorMessage; } /** * Get the channels the event should broadcast on. * - * @return \Illuminate\Broadcasting\Channel + * @return Channel */ public function broadcastOn(): Channel { - if ($this->user) { - return new PrivateChannel("App.Models.User.{$this->user->id}"); - } + $channel = $this->user?->id ?? 'admin'; + + return new PrivateChannel("App.Models.User.{$channel}"); } } diff --git a/src/Events/KoboArchiveRequestReturnedSuccess.php b/src/Events/KoboArchiveRequestReturnedSuccess.php index 8e1d5a3..b7b0ffd 100644 --- a/src/Events/KoboArchiveRequestReturnedSuccess.php +++ b/src/Events/KoboArchiveRequestReturnedSuccess.php @@ -3,13 +3,14 @@ namespace Stats4sd\KoboLink\Events; ; + +use App\Models\TeamXlsform; use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; -use Stats4sd\KoboLink\Models\TeamXlsform; class KoboArchiveRequestReturnedSuccess implements ShouldBroadcast { @@ -17,19 +18,14 @@ class KoboArchiveRequestReturnedSuccess implements ShouldBroadcast use InteractsWithSockets; use SerializesModels; - public $user; - public TeamXlsform $form; - /** * Create a new event instance. * @param $user * @param TeamXlsform $form * @return void */ - public function __construct(TeamXlsform $form, $user = null) + public function __construct(public TeamXlsform $form, public $user) { - $this->user = $user; - $this->form = $form; } /** @@ -38,8 +34,8 @@ public function __construct(TeamXlsform $form, $user = null) */ public function broadcastOn(): Channel { - if ($this->user) { - return new PrivateChannel("App.Models.User.{$this->user->id}"); - } + $channel = $this->user?->id ?? 'admin'; + + return new PrivateChannel("App.Models.User.{$channel}"); } } diff --git a/src/Events/KoboDeploymentReturnedError.php b/src/Events/KoboDeploymentReturnedError.php index d6392fc..8d7651b 100644 --- a/src/Events/KoboDeploymentReturnedError.php +++ b/src/Events/KoboDeploymentReturnedError.php @@ -3,12 +3,14 @@ namespace Stats4sd\KoboLink\Events; ; + +use App\Models\TeamXlsform; +use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; -use Stats4sd\KoboLink\Models\TeamXlsform; class KoboDeploymentReturnedError implements ShouldBroadcast { @@ -16,11 +18,6 @@ class KoboDeploymentReturnedError implements ShouldBroadcast use InteractsWithSockets; use SerializesModels; - public $user; - public $form; - public $errorType; - public $errorMessage; - /** * Create a new event instance. * @param $user @@ -29,24 +26,20 @@ class KoboDeploymentReturnedError implements ShouldBroadcast * @param String $errorMessage * @return void */ - public function __construct(TeamXlsform $form, $errorType, $errorMessage, $user = null) + public function __construct(public TeamXlsform $form, public string $errorType, public string $errorMessage, public $user = null) { - // - $this->user = $user; - $this->form = $form; - $this->errorType = $errorType; - $this->errorMessage = $errorMessage; } + /** * Get the channels the event should broadcast on. * - * @return \Illuminate\Broadcasting\Channel + * @return Channel */ public function broadcastOn() { - if ($this->user) { - return new PrivateChannel("App.Models.User.{$this->user->id}"); - } + $channel = $this->user?->id ?? 'admin'; + + return new PrivateChannel("App.Models.User.{$channel}"); } } diff --git a/src/Events/KoboDeploymentReturnedSuccess.php b/src/Events/KoboDeploymentReturnedSuccess.php index 3c95186..ade0b91 100644 --- a/src/Events/KoboDeploymentReturnedSuccess.php +++ b/src/Events/KoboDeploymentReturnedSuccess.php @@ -3,13 +3,14 @@ namespace Stats4sd\KoboLink\Events; ; + +use App\Models\TeamXlsform; use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; -use Stats4sd\KoboLink\Models\TeamXlsform; class KoboDeploymentReturnedSuccess implements ShouldBroadcast { @@ -17,17 +18,12 @@ class KoboDeploymentReturnedSuccess implements ShouldBroadcast use InteractsWithSockets; use SerializesModels; - public $user; - public TeamXlsform $form; - /** * Create a new event instance. * @return void */ - public function __construct(TeamXlsform $form, $user = null) + public function __construct(public TeamXlsform $form, public mixed $user = null) { - $this->user = $user; - $this->form = $form; } /** @@ -36,8 +32,8 @@ public function __construct(TeamXlsform $form, $user = null) */ public function broadcastOn(): Channel { - if ($this->user) { - return new PrivateChannel("App.Models.User.{$this->user->id}"); - } + $channel = $this->user?->id ?? 'admin'; + + return new PrivateChannel("App.Models.User.{$channel}"); } } diff --git a/src/Events/KoboGetDataReturnedError.php b/src/Events/KoboGetDataReturnedError.php index 2d48088..796ccd0 100644 --- a/src/Events/KoboGetDataReturnedError.php +++ b/src/Events/KoboGetDataReturnedError.php @@ -3,13 +3,14 @@ namespace Stats4sd\KoboLink\Events; ; + +use App\Models\TeamXlsform; use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; -use Stats4sd\KoboLink\Models\TeamXlsform; class KoboGetDataReturnedError implements ShouldBroadcast { @@ -17,20 +18,13 @@ class KoboGetDataReturnedError implements ShouldBroadcast use InteractsWithSockets; use SerializesModels; - public $user; - public TeamXlsform $form; - public String $response; - /** * Create a new event instance. * * @return void */ - public function __construct(TeamXlsform $form, String $response, $user = null) + public function __construct(public TeamXlsform $form, public string $response, public mixed $user = null) { - $this->user = $user; - $this->form = $form; - $this->response = $response; } /** @@ -39,8 +33,8 @@ public function __construct(TeamXlsform $form, String $response, $user = null) */ public function broadcastOn(): Channel { - if ($this->user) { - return new PrivateChannel("App.Models.User.{$this->user->id}"); - } + $channel = $this->user?->id ?? 'admin'; + + return new PrivateChannel("App.Models.User.{$channel}"); } } diff --git a/src/Events/KoboGetDataReturnedSuccess.php b/src/Events/KoboGetDataReturnedSuccess.php index b2eb678..68d58ff 100644 --- a/src/Events/KoboGetDataReturnedSuccess.php +++ b/src/Events/KoboGetDataReturnedSuccess.php @@ -3,13 +3,14 @@ namespace Stats4sd\KoboLink\Events; ; + +use App\Models\TeamXlsform; use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; -use Stats4sd\KoboLink\Models\TeamXlsform; class KoboGetDataReturnedSuccess implements ShouldBroadcast { @@ -17,21 +18,14 @@ class KoboGetDataReturnedSuccess implements ShouldBroadcast use InteractsWithSockets; use SerializesModels; - public $user; - public TeamXlsform $form; - public int $count; - /** * Create a new event instance. - * @param $user * @param TeamXlsform $form - * @return void + * @param int $count + * @param null $user */ - public function __construct(TeamXlsform $form, int $count, $user = null) + public function __construct(public TeamXlsform $form, public int $count, public mixed $user = null) { - $this->user = $user; - $this->form = $form; - $this->count = $count; } /** @@ -40,8 +34,8 @@ public function __construct(TeamXlsform $form, int $count, $user = null) */ public function broadcastOn(): Channel { - if ($this->user) { - return new PrivateChannel("App.Models.User.{$this->user->id}"); - } + $channel = $this->user?->id ?? 'admin'; + + return new PrivateChannel("App.Models.User.{$channel}"); } } diff --git a/src/Events/KoboUploadReturnedError.php b/src/Events/KoboUploadReturnedError.php index ee612b4..59ca300 100644 --- a/src/Events/KoboUploadReturnedError.php +++ b/src/Events/KoboUploadReturnedError.php @@ -2,13 +2,13 @@ namespace Stats4sd\KoboLink\Events; +use App\Models\TeamXlsform; use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; -use Stats4sd\KoboLink\Models\TeamXlsform; class KoboUploadReturnedError implements ShouldBroadcast { @@ -16,25 +16,16 @@ class KoboUploadReturnedError implements ShouldBroadcast use InteractsWithSockets; use SerializesModels; - public $user; - public TeamXlsform $form; - public string $errorType; - public string $errorMessage; - /** * Create a new event instance * - * @param $user * @param TeamXlsform $form * @param String $errorType * @param String $errorMessage + * @param mixed $user */ - public function __construct(TeamXlsform $form, string $errorType, string $errorMessage, $user = null) + public function __construct(public TeamXlsform $form, public string $errorType, public string $errorMessage, public mixed $user = null) { - $this->user = $user; - $this->form = $form; - $this->errorType = $errorType; - $this->errorMessage = $errorMessage; } /** @@ -43,8 +34,8 @@ public function __construct(TeamXlsform $form, string $errorType, string $errorM */ public function broadcastOn(): Channel { - if ($this->user) { - return new PrivateChannel("App.Models.User.{$this->user->id}"); - } + $channel = $this->user?->id ?? 'admin'; + + return new PrivateChannel("App.Models.User.{$channel}"); } } diff --git a/src/Events/KoboUploadReturnedSuccess.php b/src/Events/KoboUploadReturnedSuccess.php index 57dbd02..8c70ef1 100644 --- a/src/Events/KoboUploadReturnedSuccess.php +++ b/src/Events/KoboUploadReturnedSuccess.php @@ -3,13 +3,14 @@ namespace Stats4sd\KoboLink\Events; ; + +use App\Models\TeamXlsform; use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\PrivateChannel; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; -use Stats4sd\KoboLink\Models\TeamXlsform; class KoboUploadReturnedSuccess implements ShouldBroadcast { @@ -17,19 +18,13 @@ class KoboUploadReturnedSuccess implements ShouldBroadcast use InteractsWithSockets; use SerializesModels; - public $user; - public $form; - /** * Create a new event instance. - * @param $user * @param TeamXlsform $form - * @return void + * @param mixed $user */ - public function __construct(TeamXlsform $form, $user = null) + public function __construct(public TeamXlsform $form, public mixed $user = null) { - $this->user = $user; - $this->form = $form; } /** @@ -38,8 +33,8 @@ public function __construct(TeamXlsform $form, $user = null) */ public function broadcastOn(): Channel { - if ($this->user) { - return new PrivateChannel("App.Models.User.{$this->user->id}"); - } + $channel = $this->user?->id ?? 'admin'; + + return new PrivateChannel("App.Models.User.{$channel}"); } } diff --git a/src/Events/NewDataVariableSpotted.php b/src/Events/NewDataVariableSpotted.php index d5ee274..a2e2c65 100644 --- a/src/Events/NewDataVariableSpotted.php +++ b/src/Events/NewDataVariableSpotted.php @@ -12,16 +12,12 @@ class NewDataVariableSpotted use InteractsWithSockets; use SerializesModels; - public string $variableName; - /** * Create a new event instance. * * @return void */ - public function __construct(String $variableName) + public function __construct(public String $variableName) { - // - $this->variableName = $variableName; } } diff --git a/src/Exports/FormSubmissionsExport.php b/src/Exports/FormSubmissionsExport.php index 695f3b7..495bb09 100644 --- a/src/Exports/FormSubmissionsExport.php +++ b/src/Exports/FormSubmissionsExport.php @@ -4,11 +4,11 @@ namespace Stats4sd\KoboLink\Exports; use \Maatwebsite\Excel\Concerns\FromCollection; +use App\Models\TeamXlsform; use Illuminate\Support\Collection; use Maatwebsite\Excel\Concerns\Exportable; use Maatwebsite\Excel\Concerns\ShouldAutoSize; use Maatwebsite\Excel\Concerns\WithHeadings; -use Stats4sd\KoboLink\Models\TeamXlsform; class FormSubmissionsExport implements FromCollection, WithHeadings, ShouldAutoSize { diff --git a/src/Http/Controllers/Admin/SubmissionCrudController.php b/src/Http/Controllers/Admin/SubmissionCrudController.php index 3aadf18..c66e7b7 100644 --- a/src/Http/Controllers/Admin/SubmissionCrudController.php +++ b/src/Http/Controllers/Admin/SubmissionCrudController.php @@ -3,34 +3,41 @@ namespace Stats4sd\KoboLink\Http\Controllers\Admin; -use \Stats4sd\KoboLink\Jobs\ProcessSubmission; -use \Stats4sd\KoboLink\Models\Submission; +use App\Models\Submission; +use App\Models\TeamXlsform; use Backpack\CRUD\app\Http\Controllers\CrudController; +use Backpack\CRUD\app\Http\Controllers\Operations\ListOperation; +use Backpack\CRUD\app\Http\Controllers\Operations\ShowOperation; use Backpack\CRUD\app\Http\Controllers\Operations\UpdateOperation; +use Backpack\CRUD\app\Library\CrudPanel\CrudPanel; use Backpack\CRUD\app\Library\CrudPanel\CrudPanelFacade as CRUD; -use Backpack\ReviseOperation\ReviseOperation; +use Exception; +use Illuminate\Contracts\Foundation\Application; +use Illuminate\Http\RedirectResponse; +use Illuminate\Routing\Redirector; use Illuminate\Support\Str; -use Stats4sd\KoboLink\Models\TeamXlsform; -use Venturecraft\Revisionable\Revision; +use JsonException; +use Stats4sd\KoboLink\Jobs\ProcessSubmission; /** * Class SubmissionCrudController * @package App\Http\Controllers\Admin - * @property-read \Backpack\CRUD\app\Library\CrudPanel\CrudPanel $crud + * @property-read CrudPanel $crud */ class SubmissionCrudController extends CrudController { - use \Backpack\CRUD\app\Http\Controllers\Operations\ListOperation; - use \Backpack\CRUD\app\Http\Controllers\Operations\ShowOperation; + use ListOperation; + use ShowOperation; use UpdateOperation; - //use ReviseOperation; + /** * Configure the CrudPanel object. Apply settings to all operations. * * @return void + * @throws Exception */ - public function setup() + public function setup(): void { CRUD::setModel(Submission::class); CRUD::setRoute(config('backpack.base.route_prefix') . '/submission'); @@ -43,7 +50,7 @@ public function setup() * @see https://backpackforlaravel.com/docs/crud-operation-list-entries * @return void */ - protected function setupListOperation() + protected function setupListOperation(): void { CRUD::column('teamXlsform')->label('XLS Form')->type('relationship')->attribute('title'); CRUD::column('id')->label('Submission ID
(from Kobo)'); @@ -74,12 +81,14 @@ protected function setupListOperation() ->view('kobo-link::crud.buttons.submissions.reprocess'); } - public function setupShowOperation() + public function setupShowOperation(): void { $this->setupListOperation(); - CRUD::column('content')->type('closure')->function(function ($entry) { - $content = json_decode($entry->content, true); + CRUD::column('content')->type('closure')->function(/** + * @throws JsonException + */ function ($entry) { + $content = json_decode($entry->content, true, 512, JSON_THROW_ON_ERROR); $output = ' @@ -92,7 +101,7 @@ public function setupShowOperation() foreach ($content as $key => $value) { if (is_array($value)) { - $value = json_encode($value); + $value = json_encode($value, JSON_THROW_ON_ERROR); } $output .= ' @@ -109,9 +118,12 @@ public function setupShowOperation() }); } - public function setupUpdateOperation() + /** + * @throws JsonException + */ + public function setupUpdateOperation(): void { - $content = json_decode(CRUD::getCurrentEntry()->content, true); + $content = json_decode(CRUD::getCurrentEntry()->content, true, 512, JSON_THROW_ON_ERROR); CRUD::setTitle('Edit Submission with ID: ' . $content['_id']); @@ -127,17 +139,16 @@ public function setupUpdateOperation() 'formhub/uuid', ]; - - foreach ($content as $key => $value) { // TODO: fix hack to quietly ignore arrays / repeat groups... if (is_array($value)) { - $value = json_encode($value); + $value = json_encode($value, JSON_THROW_ON_ERROR); } + // Do not allow immutable variables to be edited; - if (in_array($key, $immutable) || Str::startsWith($key, '_')) { + if (in_array($key, $immutable, true) || Str::startsWith($key, '_')) { continue; } @@ -148,11 +159,14 @@ public function setupUpdateOperation() } } - /** Totally override default update functionality */ - public function update() + /** Totally override default update functionality + * @throws JsonException + */ + public function update(): Redirector|Application|RedirectResponse { $submission = CRUD::getCurrentEntry(); - $content = json_decode($submission->content, true); + + $content = json_decode($submission->content, true, 512, JSON_THROW_ON_ERROR); $request = $this->crud->getStrippedSaveRequest(); @@ -176,45 +190,14 @@ public function update() } } - $submission->content = json_encode($content); + $submission->content = json_encode($content, JSON_THROW_ON_ERROR); $submission->save(); return redirect(CRUD::getRoute()); } - public function reprocessSubmission(Submission $submission) + public function reprocessSubmission(Submission $submission): void { ProcessSubmission::dispatchSync($submission, auth()->user()); } - - //overwrite the restore revision (to avoid doubling the json_encode on content...) - public function restoreRevision($id) - { - $this->crud->hasAccessOrFail('revise'); - - $revisionId = \Request::input('revision_id', false); - if (! $revisionId) { - abort(500, 'Can\'t restore revision without revision_id'); - } else { - $entry = $this->crud->getEntryWithoutFakes($id); - $revision = Revision::findOrFail($revisionId); - - // Update the revisioned field with the old value - if ($revision->key === "content") { - $content = json_decode(json_decode($revision->old_value, true), true); - - $entry->content = json_encode($content); - $entry->save(); - } else { - $entry->update([$revision->key => $revision->old_value]); - } - - $this->data['entry'] = $this->crud->getEntry($id); - $this->data['crud'] = $this->crud; - $this->data['revisions'] = $this->crud->getRevisionsForEntry($id); // Reload revisions as they have changed - - // Rebuild the revision timeline HTML and return it to the AJAX call - return view($this->crud->get('revise.timelineView') ?? 'revise-operation::revision_timeline', $this->data); - } - } } diff --git a/src/Http/Controllers/Admin/TeamCrudController.php b/src/Http/Controllers/Admin/TeamCrudController.php new file mode 100644 index 0000000..d8f94ae --- /dev/null +++ b/src/Http/Controllers/Admin/TeamCrudController.php @@ -0,0 +1,111 @@ +type('image') + ->disk(config('filesystems.default')); + CRUD::column('name'); + CRUD::column('status') + ->type('boolean') + ->label('active?'); + CRUD::column('users_count') + ->label('No. of users') + ->suffix(' users'); + } + + /** + * Define what happens when the Create operation is loaded. + * + * @see https://backpackforlaravel.com/docs/crud-operation-create + * @return void + */ + protected function setupCreateOperation(): void + { + CRUD::setValidation(TeamRequest::class); + + CRUD::field('name')->label('Enter the team name'); + CRUD::field('description')->type('textarea')->label('Enter a brief description of the team'); + CRUD::field('avatar')->type('image')->crop(true)->upload(true)->disk('team')->label('Upload a cover image for the main team page'); + + CRUD::field('creator_id')->type('hidden')->value(Auth::user()->id); + CRUD::field('status')->type('hidden')->value(1); + } + + /** + * Define what happens when the Update operation is loaded. + * + * @see https://backpackforlaravel.com/docs/crud-operation-update + * @return void + */ + protected function setupUpdateOperation(): void + { + CRUD::setValidation(TeamRequest::class); + + CRUD::field('name')->label('Enter the team name'); + CRUD::field('description')->type('textarea')->label('Enter a brief description of the team'); + CRUD::field('avatar')->type('image')->crop(true)->upload(true)->disk('team')->label('Upload a cover image for the main team page'); + + CRUD::field('status')->type('radio')->label(' + Is this case study active currently?')->options([ + 1 => 'Active', + 0 => 'Inactive', + ]); + } + +// public function show(Team $id): Factory|View|Application +// { +// // TODO: create teams.show view or view component... (component better to let devs drop it into where-ever on each platform) +// return view('teams.show', ['team' => $id]); +// } + + public function getForms($team) + { + return $team->team_xlsforms->toJson(); + } +} diff --git a/src/Http/Controllers/Admin/TeamXlsformCrudController.php b/src/Http/Controllers/Admin/TeamXlsformCrudController.php index d37183f..ed52240 100644 --- a/src/Http/Controllers/Admin/TeamXlsformCrudController.php +++ b/src/Http/Controllers/Admin/TeamXlsformCrudController.php @@ -3,23 +3,28 @@ namespace Stats4sd\KoboLink\Http\Controllers\Admin; +use App\Models\TeamXlsform; use Backpack\CRUD\app\Http\Controllers\CrudController; use Backpack\CRUD\app\Http\Controllers\Operations\ListOperation; use Backpack\CRUD\app\Http\Controllers\Operations\ShowOperation; use Backpack\CRUD\app\Http\Controllers\Operations\UpdateOperation; +use Backpack\CRUD\app\Library\CrudPanel\CrudPanel; use Backpack\CRUD\app\Library\CrudPanel\CrudPanelFacade as CRUD; use Backpack\CRUD\app\Library\Widget; use Carbon\Carbon; +use Exception; +use Illuminate\Http\JsonResponse; +use Illuminate\Http\Response; use Stats4sd\KoboLink\Exports\FormSubmissionsExport; use Stats4sd\KoboLink\Jobs\ArchiveKoboForm; use Stats4sd\KoboLink\Jobs\DeployFormToKobo; use Stats4sd\KoboLink\Jobs\GetDataFromKobo; -use Stats4sd\KoboLink\Models\TeamXlsform; +use Symfony\Component\HttpFoundation\BinaryFileResponse; /** * Class XlsformCrudController * @package \Stats4SD\KoboLink\Http\Controllers\Admin - * @property-read \Backpack\CRUD\app\Library\CrudPanel\CrudPanel $crud + * @property-read CrudPanel $crud */ class TeamXlsformCrudController extends CrudController { @@ -27,6 +32,9 @@ class TeamXlsformCrudController extends CrudController use UpdateOperation; use ShowOperation; + /** + * @throws Exception + */ public function setup() { CRUD::setModel(TeamXlsform::class); @@ -58,12 +66,12 @@ protected function setupListOperation() CRUD::column('is_active')->type('boolean')->label('Form active on Kobo?'); } - public function setupUpdateOperation() + public function setupUpdateOperation(): void { CRUD::field('warning')->type('custom_html')->value('
This page is only for site administrators. Be careful modifying any of these properties for forms that are currently live, as it may interfere with ongoing data collection.
'); } - public function setupShowOperation() + public function setupShowOperation(): void { $this->crud->set('show.setFromDb', false); @@ -94,39 +102,39 @@ public function setupShowOperation() ])->to('after_content'); } - public function deployToKobo(TeamXlsform $form) + public function deployToKobo(TeamXlsform $form): JsonResponse { - DeployFormToKobo::dispatch($form, backpack_auth()->user()); + DeployFormToKobo::dispatch($form, auth()->user()); return response()->json([ 'title' => $form->title, - 'user' => backpack_auth()->user()->email, + 'user' => auth()->user()->email, ]); } - public function syncData(TeamXlsform $form) + public function syncData(TeamXlsform $form): string { - GetDataFromKobo::dispatchSync($form, backpack_auth()->user()); + GetDataFromKobo::dispatchSync($form, auth()->user()); $submissions = $form->submissions; return $submissions->toJson(); } - public function downloadSubmissions(TeamXlsform $form) + public function downloadSubmissions(TeamXlsform $form): Response|BinaryFileResponse { $date = Carbon::now()->toDateTimeString(); return (new FormSubmissionsExport)->forForm($form)->download($form->title . '-raw-submissions-' . $date . ".xlsx"); } - public function archiveOnKobo(TeamXlsform $form) + public function archiveOnKobo(TeamXlsform $form): JsonResponse { - ArchiveKoboForm::dispatch($form, backpack_auth()->user()); + ArchiveKoboForm::dispatch($form, auth()->user()); return response()->json([ 'title' => $form->title, - 'user' => backpack_auth()->user()->email, + 'user' => auth()->user()->email, ]); } } diff --git a/src/Http/Controllers/Admin/XlsformCrudController.php b/src/Http/Controllers/Admin/XlsformCrudController.php index 235c0c2..49399cf 100644 --- a/src/Http/Controllers/Admin/XlsformCrudController.php +++ b/src/Http/Controllers/Admin/XlsformCrudController.php @@ -3,6 +3,7 @@ namespace Stats4sd\KoboLink\Http\Controllers\Admin; +use App\Models\Xlsform; use Backpack\CRUD\app\Http\Controllers\CrudController; use Backpack\CRUD\app\Http\Controllers\Operations\CreateOperation; use Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation; @@ -12,7 +13,6 @@ use Backpack\CRUD\app\Library\CrudPanel\CrudPanelFacade as CRUD; use Illuminate\Support\Facades\Storage; use Stats4sd\KoboLink\Http\Requests\XlsformRequest; -use Stats4sd\KoboLink\Models\Xlsform; /** * Class XlsformCrudController @@ -27,7 +27,7 @@ class XlsformCrudController extends CrudController use DeleteOperation; use ShowOperation; - public function setup() + public function setup(): void { CRUD::setModel(Xlsform::class); CRUD::setRoute(config('backpack.base.route_prefix') . '/xlsform'); @@ -40,7 +40,7 @@ public function setup() * @see https://backpackforlaravel.com/docs/crud-operation-list-entries * @return void */ - protected function setupListOperation() + protected function setupListOperation(): void { CRUD::column('title'); CRUD::column('xlsfile')->type('upload')->wrapper([ @@ -66,7 +66,7 @@ protected function setupListOperation() * @see https://backpackforlaravel.com/docs/crud-operation-create * @return void */ - protected function setupCreateOperation() + protected function setupCreateOperation(): void { CRUD::setValidation(XlsformRequest::class); @@ -100,7 +100,7 @@ protected function setupCreateOperation()

For example, if the form requires a csv lookup file called "households.csv", and the data is available in a view called "households_csv", then you should an entry like this: CSV files can optionally be filtered to only show team-specific records. Use this for data that each team can customise themselves, or for data that should be filtered to a team\'s local context. For this to work, the MySQL table or view must have a "team_id" field to filter by. @@ -115,12 +115,12 @@ protected function setupCreateOperation() * @see https://backpackforlaravel.com/docs/crud-operation-update * @return void */ - protected function setupUpdateOperation() + protected function setupUpdateOperation(): void { $this->setupCreateOperation(); } - public function setupShowOperation() + public function setupShowOperation(): void { $this->crud->set('show.setFromDb', false); diff --git a/src/Http/Requests/TeamRequest.php b/src/Http/Requests/TeamRequest.php new file mode 100644 index 0000000..9dd129e --- /dev/null +++ b/src/Http/Requests/TeamRequest.php @@ -0,0 +1,34 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'name' => ['required','max:255'], + 'creator_id' => ['sometimes', 'required', 'exists:users,id'], + 'description' => ['required', 'string', 'max:65000'], + 'avatar' => ['sometimes'], + ]; + } +} diff --git a/src/Http/Requests/XlsformRequest.php b/src/Http/Requests/XlsformRequest.php index 3fb17b9..d9beeba 100644 --- a/src/Http/Requests/XlsformRequest.php +++ b/src/Http/Requests/XlsformRequest.php @@ -3,7 +3,9 @@ namespace Stats4sd\KoboLink\Http\Requests; -class XlsformRequest extends \Illuminate\Foundation\Http\FormRequest +use Illuminate\Foundation\Http\FormRequest; + +class XlsformRequest extends FormRequest { /** * Determine if the user is authorized to make this request. @@ -33,28 +35,4 @@ public function rules(): array 'available' => ['boolean'], ]; } - - /** - * Get the validation attributes that apply to the request. - * - * @return array - */ - public function attributes(): array - { - return [ - // - ]; - } - - /** - * Get the validation messages that apply to the request. - * - * @return array - */ - public function messages(): array - { - return [ - // - ]; - } } diff --git a/src/Jobs/ArchiveKoboForm.php b/src/Jobs/ArchiveKoboForm.php index d282119..ce30daa 100644 --- a/src/Jobs/ArchiveKoboForm.php +++ b/src/Jobs/ArchiveKoboForm.php @@ -2,15 +2,17 @@ namespace Stats4sd\KoboLink\Jobs; +use App\Models\TeamXlsform; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; +use Illuminate\Http\Client\RequestException; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Http; +use Log; use Stats4sd\KoboLink\Events\KoboArchiveRequestReturnedError; use Stats4sd\KoboLink\Events\KoboArchiveRequestReturnedSuccess; -use Stats4sd\KoboLink\Models\TeamXlsForm; class ArchiveKoboForm implements ShouldQueue { @@ -19,42 +21,42 @@ class ArchiveKoboForm implements ShouldQueue use Queueable; use SerializesModels; - public $user; - public TeamXlsForm $form; - /** * Create a new job instance. - * @param $user, -- should be an instance of your app's User model - * @param TeamXlsForm $form + * @param $user , -- should be an instance of your app's User model + * @param TeamXlsform $form * @return void */ - public function __construct(TeamXlsForm $form, $user = null) + public function __construct(public TeamXlsform $form, public $user = null) { - // - $this->user = $user; - $this->form = $form; } /** * Execute the job. * * @return void + * @throws RequestException */ - public function handle() + public function handle(): void { - $response = Http::withBasicAuth(config('kobo-link.kobo.username'), config('kobo-link.kobo.password')) - ->withHeaders(['Accept' => 'application/json']) - ->patch(config('kobo-link.kobo.endpoint_v2').'/assets/'.$this->form->kobo_id.'/deployment/', [ - 'active' => false, - ])->throw(function ($response, $e) { - event(new KoboArchiveRequestReturnedError($this->form, 'Archive Error', json_encode($response->json(), $this->user))); - }); + Http::withBasicAuth(config('kobo-link.kobo.username'), config('kobo-link.kobo.password')) + ->withHeaders(['Accept' => 'application/json']) + ->patch(config('kobo-link.kobo.endpoint_v2') . '/assets/' . $this->form->kobo_id . '/deployment/', [ + 'active' => false, + ])->throw(function ($response) { + Log::error('Archive Error'); + Log::error($response->json()); + if ($this->user) { + event(new KoboArchiveRequestReturnedError($this->form, 'Archive Error', json_encode($response->json(), JSON_THROW_ON_ERROR), $this->user)); + } + }); $this->form->update([ 'enketo_url' => null, 'is_active' => false, ]); + event(new KoboArchiveRequestReturnedSuccess($this->form, $this->user)); } } diff --git a/src/Jobs/CheckKoboUpload.php b/src/Jobs/CheckKoboUpload.php index e914c65..2c18a74 100644 --- a/src/Jobs/CheckKoboUpload.php +++ b/src/Jobs/CheckKoboUpload.php @@ -2,18 +2,20 @@ namespace Stats4sd\KoboLink\Jobs; +use App\Models\TeamXlsform; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; +use Illuminate\Http\Client\RequestException; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Bus; use Illuminate\Support\Facades\Http; +use Log; use Stats4sd\KoboLink\Events\KoboUploadReturnedError; use Stats4sd\KoboLink\Events\KoboUploadReturnedSuccess; use Stats4sd\KoboLink\Jobs\MediaFiles\GenerateCsvLookupFiles; use Stats4sd\KoboLink\Jobs\MediaFiles\UploadMediaFileAttachmentsToKoboForm; -use Stats4sd\KoboLink\Models\TeamXlsform; class CheckKoboUpload implements ShouldQueue { @@ -22,10 +24,6 @@ class CheckKoboUpload implements ShouldQueue use Queueable; use SerializesModels; - public $user; - public TeamXlsform $form; - public String $importUid; - public int $tries = 50; public int $maxExceptions = 1; @@ -36,17 +34,15 @@ class CheckKoboUpload implements ShouldQueue * @param String $importUid * @return void */ - public function __construct(TeamXlsform $form, String $importUid, $user = null) + public function __construct(public TeamXlsform $form, public String $importUid, public $user = null) { - $this->user = $user; - $this->form = $form; - $this->importUid = $importUid; } /** * Execute the job. * * @return void + * @throws RequestException */ public function handle() { @@ -63,13 +59,13 @@ public function handle() $importStatus = $importCheck['status']; if ($importStatus === "processing") { - $this->release('5'); + $this->release(5); } // Failed import still returns 200, so check for import status: if ($importStatus === 'error') { - \Log::error("Kobo Upload Error: Type = " . $importCheck['messages']['error_type']); - \Log::error("Error Message = " . $importCheck['messages']['error']); + Log::error("Kobo Upload Error: Type = " . $importCheck['messages']['error_type']); + Log::error("Error Message = " . $importCheck['messages']['error']); event(new KoboUploadReturnedError( $this->form, diff --git a/src/Jobs/DeployFormToKobo.php b/src/Jobs/DeployFormToKobo.php index 67bfb54..05d99ad 100644 --- a/src/Jobs/DeployFormToKobo.php +++ b/src/Jobs/DeployFormToKobo.php @@ -2,13 +2,13 @@ namespace Stats4sd\KoboLink\Jobs; +use App\Models\TeamXlsform; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Http; -use Stats4sd\KoboLink\Models\TeamXlsform; class DeployFormToKobo implements ShouldQueue { @@ -17,26 +17,22 @@ class DeployFormToKobo implements ShouldQueue use Queueable; use SerializesModels; - public $user; - public TeamXlsform $form; - /** * Create a new job instance. * * @return void */ - public function __construct(TeamXlsform $form, $user = null) + public function __construct(public TeamXlsform $form, public $user = null) { - $this->user = $user; - $this->form = $form; } /** * Execute the job. * * @return void + * @throws \Illuminate\Http\Client\RequestException */ - public function handle() + public function handle(): void { //if form is not already on Kobo, create asset... @@ -56,9 +52,7 @@ public function handle() ]); } - - - // Always upload TeamXlsform (in case it is changed) + // Dispatch next job in sequence UploadXlsFormToKobo::dispatch($this->form, $this->user); } } diff --git a/src/Jobs/DeploymentSuccessMessage.php b/src/Jobs/DeploymentSuccessMessage.php index 84603d6..f14915d 100644 --- a/src/Jobs/DeploymentSuccessMessage.php +++ b/src/Jobs/DeploymentSuccessMessage.php @@ -3,13 +3,13 @@ namespace Stats4sd\KoboLink\Jobs; ; +use App\Models\TeamXlsform; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Stats4sd\KoboLink\Events\KoboDeploymentReturnedSuccess; -use Stats4sd\KoboLink\Models\TeamXlsform; class DeploymentSuccessMessage implements ShouldQueue { @@ -18,18 +18,13 @@ class DeploymentSuccessMessage implements ShouldQueue use Queueable; use SerializesModels; - public $user; - public TeamXlsform $form; - /** * Create a new job instance. * * @return void */ - public function __construct(TeamXlsform $form, $user = null) + public function __construct(public TeamXlsform $form, public $user = null) { - $this->user = $user; - $this->form = $form; } /** @@ -37,7 +32,7 @@ public function __construct(TeamXlsform $form, $user = null) * * @return void */ - public function handle() + public function handle(): void { // emit Laravel event event(new KoboDeploymentReturnedSuccess($this->form, $this->user)); diff --git a/src/Jobs/GetDataFromKobo.php b/src/Jobs/GetDataFromKobo.php index 8e8448a..1264b6a 100644 --- a/src/Jobs/GetDataFromKobo.php +++ b/src/Jobs/GetDataFromKobo.php @@ -3,6 +3,8 @@ namespace Stats4sd\KoboLink\Jobs; ; +use App\Models\Submission; +use App\Models\TeamXlsform; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; @@ -11,8 +13,6 @@ use Illuminate\Support\Facades\Http; use Stats4sd\KoboLink\Events\KoboGetDataReturnedError; use Stats4sd\KoboLink\Events\KoboGetDataReturnedSuccess; -use Stats4sd\KoboLink\Models\Submission; -use Stats4sd\KoboLink\Models\TeamXlsform; class GetDataFromKobo implements ShouldQueue { @@ -21,8 +21,6 @@ class GetDataFromKobo implements ShouldQueue use Queueable; use SerializesModels; - public TeamXlsform $form; - public $user; public int $tries = 5; /** @@ -30,18 +28,17 @@ class GetDataFromKobo implements ShouldQueue * * @return void */ - public function __construct(TeamXlsform $form, $user = null) + public function __construct(public TeamXlsform $form, public $user = null) { - $this->user = $user; - $this->form = $form; } /** * Execute the job. * * @return void + * @throws \JsonException */ - public function handle() + public function handle(): void { $response = Http::withBasicAuth(config('kobo-link.kobo.username'), config('kobo-link.kobo.password')) ->withHeaders(['Accept' => 'application/json']) @@ -64,13 +61,13 @@ public function handle() $submissions = Submission::where('team_xlsform_id', '=', $this->form->id)->get(); foreach ($data as $newSubmission) { - if (! in_array($newSubmission['_id'], $submissions->pluck('id')->toArray())) { + if (! in_array($newSubmission['_id'], $submissions->pluck('id')->toArray(), true)) { $submission = new Submission; $submission->id = $newSubmission['_id']; $submission->uuid = $newSubmission['_uuid']; $submission->team_xlsform_id = $this->form->id; - $submission->content = json_encode($newSubmission); + $submission->content = json_encode($newSubmission, JSON_THROW_ON_ERROR); $submission->submitted_at = $newSubmission['_submission_time']; $submission->save(); diff --git a/src/Jobs/ImportAttachmentFromKobo.php b/src/Jobs/ImportAttachmentFromKobo.php index d85a798..83b117a 100644 --- a/src/Jobs/ImportAttachmentFromKobo.php +++ b/src/Jobs/ImportAttachmentFromKobo.php @@ -5,6 +5,7 @@ use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; +use Illuminate\Http\Client\RequestException; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Http; @@ -17,28 +18,22 @@ class ImportAttachmentFromKobo implements ShouldQueue use Queueable; use SerializesModels; - public $name; - - public $submission; - /** * Create a new job instance. * * @return void */ - public function __construct(String $name, array $submission) + public function __construct(public String $name, public array $submission) { - // - $this->name = $name; - $this->submission = $submission; } /** * Execute the job. * * @return void + * @throws RequestException */ - public function handle() + public function handle(): void { // As of June 11 2020, downloadable filename is in the format: // kobo_username/attachments/submission['formhub/uuid']/submission['_uuid']/submission['photo_variable'] @@ -53,6 +48,6 @@ public function handle() ->throw(); // store file in "attachments / _id / name" - Storage::disk(config('kobomedia.storage_disk'))->put($this->submission['_id'].'/'.$this->name, $response); + Storage::disk(config('kobo-link.media.storage_disk'))->put($this->submission['_id'].'/'.$this->name, $response); } } diff --git a/src/Jobs/MediaFiles/UpdateFormCsvFiles.php b/src/Jobs/MediaFiles/UpdateFormCsvFiles.php index 2b331ef..13370f8 100644 --- a/src/Jobs/MediaFiles/UpdateFormCsvFiles.php +++ b/src/Jobs/MediaFiles/UpdateFormCsvFiles.php @@ -12,7 +12,7 @@ /** * Call this class to update the csv lookup files on the passed TeamXlsform. - * This handles calling the right jobs to generate the new csv files from the database and push them up to Kobotoolbox + * This method handles calling the right jobs to generate the new csv files from the database and push them up to Kobotoolbox * @param TeamXlsform $form */ class UpdateFormCsvFiles implements ShouldQueue diff --git a/src/Jobs/MediaFiles/UploadCsvMediaFileAttachmentsToKoboForm.php b/src/Jobs/MediaFiles/UploadCsvMediaFileAttachmentsToKoboForm.php index 36410a3..6924870 100644 --- a/src/Jobs/MediaFiles/UploadCsvMediaFileAttachmentsToKoboForm.php +++ b/src/Jobs/MediaFiles/UploadCsvMediaFileAttachmentsToKoboForm.php @@ -2,6 +2,7 @@ namespace Stats4sd\KoboLink\Jobs\MediaFiles; +use App\Models\TeamXlsform; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; @@ -9,10 +10,9 @@ use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Http; use Illuminate\Support\Str; -use Stats4sd\KoboLink\Models\TeamXlsform; /** - * Version of the uploadMediaFileAttachments job that ONLY handles csv files. All non .csv files are ignored. Use this to avoid replacing lots of large image / multimedia files on Kobotools. + * Version of the uploadMediaFileAttachments job that ONLY handles csv files. All non .csv files are ignored. Use this to avoid replacing lots of large image / multimedia files on Kobotoolbox. */ class UploadCsvMediaFileAttachmentsToKoboForm implements ShouldQueue { diff --git a/src/Jobs/MediaFiles/UploadFileToKoboForm.php b/src/Jobs/MediaFiles/UploadFileToKoboForm.php index 8a768f3..ed80301 100644 --- a/src/Jobs/MediaFiles/UploadFileToKoboForm.php +++ b/src/Jobs/MediaFiles/UploadFileToKoboForm.php @@ -3,6 +3,7 @@ namespace Stats4sd\KoboLink\Jobs\MediaFiles; use Illuminate\Bus\Queueable; + use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; @@ -16,7 +17,7 @@ /** * Uploads an individual file to Kobotoolbox * @param String $media - the path to the media file to upload - * @param Array $koboform - the KoboForm object returned from querying the OLD Kobotoolbox API (kc.kobotoolbox/api/v1) + * @param Array $koboform - the KoboForm object returned from querying the OLD Kobotoolbox API (https://kc.kobotoolbox/api/v1) */ class UploadFileToKoboForm implements ShouldQueue { diff --git a/src/Jobs/MediaFiles/UploadMediaFileAttachmentsToKoboForm.php b/src/Jobs/MediaFiles/UploadMediaFileAttachmentsToKoboForm.php index c5d29b7..f302b0f 100644 --- a/src/Jobs/MediaFiles/UploadMediaFileAttachmentsToKoboForm.php +++ b/src/Jobs/MediaFiles/UploadMediaFileAttachmentsToKoboForm.php @@ -2,13 +2,13 @@ namespace Stats4sd\KoboLink\Jobs\MediaFiles; +use App\Models\TeamXlsform; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Http; -use Stats4sd\KoboLink\Models\TeamXlsform; /** * Job to handle replacing / uploading ALL media files for the passed TeamXlsform. diff --git a/src/Jobs/ProcessSubmission.php b/src/Jobs/ProcessSubmission.php index 5a22f19..e2c788e 100644 --- a/src/Jobs/ProcessSubmission.php +++ b/src/Jobs/ProcessSubmission.php @@ -2,14 +2,12 @@ namespace Stats4sd\KoboLink\Jobs; -use \Stats4sd\KoboLink\Models\Submission; - -; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; +use Stats4sd\KoboLink\Models\Submission; class ProcessSubmission implements ShouldQueue { @@ -18,18 +16,13 @@ class ProcessSubmission implements ShouldQueue use Queueable; use SerializesModels; - private $user; - private Submission $submission; - /** * Create a new job instance. * * @return void */ - public function __construct(Submission $submission, $user = null) + public function __construct(private Submission $submission) { - $this->user = $user; - $this->submission = $submission; } /** diff --git a/src/Jobs/SetKoboFormToActive.php b/src/Jobs/SetKoboFormToActive.php index a590525..86dabaf 100644 --- a/src/Jobs/SetKoboFormToActive.php +++ b/src/Jobs/SetKoboFormToActive.php @@ -3,14 +3,15 @@ namespace Stats4sd\KoboLink\Jobs; ; +use App\Models\TeamXlsform; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; +use Illuminate\Http\Client\RequestException; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Http; use Stats4sd\KoboLink\Events\KoboDeploymentReturnedError; -use Stats4sd\KoboLink\Models\TeamXlsform; class SetKoboFormToActive implements ShouldQueue { @@ -19,8 +20,6 @@ class SetKoboFormToActive implements ShouldQueue use Queueable; use SerializesModels; - public $user; - public TeamXlsform $form; public int $tries = 3; public int $maxExceptions = 1; @@ -30,18 +29,18 @@ class SetKoboFormToActive implements ShouldQueue * @param TeamXlsform $form * @return void */ - public function __construct(TeamXlsform $form, $user = null) + public function __construct(public TeamXlsform $form, public $user = null) { - $this->user = $user; - $this->form = $form; } /** * Execute the job. * * @return void + * @throws RequestException + * @throws \JsonException */ - public function handle() + public function handle(): void { // Deployment already exists, so get new version_id to update deployment @@ -72,11 +71,12 @@ public function handle() ]); } + // on failure, finish processing and send error event; if ($response->failed()) { $this->form->update([ 'processing' => false, ]); - event(new KoboDeploymentReturnedError($this->form, 'Deployment Error', json_encode($response->json()), $this->user)); + event(new KoboDeploymentReturnedError($this->form, 'Deployment Error', json_encode($response->json(), JSON_THROW_ON_ERROR), $this->user)); $this->fail(); } diff --git a/src/Jobs/ShareFormWithUsers.php b/src/Jobs/ShareFormWithUsers.php index ee2deb0..0170690 100644 --- a/src/Jobs/ShareFormWithUsers.php +++ b/src/Jobs/ShareFormWithUsers.php @@ -2,13 +2,14 @@ namespace Stats4sd\KoboLink\Jobs; +use App\Models\TeamXlsform; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; +use Illuminate\Http\Client\RequestException; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Http; -use Stats4sd\KoboLink\Models\TeamXlsform; class ShareFormWithUsers implements ShouldQueue { @@ -17,24 +18,22 @@ class ShareFormWithUsers implements ShouldQueue use Queueable; use SerializesModels; - public $form; - /** * Create a new job instance. * * @return void */ - public function __construct(TeamXlsform $form) + public function __construct(public TeamXlsform $form) { - $this->form = $form; } /** * Execute the job. * * @return void + * @throws RequestException */ - public function handle() + public function handle(): void { $members = $this->form->team->users; @@ -43,7 +42,7 @@ public function handle() $permissions = ['change_asset', 'add_submissions', 'change_submissions', 'validate_submissions']; foreach ($members as $member) { - if ($member->kobo_username && $member->kobo_username != "") { + if ($member->kobo_username && $member->kobo_username !== "") { foreach ($permissions as $permission) { $payload[] = [ 'permission' => config('kobo-link.kobo.endpoint_v2').'/permissions/'.$permission.'/', @@ -53,7 +52,7 @@ public function handle() } } - $response = Http::withBasicAuth(config('kobo-link.kobo.username'), config('kobo-link.kobo.password')) + Http::withBasicAuth(config('kobo-link.kobo.username'), config('kobo-link.kobo.password')) ->withHeaders(['Accept' => 'application/json']) ->post(config('kobo-link.kobo.endpoint_v2').'/assets/'.$this->form->kobo_id.'/permission-assignments/bulk/', $payload) ->throw() diff --git a/src/Jobs/ShareFormsWithExistingUsers.php b/src/Jobs/ShareFormsWithExistingUsers.php index a9d56ab..b4dbbc7 100644 --- a/src/Jobs/ShareFormsWithExistingUsers.php +++ b/src/Jobs/ShareFormsWithExistingUsers.php @@ -6,6 +6,7 @@ use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; +use Illuminate\Http\Client\RequestException; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Http; @@ -23,26 +24,24 @@ class ShareFormsWithExistingUsers implements ShouldQueue use SerializesModels; - public $team; - /** * Create a new job instance. - * @param Team $team - should be an instance of your app's Team model + * @param Team $team * @return void */ - public function __construct($team) + public function __construct(public Team $team) { - $this->team = $team; } /** * Execute the job. * * @return void + * @throws RequestException */ - public function handle() + public function handle(): void { - $forms = $this->team->teamXlsForms; + $forms = $this->team->teamXlsforms; $users = $this->team->users; $permissions = ['change_asset', 'add_submissions', 'change_submissions', 'validate_submissions']; @@ -62,7 +61,7 @@ public function handle() } } - $response = Http::withBasicAuth(config('kobo-link.kobo.username'), config('kobo-link.kobo.password')) + Http::withBasicAuth(config('kobo-link.kobo.username'), config('kobo-link.kobo.password')) ->withHeaders(['Accept' => 'application/json']) ->post(config('kobo-link.kobo.endpoint_v2') . '/assets/' . $form->kobo_id . '/permission-assignments/bulk/', $payload) ->throw() diff --git a/src/Jobs/UpdateFormNameOnKobo.php b/src/Jobs/UpdateFormNameOnKobo.php index 9eb50e2..f992edc 100644 --- a/src/Jobs/UpdateFormNameOnKobo.php +++ b/src/Jobs/UpdateFormNameOnKobo.php @@ -2,13 +2,14 @@ namespace Stats4sd\KoboLink\Jobs; +use App\Models\TeamXlsform; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; +use Illuminate\Http\Client\RequestException; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Http; -use Stats4sd\KoboLink\Models\TeamXlsform; class UpdateFormNameOnKobo implements ShouldQueue { @@ -17,26 +18,24 @@ class UpdateFormNameOnKobo implements ShouldQueue use Queueable; use SerializesModels; - public $form; - /** * Create a new job instance. * * @return void */ - public function __construct(TeamXlsform $form) + public function __construct(public TeamXlsform $form) { - $this->form = $form; } /** * Execute the job. * * @return void + * @throws RequestException */ - public function handle() + public function handle(): void { - $response = Http::withBasicAuth(config('kobo-link.kobo.username'), config('kobo-link.kobo.password')) + Http::withBasicAuth(config('kobo-link.kobo.username'), config('kobo-link.kobo.password')) ->withHeaders(["Accept" => "application/json"]) ->patch(config('kobo-link.kobo.endpoint_v2').'/assets/'.$this->form->kobo_id.'/', [ 'name' => $this->form->title, diff --git a/src/Jobs/UploadXlsFormToKobo.php b/src/Jobs/UploadXlsFormToKobo.php index ed6657e..748b8c1 100644 --- a/src/Jobs/UploadXlsFormToKobo.php +++ b/src/Jobs/UploadXlsFormToKobo.php @@ -3,15 +3,17 @@ namespace Stats4sd\KoboLink\Jobs; ; +use App\Models\TeamXlsform; use Illuminate\Bus\Queueable; +use Illuminate\Contracts\Filesystem\FileNotFoundException; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; +use Illuminate\Http\Client\RequestException; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; -use Stats4sd\KoboLink\Models\TeamXlsform; class UploadXlsFormToKobo implements ShouldQueue { @@ -20,29 +22,23 @@ class UploadXlsFormToKobo implements ShouldQueue use Queueable; use SerializesModels; - public $user; - public $form; - /** * Create a new job instance. * * @return void */ - public function __construct(TeamXlsform $form, $user = null) + public function __construct(public TeamXlsform $form, public mixed $user = null) { - $this->user = $user; - $this->form = $form; } /** * Execute the job. * * @return void + * @throws RequestException|FileNotFoundException */ - public function handle() + public function handle(): void { - \Log::info($this->user); - \Log::info($this->form); $response = Http::withBasicAuth(config('kobo-link.kobo.username'), config('kobo-link.kobo.password')) ->withHeaders(["Accept" => "application/json"]) ->attach( @@ -58,10 +54,9 @@ public function handle() ->throw() ->json(); - \Log::info('response'); - \Log::info($response); $importUid = $response['uid']; + // dispatch next step in the process CheckKoboUpload::dispatch($this->form, $importUid, $this->user); } } diff --git a/src/KoboLinkServiceProvider.php b/src/KoboLinkServiceProvider.php index a28b753..cad7ce8 100644 --- a/src/KoboLinkServiceProvider.php +++ b/src/KoboLinkServiceProvider.php @@ -2,10 +2,10 @@ namespace Stats4sd\KoboLink; -use \App\Models\Team; use Spatie\LaravelPackageTools\Package; use Spatie\LaravelPackageTools\PackageServiceProvider; use Stats4sd\KoboLink\Commands\KoboLinkCommand; +use Stats4sd\KoboLink\Models\Team; use Stats4sd\KoboLink\Models\Xlsform; use Stats4sd\KoboLink\Observers\TeamObserver; use Stats4sd\KoboLink\Observers\XlsformObserver; @@ -33,7 +33,7 @@ public function configurePackage(Package $package): void public function bootingPackage() { - XlsForm::observe(XlsformObserver::class); + Xlsform::observe(XlsformObserver::class); Team::observe(TeamObserver::class); } } diff --git a/src/Models/Datamap.php b/src/Models/Datamap.php index fc911df..09645e0 100644 --- a/src/Models/Datamap.php +++ b/src/Models/Datamap.php @@ -36,7 +36,10 @@ public function xlsforms(): BelongsToMany public function process(Submission $submission) { - $this->{$this->id}($submission); + $service = app(config('kobo-link.process_scripts_class')); + + // TODO: figure out why on earth we're using the id to determine the method name!! (or rather - how to do it more logically...) + $service->{$this->id}($submission); } public function removeGroupNames(array $record): array @@ -45,7 +48,7 @@ public function removeGroupNames(array $record): array foreach ($record as $key => $value) { // Keep this as it forms part of the media download url - if ($key == 'formhub/uuid') { + if ($key === 'formhub/uuid') { continue; } diff --git a/src/Models/Invite.php b/src/Models/Invite.php new file mode 100644 index 0000000..d3cde5f --- /dev/null +++ b/src/Models/Invite.php @@ -0,0 +1,48 @@ + 'boolean', + ]; + + protected static function booted(): void + { + static::addGlobalScope('unconfirmed', function (Builder $builder) { + $builder->where('is_confirmed', false); + }); + } + + public function confirm(): bool + { + $this->is_confirmed = 1; + $this->save(); + + return $this->is_confirmed; + } + + public function inviter(): BelongsTo + { + return $this->belongsTo(User::class, 'inviter_id'); + } + + public function team(): BelongsTo + { + return $this->belongsTo(Team::class); + } +} diff --git a/src/Models/Team.php b/src/Models/Team.php new file mode 100644 index 0000000..174f4b9 --- /dev/null +++ b/src/Models/Team.php @@ -0,0 +1,82 @@ +invites()->create([ + 'email' => $email, + 'inviter_id' => auth()->id(), + 'token' => Str::random(24), + ]); + } + } + + public function xlsforms(): BelongsToMany + { + return $this->belongsToMany(Xlsform::class) + ->withPivot([ + 'kobo_id', + 'kobo_version_id', + 'enketo_url', + 'processing', + 'is_active', + ]); + } + + public function teamXlsforms(): HasMany + { + return $this->hasMany(TeamXlsform::class); + } + + public function users(): BelongsToMany + { + return $this->belongsToMany(User::class, 'team_members') + ->withPivot('is_admin'); + } + + public function admins(): BelongsToMany + { + return $this->belongsToMany(User::class, 'team_members') + ->withPivot('is_admin') + ->wherePivot('is_admin', 1); + } + + public function members(): BelongsToMany + { + return $this->belongsToMany(User::class, 'team_members') + ->withPivot('is_admin') + ->wherePivot('is_admin', 0); + } + + // May not need? + public function creator(): BelongsTo + { + return $this->belongsTo(User::class, 'creator_id'); + } + + public function invites(): HasMany + { + return $this->hasMany(Invite::class); + } +} diff --git a/src/Models/TeamXlsform.php b/src/Models/TeamXlsform.php index b41eef5..a43cedd 100644 --- a/src/Models/TeamXlsform.php +++ b/src/Models/TeamXlsform.php @@ -3,7 +3,6 @@ namespace Stats4sd\KoboLink\Models; -use App\Models\Team; use Backpack\CRUD\app\Models\Traits\CrudTrait; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -28,12 +27,12 @@ class TeamXlsform extends \Illuminate\Database\Eloquent\Model |-------------------------------------------------------------------------- */ - public function getTitleAttribute() + public function getTitleAttribute(): string { return $this->team ? $this->team->name.' - '.$this->xlsform->title : ''; } - public function getRecordsAttribute() + public function getRecordsAttribute(): int { return $this->submissions->count(); } diff --git a/src/Models/Traits/HasDataMaps.php b/src/Models/Traits/HasDataMaps.php new file mode 100644 index 0000000..2684b3f --- /dev/null +++ b/src/Models/Traits/HasDataMaps.php @@ -0,0 +1,17 @@ +id); +// +// $submission->processed = true; +// $submission->save(); +// +// } +} diff --git a/src/Models/Xlsform.php b/src/Models/Xlsform.php index f6d0fa9..67e3b68 100644 --- a/src/Models/Xlsform.php +++ b/src/Models/Xlsform.php @@ -3,7 +3,6 @@ namespace Stats4sd\KoboLink\Models; -use \App\Models\Team; use Backpack\CRUD\app\Models\Traits\CrudTrait; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -41,7 +40,7 @@ public function submissions(): HasManyThrough public function datamaps(): BelongsToMany { - return $this->belongsToMany(config('kobo-link.models.datamap')); + return $this->belongsToMany(Datamap::class); } public function privateTeam(): BelongsTo diff --git a/src/Observers/TeamObserver.php b/src/Observers/TeamObserver.php index cda5d1a..66a2a1d 100644 --- a/src/Observers/TeamObserver.php +++ b/src/Observers/TeamObserver.php @@ -3,18 +3,17 @@ namespace Stats4sd\KoboLink\Observers; -use \App\Models\Team; -use Stats4sd\KoboLink\Models\Xlsform; +use App\Models\Xlsform; class TeamObserver { /** - * Handle the xlsform "created" event. + * Handle the xlsform "created" event.f * - * @param Team $team + * @param $team * @return void */ - public function created(Team $team) + public function created($team) { $this->syncTeamWithForms($team); } @@ -22,15 +21,15 @@ public function created(Team $team) /** * Handle the xlsform "updated" event. * - * @param Team $team + * @param $team * @return void */ - public function updated(Team $team) + public function updated($team) { $this->syncTeamWithForms($team); } - public function syncTeamWithForms(Team $team) + public function syncTeamWithForms($team) { $forms = Xlsform::where('available')->get(); $privateForms = Xlsform::where('private_team_id', $team->id)->get(); diff --git a/src/Observers/XlsformObserver.php b/src/Observers/XlsformObserver.php index d773064..6179ed8 100644 --- a/src/Observers/XlsformObserver.php +++ b/src/Observers/XlsformObserver.php @@ -4,7 +4,7 @@ namespace Stats4sd\KoboLink\Observers; use \App\Models\Team; -use \Stats4sd\KoboLink\Models\XlsForm; +use App\Models\XlsForm; class XlsformObserver { diff --git a/src/Rules/KoboUsernameIsValid.php b/src/Rules/KoboUsernameIsValid.php new file mode 100644 index 0000000..10e1303 --- /dev/null +++ b/src/Rules/KoboUsernameIsValid.php @@ -0,0 +1,35 @@ +withHeaders(['Accept' => 'application/json']) + ->get(config('kobo-link.kobo.endpoint_v2') . '/users/' . $value . '/'); + + return $response->ok(); + } + + /** + * Get the validation error message. + * + * @return string + */ + public function message(): string + { + return "That username cannot be found on kf.kobotoolbox.org. Please use an active username. If you do not have a Kobotoolbox account, leave the field empty, or create one at https://kf.kobotoolbox.org."; + } +} diff --git a/src/Services/DatamapService.php b/src/Services/DatamapService.php new file mode 100644 index 0000000..6a37b6a --- /dev/null +++ b/src/Services/DatamapService.php @@ -0,0 +1,30 @@ +entries array to reference the new entries. + * For example, if the submission is a household survey; you may create 1 new App\Models\Household entry and 2 new App\Models\HouseholdMember entries. + * So you should update the $submission->entries property: + * $submission->entries = [ + * Household::class => [$household->id], + * HouseholdMember::class => [$memberOne->id, $memberTwo->id] + * ]; + * + * If the submission processing results in errors, e.g. validation errors, you should add the errors to the $submission->errors array. + * + */ + public function testMap(Submission $submission): void + { + Log::info('submission processed with id = ' . $submission->id); + } +}