diff --git a/.env b/.env index a5f8576..8aae097 100755 --- a/.env +++ b/.env @@ -6,38 +6,55 @@ APP_URL=https://mein.sterntours.test APP_OLD_URL=https://cms-stern-tours.test #APP_URL_V2=https://v2.stern-tours.de -APP_URL_V2=https://v2-sterntours.test +APP_URL_V2=https://v2.sterntours.test #APP_URL_STERN=https://www.sterntours.de APP_URL_STERN=https://sterntours.test +APP_DOMAIN_TLD=test + LOG_CHANNEL=stack -DB_CONNECTION=mysql -DB_HOST=192.168.1.8 -DB_PORT=3306 -DB_DATABASE=cmssso_db1 -DB_USERNAME=kadmin -DB_PASSWORD=KT32vQ7ix +SUCCESS_KEY=f6077389c9ce710e554763a5de02c8ec -DB_CONNECTION_STERN=mysql -DB_HOST_STERN=192.168.1.8 +# Standard Database Connection +DB_CONNECTION=mysql +DB_HOST=global-mysql +DB_PORT=3306 +DB_DATABASE=stern_crm +DB_USERNAME=root +DB_PASSWORD=password + +# STERN Database Connection +DB_HOST_STERN=global-mysql DB_PORT_STERN=3306 -DB_DATABASE_STERN=relaunch1 -DB_USERNAME_STERN=kadmin -DB_PASSWORD_STERN=KT32vQ7ix +DB_DATABASE_STERN=stern_db +DB_USERNAME_STERN=root +DB_PASSWORD_STERN=password + +# Docker Port Forwards +FORWARD_DB_PORT=33064 +FORWARD_DB_PORT_STERN=33065 +FORWARD_REDIS_PORT=6379 +MYSQL_EXTRA_OPTIONS= BROADCAST_DRIVER=log CACHE_DRIVER=file +QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120 -QUEUE_DRIVER=sync -REDIS_HOST=127.0.0.1 +REDIS_HOST=redis REDIS_PASSWORD=null REDIS_PORT=6379 +# Vite Port for Development +VITE_PORT=5173 +# Sail Configuration +WWWGROUP=1000 +WWWUSER=1000 +SAIL_XDEBUG_MODE=off MAIL_BBC=kevin@adametz.media MAIL_FEWO_EMPLOYEE=kevin@adametz.media @@ -45,18 +62,32 @@ MAIL_FEWO_EMPLOYEE=kevin@adametz.media #MAIL_BBC=kontakt@stern-tours.de,thomas.stern@stern-tours.de MAIL_DRIVER=smtp -MAIL_FROM_NAME="Reisebüro STERN TOURS" +MAIL_FROM_NAME="DEV Reisebüro STERN TOURS" +#MAIL_FROM_ADDRESS=dev@adametz.media +#MAIL_HOST=w017e534.kasserver.com +#MAIL_PORT=587 +#MAIL_USERNAME=m0496c96 +#MAIL_PASSWORD=mZtVp7WQcs6DC3hf +#MAIL_ENCRYPTION=null + + +MAIL_FROM_ADDRESS=stern@sterntours.de +MAIL_HOST=zimbra.managedemail.de +MAIL_PORT=587 +MAIL_USERNAME=stern@stern-tours.de +MAIL_PASSWORD=13C!NlecB!Phil4beAxKl +MAIL_ENCRYPTION=TLS + + #MAIL_FROM_ADDRESS=stern@sterntours.de #MAIL_HOST=zimbra.managedemail.de #MAIL_USERNAME=stern@stern-tours.de #MAIL_PASSWORD=13C!NlecB!Phil4beAxKl -MAIL_PORT=587 -MAIL_ENCRYPTION=TLS -MAIL_FROM_ADDRESS=info@mein.sterntours.de -MAIL_HOST=mail.your-server.de -MAIL_USERNAME=info@mein.sterntours.de -MAIL_PASSWORD=B7f8Ojt98v6tMz8W +#MAIL_FROM_ADDRESS=info@mein.sterntours.de +#MAIL_HOST=mail.your-server.de +#MAIL_USERNAME=info@mein.sterntours.de +#MAIL_PASSWORD=B7f8Ojt98v6tMz8W #MAIL_FROM_ADDRESS=stern@stern-tours.de #MAIL_HOST=zimbra.managedemail.de diff --git a/.gitignore b/.gitignore index bf547c7..62510ac 100644 --- a/.gitignore +++ b/.gitignore @@ -25,11 +25,24 @@ Icon Network Trash Folder Temporary Items .apdisk +.idea/ +.claude/ +.cursor/ +.cursorrules/ +.cursorrules.md/ +.cursorrules.md.txt/ +.cursorrules.md.txt.txt/ +.cursorrules.md.txt.txt.txt/ /vendor /node_modules +/storage/app /storage/language /storage/framework /storage/logs /public/vendor -.idea +.idea/ +.vscode/ +_static/ +_work/ +_storage/ diff --git a/.mcp.json b/.mcp.json new file mode 100644 index 0000000..3cceeb6 --- /dev/null +++ b/.mcp.json @@ -0,0 +1,27 @@ +{ + "mcpServers": { + "laravel-boost": { + "command": "php", + "args": [ + "artisan", + "boost:mcp" + ] + }, + "context7": { + "command": "npx", + "args": [ + "-y", + "@upstash/context7-mcp", + "--api-key", + "ctx7sk-119cd4ab-8983-4229-8702-e84c59c34fc9" + ] + }, + "sequential-thinking": { + "command": "npx", + "args": [ + "-y", + "@modelcontextprotocol/server-sequential-thinking" + ] + } + } +} \ No newline at end of file diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php index 6b7dd3e..268fdd2 100644 --- a/.phpstorm.meta.php +++ b/.phpstorm.meta.php @@ -5,1317 +5,2271 @@ namespace PHPSTORM_META { /** * PhpStorm Meta file, to provide autocomplete information for PhpStorm - * Generated on 2020-08-07 13:11:05. * * @author Barry vd. Heuvel * @see https://github.com/barryvdh/laravel-ide-helper */ override(new \Illuminate\Contracts\Container\Container, map([ '' => '@', - 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::class, - 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, - 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::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\Foundation\Mix' => \Illuminate\Foundation\Mix::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, - 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, - 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, - 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, - 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, - 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, - 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::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.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, - 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::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.wipe' => \Illuminate\Database\Console\WipeCommand::class, - 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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.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.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.preset' => \Illuminate\Foundation\Console\PresetCommand::class, - 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::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.restart' => \Illuminate\Queue\Console\RestartCommand::class, - 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::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.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.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, - 'datatables' => \Yajra\DataTables\DataTables::class, - 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, - 'datatables.request' => \Yajra\DataTables\Utilities\Request::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, - 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'dompdf' => \Dompdf\Dompdf::class, - 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'flash' => \Laracasts\Flash\FlashNotifier::class, - 'form' => \Collective\Html\FormBuilder::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'html' => \Collective\Html\HtmlBuilder::class, - 'image' => \Intervention\Image\ImageManager::class, - 'log' => \Illuminate\Log\LogManager::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\DatabaseFailedJobProvider::class, - 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, - 'swift.mailer' => \Swift_Mailer::class, - 'swift.transport' => \Illuminate\Mail\TransportManager::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, - ])); + 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, + 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::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\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::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, + 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, + 'Laravel\Passport\ClientRepository' => \Laravel\Passport\ClientRepository::class, + 'Lcobucci\JWT\Parser' => \Lcobucci\JWT\Token\Parser::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::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, + 'cart' => \Gloudemans\Shoppingcart\Cart::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.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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, + 'datatables' => \Yajra\DataTables\DataTables::class, + 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, + 'datatables.request' => \Yajra\DataTables\Utilities\Request::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, + 'dompdf' => \Dompdf\Dompdf::class, + 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'flash' => \Laracasts\Flash\FlashNotifier::class, + 'form' => \Collective\Html\FormBuilder::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'html' => \Collective\Html\HtmlBuilder::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, + 'pragmarx.google2fa' => \PragmaRX\Google2FALaravel\Google2FA::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::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, + ])); override(\Illuminate\Container\Container::makeWith(0), map([ '' => '@', - 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::class, - 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, - 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::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\Foundation\Mix' => \Illuminate\Foundation\Mix::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, - 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, - 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, - 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, - 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, - 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, - 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::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.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, - 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::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.wipe' => \Illuminate\Database\Console\WipeCommand::class, - 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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.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.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.preset' => \Illuminate\Foundation\Console\PresetCommand::class, - 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::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.restart' => \Illuminate\Queue\Console\RestartCommand::class, - 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::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.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.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, - 'datatables' => \Yajra\DataTables\DataTables::class, - 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, - 'datatables.request' => \Yajra\DataTables\Utilities\Request::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, - 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'dompdf' => \Dompdf\Dompdf::class, - 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'flash' => \Laracasts\Flash\FlashNotifier::class, - 'form' => \Collective\Html\FormBuilder::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'html' => \Collective\Html\HtmlBuilder::class, - 'image' => \Intervention\Image\ImageManager::class, - 'log' => \Illuminate\Log\LogManager::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\DatabaseFailedJobProvider::class, - 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, - 'swift.mailer' => \Swift_Mailer::class, - 'swift.transport' => \Illuminate\Mail\TransportManager::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, - ])); + 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, + 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::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\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::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, + 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, + 'Laravel\Passport\ClientRepository' => \Laravel\Passport\ClientRepository::class, + 'Lcobucci\JWT\Parser' => \Lcobucci\JWT\Token\Parser::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::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, + 'cart' => \Gloudemans\Shoppingcart\Cart::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.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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, + 'datatables' => \Yajra\DataTables\DataTables::class, + 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, + 'datatables.request' => \Yajra\DataTables\Utilities\Request::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, + 'dompdf' => \Dompdf\Dompdf::class, + 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'flash' => \Laracasts\Flash\FlashNotifier::class, + 'form' => \Collective\Html\FormBuilder::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'html' => \Collective\Html\HtmlBuilder::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, + 'pragmarx.google2fa' => \PragmaRX\Google2FALaravel\Google2FA::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::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, + ])); + override(\Illuminate\Contracts\Container\Container::get(0), map([ + '' => '@', + 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, + 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::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\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::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, + 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, + 'Laravel\Passport\ClientRepository' => \Laravel\Passport\ClientRepository::class, + 'Lcobucci\JWT\Parser' => \Lcobucci\JWT\Token\Parser::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::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, + 'cart' => \Gloudemans\Shoppingcart\Cart::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.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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, + 'datatables' => \Yajra\DataTables\DataTables::class, + 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, + 'datatables.request' => \Yajra\DataTables\Utilities\Request::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, + 'dompdf' => \Dompdf\Dompdf::class, + 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'flash' => \Laracasts\Flash\FlashNotifier::class, + 'form' => \Collective\Html\FormBuilder::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'html' => \Collective\Html\HtmlBuilder::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, + 'pragmarx.google2fa' => \PragmaRX\Google2FALaravel\Google2FA::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::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, + ])); override(\Illuminate\Contracts\Container\Container::make(0), map([ '' => '@', - 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::class, - 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, - 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::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\Foundation\Mix' => \Illuminate\Foundation\Mix::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, - 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, - 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, - 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, - 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, - 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, - 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::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.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, - 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::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.wipe' => \Illuminate\Database\Console\WipeCommand::class, - 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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.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.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.preset' => \Illuminate\Foundation\Console\PresetCommand::class, - 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::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.restart' => \Illuminate\Queue\Console\RestartCommand::class, - 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::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.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.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, - 'datatables' => \Yajra\DataTables\DataTables::class, - 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, - 'datatables.request' => \Yajra\DataTables\Utilities\Request::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, - 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'dompdf' => \Dompdf\Dompdf::class, - 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'flash' => \Laracasts\Flash\FlashNotifier::class, - 'form' => \Collective\Html\FormBuilder::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'html' => \Collective\Html\HtmlBuilder::class, - 'image' => \Intervention\Image\ImageManager::class, - 'log' => \Illuminate\Log\LogManager::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\DatabaseFailedJobProvider::class, - 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, - 'swift.mailer' => \Swift_Mailer::class, - 'swift.transport' => \Illuminate\Mail\TransportManager::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, - ])); + 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, + 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::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\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::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, + 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, + 'Laravel\Passport\ClientRepository' => \Laravel\Passport\ClientRepository::class, + 'Lcobucci\JWT\Parser' => \Lcobucci\JWT\Token\Parser::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::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, + 'cart' => \Gloudemans\Shoppingcart\Cart::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.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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, + 'datatables' => \Yajra\DataTables\DataTables::class, + 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, + 'datatables.request' => \Yajra\DataTables\Utilities\Request::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, + 'dompdf' => \Dompdf\Dompdf::class, + 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'flash' => \Laracasts\Flash\FlashNotifier::class, + 'form' => \Collective\Html\FormBuilder::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'html' => \Collective\Html\HtmlBuilder::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, + 'pragmarx.google2fa' => \PragmaRX\Google2FALaravel\Google2FA::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::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, + ])); override(\Illuminate\Contracts\Container\Container::makeWith(0), map([ '' => '@', - 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::class, - 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, - 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::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\Foundation\Mix' => \Illuminate\Foundation\Mix::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, - 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, - 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, - 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, - 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, - 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, - 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::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.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, - 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::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.wipe' => \Illuminate\Database\Console\WipeCommand::class, - 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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.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.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.preset' => \Illuminate\Foundation\Console\PresetCommand::class, - 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::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.restart' => \Illuminate\Queue\Console\RestartCommand::class, - 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::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.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.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, - 'datatables' => \Yajra\DataTables\DataTables::class, - 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, - 'datatables.request' => \Yajra\DataTables\Utilities\Request::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, - 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'dompdf' => \Dompdf\Dompdf::class, - 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'flash' => \Laracasts\Flash\FlashNotifier::class, - 'form' => \Collective\Html\FormBuilder::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'html' => \Collective\Html\HtmlBuilder::class, - 'image' => \Intervention\Image\ImageManager::class, - 'log' => \Illuminate\Log\LogManager::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\DatabaseFailedJobProvider::class, - 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, - 'swift.mailer' => \Swift_Mailer::class, - 'swift.transport' => \Illuminate\Mail\TransportManager::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, - ])); + 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, + 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::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\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::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, + 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, + 'Laravel\Passport\ClientRepository' => \Laravel\Passport\ClientRepository::class, + 'Lcobucci\JWT\Parser' => \Lcobucci\JWT\Token\Parser::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::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, + 'cart' => \Gloudemans\Shoppingcart\Cart::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.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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, + 'datatables' => \Yajra\DataTables\DataTables::class, + 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, + 'datatables.request' => \Yajra\DataTables\Utilities\Request::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, + 'dompdf' => \Dompdf\Dompdf::class, + 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'flash' => \Laracasts\Flash\FlashNotifier::class, + 'form' => \Collective\Html\FormBuilder::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'html' => \Collective\Html\HtmlBuilder::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, + 'pragmarx.google2fa' => \PragmaRX\Google2FALaravel\Google2FA::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::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, + ])); + override(\App::get(0), map([ + '' => '@', + 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, + 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::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\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::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, + 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, + 'Laravel\Passport\ClientRepository' => \Laravel\Passport\ClientRepository::class, + 'Lcobucci\JWT\Parser' => \Lcobucci\JWT\Token\Parser::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::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, + 'cart' => \Gloudemans\Shoppingcart\Cart::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.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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, + 'datatables' => \Yajra\DataTables\DataTables::class, + 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, + 'datatables.request' => \Yajra\DataTables\Utilities\Request::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, + 'dompdf' => \Dompdf\Dompdf::class, + 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'flash' => \Laracasts\Flash\FlashNotifier::class, + 'form' => \Collective\Html\FormBuilder::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'html' => \Collective\Html\HtmlBuilder::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, + 'pragmarx.google2fa' => \PragmaRX\Google2FALaravel\Google2FA::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::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, + ])); override(\App::make(0), map([ '' => '@', - 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::class, - 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, - 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::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\Foundation\Mix' => \Illuminate\Foundation\Mix::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, - 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, - 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, - 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, - 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, - 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, - 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::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.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, - 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::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.wipe' => \Illuminate\Database\Console\WipeCommand::class, - 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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.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.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.preset' => \Illuminate\Foundation\Console\PresetCommand::class, - 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::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.restart' => \Illuminate\Queue\Console\RestartCommand::class, - 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::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.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.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, - 'datatables' => \Yajra\DataTables\DataTables::class, - 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, - 'datatables.request' => \Yajra\DataTables\Utilities\Request::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, - 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'dompdf' => \Dompdf\Dompdf::class, - 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'flash' => \Laracasts\Flash\FlashNotifier::class, - 'form' => \Collective\Html\FormBuilder::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'html' => \Collective\Html\HtmlBuilder::class, - 'image' => \Intervention\Image\ImageManager::class, - 'log' => \Illuminate\Log\LogManager::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\DatabaseFailedJobProvider::class, - 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, - 'swift.mailer' => \Swift_Mailer::class, - 'swift.transport' => \Illuminate\Mail\TransportManager::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, - ])); + 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, + 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::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\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::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, + 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, + 'Laravel\Passport\ClientRepository' => \Laravel\Passport\ClientRepository::class, + 'Lcobucci\JWT\Parser' => \Lcobucci\JWT\Token\Parser::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::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, + 'cart' => \Gloudemans\Shoppingcart\Cart::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.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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, + 'datatables' => \Yajra\DataTables\DataTables::class, + 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, + 'datatables.request' => \Yajra\DataTables\Utilities\Request::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, + 'dompdf' => \Dompdf\Dompdf::class, + 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'flash' => \Laracasts\Flash\FlashNotifier::class, + 'form' => \Collective\Html\FormBuilder::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'html' => \Collective\Html\HtmlBuilder::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, + 'pragmarx.google2fa' => \PragmaRX\Google2FALaravel\Google2FA::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::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, + ])); override(\App::makeWith(0), map([ '' => '@', - 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::class, - 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, - 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::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\Foundation\Mix' => \Illuminate\Foundation\Mix::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, - 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, - 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, - 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, - 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, - 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, - 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::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.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, - 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::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.wipe' => \Illuminate\Database\Console\WipeCommand::class, - 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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.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.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.preset' => \Illuminate\Foundation\Console\PresetCommand::class, - 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::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.restart' => \Illuminate\Queue\Console\RestartCommand::class, - 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::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.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.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, - 'datatables' => \Yajra\DataTables\DataTables::class, - 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, - 'datatables.request' => \Yajra\DataTables\Utilities\Request::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, - 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'dompdf' => \Dompdf\Dompdf::class, - 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'flash' => \Laracasts\Flash\FlashNotifier::class, - 'form' => \Collective\Html\FormBuilder::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'html' => \Collective\Html\HtmlBuilder::class, - 'image' => \Intervention\Image\ImageManager::class, - 'log' => \Illuminate\Log\LogManager::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\DatabaseFailedJobProvider::class, - 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, - 'swift.mailer' => \Swift_Mailer::class, - 'swift.transport' => \Illuminate\Mail\TransportManager::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, - ])); + 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, + 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::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\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::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, + 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, + 'Laravel\Passport\ClientRepository' => \Laravel\Passport\ClientRepository::class, + 'Lcobucci\JWT\Parser' => \Lcobucci\JWT\Token\Parser::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::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, + 'cart' => \Gloudemans\Shoppingcart\Cart::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.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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, + 'datatables' => \Yajra\DataTables\DataTables::class, + 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, + 'datatables.request' => \Yajra\DataTables\Utilities\Request::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, + 'dompdf' => \Dompdf\Dompdf::class, + 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'flash' => \Laracasts\Flash\FlashNotifier::class, + 'form' => \Collective\Html\FormBuilder::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'html' => \Collective\Html\HtmlBuilder::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, + 'pragmarx.google2fa' => \PragmaRX\Google2FALaravel\Google2FA::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::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, + ])); override(\app(0), map([ '' => '@', - 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::class, - 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, - 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::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\Foundation\Mix' => \Illuminate\Foundation\Mix::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, - 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, - 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, - 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, - 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, - 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, - 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::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.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, - 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::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.wipe' => \Illuminate\Database\Console\WipeCommand::class, - 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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.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.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.preset' => \Illuminate\Foundation\Console\PresetCommand::class, - 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::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.restart' => \Illuminate\Queue\Console\RestartCommand::class, - 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::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.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.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, - 'datatables' => \Yajra\DataTables\DataTables::class, - 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, - 'datatables.request' => \Yajra\DataTables\Utilities\Request::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, - 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'dompdf' => \Dompdf\Dompdf::class, - 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'flash' => \Laracasts\Flash\FlashNotifier::class, - 'form' => \Collective\Html\FormBuilder::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'html' => \Collective\Html\HtmlBuilder::class, - 'image' => \Intervention\Image\ImageManager::class, - 'log' => \Illuminate\Log\LogManager::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\DatabaseFailedJobProvider::class, - 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, - 'swift.mailer' => \Swift_Mailer::class, - 'swift.transport' => \Illuminate\Mail\TransportManager::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, - ])); + 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, + 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::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\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::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, + 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, + 'Laravel\Passport\ClientRepository' => \Laravel\Passport\ClientRepository::class, + 'Lcobucci\JWT\Parser' => \Lcobucci\JWT\Token\Parser::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::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, + 'cart' => \Gloudemans\Shoppingcart\Cart::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.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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, + 'datatables' => \Yajra\DataTables\DataTables::class, + 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, + 'datatables.request' => \Yajra\DataTables\Utilities\Request::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, + 'dompdf' => \Dompdf\Dompdf::class, + 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'flash' => \Laracasts\Flash\FlashNotifier::class, + 'form' => \Collective\Html\FormBuilder::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'html' => \Collective\Html\HtmlBuilder::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, + 'pragmarx.google2fa' => \PragmaRX\Google2FALaravel\Google2FA::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::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, + ])); override(\resolve(0), map([ '' => '@', - 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, - 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::class, - 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, - 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, - 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, - 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, - 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::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\Foundation\Mix' => \Illuminate\Foundation\Mix::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, - 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, - 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, - 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, - 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, - 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, - 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, - 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::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.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, - 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::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.wipe' => \Illuminate\Database\Console\WipeCommand::class, - 'command.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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.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.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.preset' => \Illuminate\Foundation\Console\PresetCommand::class, - 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::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.restart' => \Illuminate\Queue\Console\RestartCommand::class, - 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::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.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.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, - 'datatables' => \Yajra\DataTables\DataTables::class, - 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, - 'datatables.request' => \Yajra\DataTables\Utilities\Request::class, - 'db' => \Illuminate\Database\DatabaseManager::class, - 'db.connection' => \Illuminate\Database\MySqlConnection::class, - 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, - 'dompdf' => \Dompdf\Dompdf::class, - 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, - 'flash' => \Laracasts\Flash\FlashNotifier::class, - 'form' => \Collective\Html\FormBuilder::class, - 'hash' => \Illuminate\Hashing\HashManager::class, - 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, - 'html' => \Collective\Html\HtmlBuilder::class, - 'image' => \Intervention\Image\ImageManager::class, - 'log' => \Illuminate\Log\LogManager::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\DatabaseFailedJobProvider::class, - 'queue.listener' => \Illuminate\Queue\Listener::class, - 'queue.worker' => \Illuminate\Queue\Worker::class, - 'redirect' => \Illuminate\Routing\Redirector::class, - 'redis' => \Illuminate\Redis\RedisManager::class, - 'router' => \Illuminate\Routing\Router::class, - 'session' => \Illuminate\Session\SessionManager::class, - 'session.store' => \Illuminate\Session\Store::class, - 'swift.mailer' => \Swift_Mailer::class, - 'swift.transport' => \Illuminate\Mail\TransportManager::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, - ])); + 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, + 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::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\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::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, + 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, + 'Laravel\Passport\ClientRepository' => \Laravel\Passport\ClientRepository::class, + 'Lcobucci\JWT\Parser' => \Lcobucci\JWT\Token\Parser::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::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, + 'cart' => \Gloudemans\Shoppingcart\Cart::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.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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, + 'datatables' => \Yajra\DataTables\DataTables::class, + 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, + 'datatables.request' => \Yajra\DataTables\Utilities\Request::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, + 'dompdf' => \Dompdf\Dompdf::class, + 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'flash' => \Laracasts\Flash\FlashNotifier::class, + 'form' => \Collective\Html\FormBuilder::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'html' => \Collective\Html\HtmlBuilder::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, + 'pragmarx.google2fa' => \PragmaRX\Google2FALaravel\Google2FA::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::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, + ])); + override(\Psr\Container\ContainerInterface::get(0), map([ + '' => '@', + 'Barryvdh\Debugbar\LaravelDebugbar' => \Barryvdh\Debugbar\LaravelDebugbar::class, + 'Cviebrock\EloquentSluggable\SluggableObserver' => \Cviebrock\EloquentSluggable\SluggableObserver::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\ScheduleClearCacheCommand' => \Illuminate\Console\Scheduling\ScheduleClearCacheCommand::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, + 'Laracasts\Flash\SessionStore' => \Laracasts\Flash\LaravelSessionStore::class, + 'Laravel\Passport\ClientRepository' => \Laravel\Passport\ClientRepository::class, + 'Lcobucci\JWT\Parser' => \Lcobucci\JWT\Token\Parser::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::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, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Reliese\Coders\Model\Factory' => \Reliese\Coders\Model\Factory::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::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, + 'cart' => \Gloudemans\Shoppingcart\Cart::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.debugbar.clear' => \Barryvdh\Debugbar\Console\ClearCommand::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, + 'datatables' => \Yajra\DataTables\DataTables::class, + 'datatables.config' => \Yajra\DataTables\Utilities\Config::class, + 'datatables.request' => \Yajra\DataTables\Utilities\Request::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, + 'dompdf' => \Dompdf\Dompdf::class, + 'dompdf.wrapper' => \Barryvdh\DomPDF\PDF::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.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'flash' => \Laracasts\Flash\FlashNotifier::class, + 'form' => \Collective\Html\FormBuilder::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'html' => \Collective\Html\HtmlBuilder::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, + 'pragmarx.google2fa' => \PragmaRX\Google2FALaravel\Google2FA::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::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, + ])); + override(\Illuminate\Foundation\Testing\Concerns\InteractsWithContainer::mock(0), map(["" => "@&\Mockery\MockInterface"])); + override(\Illuminate\Foundation\Testing\Concerns\InteractsWithContainer::partialMock(0), map(["" => "@&\Mockery\MockInterface"])); + override(\Illuminate\Foundation\Testing\Concerns\InteractsWithContainer::instance(0), type(1)); + override(\Illuminate\Foundation\Testing\Concerns\InteractsWithContainer::spy(0), map(["" => "@&\Mockery\MockInterface"])); override(\Illuminate\Support\Arr::add(0), type(0)); override(\Illuminate\Support\Arr::except(0), type(0)); override(\Illuminate\Support\Arr::first(0), elementType(0)); @@ -1345,5 +2299,6 @@ namespace PHPSTORM_META { override(\last(0), elementType(0)); override(\with(0), type(0)); override(\tap(0), type(0)); + override(\optional(0), type(0)); } diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..bb9ae16 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,181 @@ + +=== foundation rules === + +# Laravel Boost Guidelines + +The Laravel Boost guidelines are specifically curated by Laravel maintainers for this application. These guidelines should be followed closely to enhance the user's satisfaction building Laravel applications. + +## Foundational Context +This application is a Laravel application and its main Laravel ecosystems package & versions are below. You are an expert with them all. Ensure you abide by these specific packages & versions. + +- php - 8.3.30 +- laravel/framework (LARAVEL) - v10 +- laravel/passport (PASSPORT) - v11 +- laravel/prompts (PROMPTS) - v0 +- laravel/mcp (MCP) - v0 +- laravel/sail (SAIL) - v1 +- phpunit/phpunit (PHPUNIT) - v10 + +## Conventions +- You must follow all existing code conventions used in this application. When creating or editing a file, check sibling files for the correct structure, approach, and naming. +- Use descriptive names for variables and methods. For example, `isRegisteredForDiscounts`, not `discount()`. +- Check for existing components to reuse before writing a new one. + +## Verification Scripts +- Do not create verification scripts or tinker when tests cover that functionality and prove it works. Unit and feature tests are more important. + +## Application Structure & Architecture +- Stick to existing directory structure; don't create new base folders without approval. +- Do not change the application's dependencies without approval. + +## Frontend Bundling +- If the user doesn't see a frontend change reflected in the UI, it could mean they need to run `npm run build`, `npm run dev`, or `composer run dev`. Ask them. + +## Replies +- Be concise in your explanations - focus on what's important rather than explaining obvious details. + +## Documentation Files +- You must only create documentation files if explicitly requested by the user. + +=== boost rules === + +## Laravel Boost +- Laravel Boost is an MCP server that comes with powerful tools designed specifically for this application. Use them. + +## Artisan +- Use the `list-artisan-commands` tool when you need to call an Artisan command to double-check the available parameters. + +## URLs +- Whenever you share a project URL with the user, you should use the `get-absolute-url` tool to ensure you're using the correct scheme, domain/IP, and port. + +## Tinker / Debugging +- You should use the `tinker` tool when you need to execute PHP to debug code or query Eloquent models directly. +- Use the `database-query` tool when you only need to read from the database. + +## Reading Browser Logs With the `browser-logs` Tool +- You can read browser logs, errors, and exceptions using the `browser-logs` tool from Boost. +- Only recent browser logs will be useful - ignore old logs. + +## Searching Documentation (Critically Important) +- Boost comes with a powerful `search-docs` tool you should use before any other approaches when dealing with Laravel or Laravel ecosystem packages. This tool automatically passes a list of installed packages and their versions to the remote Boost API, so it returns only version-specific documentation for the user's circumstance. You should pass an array of packages to filter on if you know you need docs for particular packages. +- The `search-docs` tool is perfect for all Laravel-related packages, including Laravel, Inertia, Livewire, Filament, Tailwind, Pest, Nova, Nightwatch, etc. +- You must use this tool to search for Laravel ecosystem documentation before falling back to other approaches. +- Search the documentation before making code changes to ensure we are taking the correct approach. +- Use multiple, broad, simple, topic-based queries to start. For example: `['rate limiting', 'routing rate limiting', 'routing']`. +- Do not add package names to queries; package information is already shared. For example, use `test resource table`, not `filament 4 test resource table`. + +### Available Search Syntax +- You can and should pass multiple queries at once. The most relevant results will be returned first. + +1. Simple Word Searches with auto-stemming - query=authentication - finds 'authenticate' and 'auth'. +2. Multiple Words (AND Logic) - query=rate limit - finds knowledge containing both "rate" AND "limit". +3. Quoted Phrases (Exact Position) - query="infinite scroll" - words must be adjacent and in that order. +4. Mixed Queries - query=middleware "rate limit" - "middleware" AND exact phrase "rate limit". +5. Multiple Queries - queries=["authentication", "middleware"] - ANY of these terms. + +=== php rules === + +## PHP + +- Always use curly braces for control structures, even if it has one line. + +### Constructors +- Use PHP 8 constructor property promotion in `__construct()`. + - public function __construct(public GitHub $github) { } +- Do not allow empty `__construct()` methods with zero parameters unless the constructor is private. + +### Type Declarations +- Always use explicit return type declarations for methods and functions. +- Use appropriate PHP type hints for method parameters. + + +protected function isAccessible(User $user, ?string $path = null): bool +{ + ... +} + + +## Comments +- Prefer PHPDoc blocks over inline comments. Never use comments within the code itself unless there is something very complex going on. + +## PHPDoc Blocks +- Add useful array shape type definitions for arrays when appropriate. + +## Enums +- Typically, keys in an Enum should be TitleCase. For example: `FavoritePerson`, `BestLake`, `Monthly`. + +=== laravel/core rules === + +## Do Things the Laravel Way + +- Use `php artisan make:` commands to create new files (i.e. migrations, controllers, models, etc.). You can list available Artisan commands using the `list-artisan-commands` tool. +- If you're creating a generic PHP class, use `php artisan make:class`. +- Pass `--no-interaction` to all Artisan commands to ensure they work without user input. You should also pass the correct `--options` to ensure correct behavior. + +### Database +- Always use proper Eloquent relationship methods with return type hints. Prefer relationship methods over raw queries or manual joins. +- Use Eloquent models and relationships before suggesting raw database queries. +- Avoid `DB::`; prefer `Model::query()`. Generate code that leverages Laravel's ORM capabilities rather than bypassing them. +- Generate code that prevents N+1 query problems by using eager loading. +- Use Laravel's query builder for very complex database operations. + +### Model Creation +- When creating new models, create useful factories and seeders for them too. Ask the user if they need any other things, using `list-artisan-commands` to check the available options to `php artisan make:model`. + +### APIs & Eloquent Resources +- For APIs, default to using Eloquent API Resources and API versioning unless existing API routes do not, then you should follow existing application convention. + +### Controllers & Validation +- Always create Form Request classes for validation rather than inline validation in controllers. Include both validation rules and custom error messages. +- Check sibling Form Requests to see if the application uses array or string based validation rules. + +### Queues +- Use queued jobs for time-consuming operations with the `ShouldQueue` interface. + +### Authentication & Authorization +- Use Laravel's built-in authentication and authorization features (gates, policies, Sanctum, etc.). + +### URL Generation +- When generating links to other pages, prefer named routes and the `route()` function. + +### Configuration +- Use environment variables only in configuration files - never use the `env()` function directly outside of config files. Always use `config('app.name')`, not `env('APP_NAME')`. + +### Testing +- When creating models for tests, use the factories for the models. Check if the factory has custom states that can be used before manually setting up the model. +- Faker: Use methods such as `$this->faker->word()` or `fake()->randomDigit()`. Follow existing conventions whether to use `$this->faker` or `fake()`. +- When creating tests, make use of `php artisan make:test [options] {name}` to create a feature test, and pass `--unit` to create a unit test. Most tests should be feature tests. + +### Vite Error +- If you receive an "Illuminate\Foundation\ViteException: Unable to locate file in Vite manifest" error, you can run `npm run build` or ask the user to run `npm run dev` or `composer run dev`. + +=== laravel/v10 rules === + +## Laravel 10 + +- Use the `search-docs` tool to get version-specific documentation. +- Middleware typically live in `app/Http/Middleware/` and service providers in `app/Providers/`. +- Laravel 10 has a `bootstrap/app.php` file that creates the application instance and binds kernel contracts, but does not use it for application configuration like Laravel 11: + - Middleware registration is in `app/Http/Kernel.php` + - Exception handling is in `app/Exceptions/Handler.php` + - Console commands and schedule registration is in `app/Console/Kernel.php` + - Rate limits likely exist in `RouteServiceProvider` or `app/Http/Kernel.php` +- When using Eloquent model casts, you must use `protected $casts = [];` and not the `casts()` method. The `casts()` method isn't available on models in Laravel 10. + +=== phpunit/core rules === + +## PHPUnit + +- This application uses PHPUnit for testing. All tests must be written as PHPUnit classes. Use `php artisan make:test --phpunit {name}` to create a new test. +- If you see a test using "Pest", convert it to PHPUnit. +- Every time a test has been updated, run that singular test. +- When the tests relating to your feature are passing, ask the user if they would like to also run the entire test suite to make sure everything is still passing. +- Tests should test all of the happy paths, failure paths, and weird paths. +- You must not remove any tests or test files from the tests directory without approval. These are not temporary or helper files; these are core to the application. + +### Running Tests +- Run the minimal number of tests, using an appropriate filter, before finalizing. +- To run all tests: `php artisan test --compact`. +- To run all tests in a file: `php artisan test --compact tests/Feature/ExampleTest.php`. +- To filter on a particular test name: `php artisan test --compact --filter=testName` (recommended after making a change to a related file). + diff --git a/INIT.md b/INIT.md new file mode 100644 index 0000000..b85cb81 --- /dev/null +++ b/INIT.md @@ -0,0 +1,455 @@ +# Sterntours Laravel Projekt - Initialisierung & Setup + +Diese Dokumentation beschreibt die Initialisierung und Einrichtung des Sterntours Laravel-Projekts. + +## 📋 Inhaltsverzeichnis + +1. [Voraussetzungen](#voraussetzungen) +2. [Schnellstart](#schnellstart) +3. [Manuelle Installation](#manuelle-installation) +4. [Projekt-Struktur](#projekt-struktur) +5. [Umgebungskonfiguration](#umgebungskonfiguration) +6. [Datenbanken](#datenbanken) +7. [Domains & Routing](#domains--routing) +8. [Häufige Befehle](#häufige-befehle) +9. [Fehlerbehebung](#fehlerbehebung) + +--- + +## Voraussetzungen + +Bevor du das Projekt initialisierst, stelle sicher, dass folgende Software installiert ist: + +- **Docker Desktop** (Version 20.10+) + - [Download für macOS](https://www.docker.com/products/docker-desktop) + - [Download für Windows](https://www.docker.com/products/docker-desktop) + - [Download für Linux](https://docs.docker.com/engine/install/) + +- **Composer** (Version 2.0+) + - [Installation Guide](https://getcomposer.org/download/) + +- **Node.js & NPM** (Version 16+ empfohlen) + - [Download](https://nodejs.org/) + +- **Git** (für Versionskontrolle) + - [Download](https://git-scm.com/) + +--- + +## Schnellstart + +Das Projekt kann mit einem einzigen Befehl initialisiert werden: + +```bash +bash init.sh +``` + +Das Script führt automatisch alle notwendigen Schritte aus: + +1. ✓ Prüft Docker-Installation +2. ✓ Erstellt `.env` Datei +3. ✓ Installiert Composer-Dependencies +4. ✓ Installiert NPM-Dependencies +5. ✓ Generiert Application Key +6. ✓ Erstellt Docker-Netzwerke +7. ✓ Startet Docker-Container +8. ✓ Führt Datenbank-Migrationen aus +9. ✓ Erstellt Storage-Links +10. ✓ Optimiert die Application + +--- + +## Manuelle Installation + +Falls du das Projekt manuell einrichten möchtest: + +### 1. Repository klonen + +```bash +git clone sterntours +cd sterntours +``` + +### 2. Umgebungsvariablen konfigurieren + +```bash +cp .env.example .env +``` + +Bearbeite die `.env` Datei nach Bedarf (siehe [Umgebungskonfiguration](#umgebungskonfiguration)). + +### 3. Dependencies installieren + +```bash +# Composer Dependencies +composer install + +# NPM Dependencies +npm install +``` + +### 4. Application Key generieren + +```bash +php artisan key:generate +``` + +### 5. Docker Proxy-Netzwerk erstellen + +```bash +docker network create proxy +``` + +### 6. Docker Container starten (Laravel Sail) + +```bash +./vendor/bin/sail up -d +``` + +### 7. Datenbank migrieren + +```bash +./vendor/bin/sail artisan migrate +``` + +### 8. Storage Links erstellen + +```bash +./vendor/bin/sail artisan storage:link +``` + +### 9. Cache optimieren + +```bash +./vendor/bin/sail artisan config:cache +./vendor/bin/sail artisan route:cache +./vendor/bin/sail artisan view:cache +``` + +--- + +## Projekt-Struktur + +``` +sterntours/ +├── app/ # Application Code +│ ├── Console/ # Artisan Commands +│ ├── Http/ # Controllers, Middleware +│ ├── Models/ # Eloquent Models +│ ├── Services/ # Business Logic +│ └── Repositories/ # Data Access Layer +├── config/ # Konfigurationsdateien +├── database/ # Migrations, Seeds, Factories +├── public/ # Öffentliche Assets +├── resources/ # Views, Assets (Sass, JS) +├── routes/ # Route Definitionen +├── storage/ # Logs, Cache, Uploads +├── tests/ # Unit & Feature Tests +├── docker-compose.yml # Docker Setup +├── init.sh # Initialisierungsskript +└── INIT.md # Diese Datei +``` + +--- + +## Umgebungskonfiguration + +### Wichtige .env Variablen + +#### Haupt-Datenbank (CRM) +```env +DB_CONNECTION=mysql +DB_HOST=mysql +DB_PORT=3306 +DB_DATABASE=stern_crm +DB_USERNAME=sail +DB_PASSWORD=password +``` + +#### Stern-Datenbank (Legacy) +```env +DB_CONNECTION_STERN=mysql +DB_HOST_STERN=mysql-stern +DB_PORT_STERN=3306 +DB_DATABASE_STERN=stern_db +DB_USERNAME_STERN=sail +DB_PASSWORD_STERN=password +``` + +#### Mail-Konfiguration (Mailpit) +```env +MAIL_MAILER=smtp +MAIL_HOST=mailpit +MAIL_PORT=1025 +MAIL_ENCRYPTION=null +``` + +#### Redis Cache +```env +REDIS_HOST=redis +REDIS_PASSWORD=null +REDIS_PORT=6379 +``` + +--- + +## Datenbanken + +Das Projekt verwendet **zwei separate MySQL-Datenbanken**: + +### 1. stern_crm (Haupt-CRM) +- **Port:** 33064 +- **Verwendung:** Haupt-Application, Kundenverwaltung +- **Host in Container:** mysql + +### 2. stern_db (Legacy Datenbank) +- **Port:** 33065 +- **Verwendung:** Alte Stern-Tours Daten +- **Host in Container:** mysql-stern + +### Datenbankzugriff von außen + +```bash +# CRM Datenbank +mysql -h 127.0.0.1 -P 33064 -u sail -p stern_crm + +# Stern Datenbank +mysql -h 127.0.0.1 -P 33065 -u sail -p stern_db +``` + +--- + +## Domains & Routing + +Das Projekt verwendet **Traefik** als Reverse Proxy und ist über folgende Domains erreichbar: + +| Domain | Zweck | Port | +|--------|-------|------| +| `https://mein.sterntours.test` | Haupt-Application | 443 | +| `https://sterntours.test` | Alternative URL | 443 | +| `https://assets.sterntours.test` | Vite Dev-Server | 5173 | +| `https://sterntours-mail.test` | Mailpit Dashboard | 8025 | + +### Hosts-Datei konfigurieren + +Füge folgende Einträge zu deiner `/etc/hosts` (Linux/Mac) oder `C:\Windows\System32\drivers\etc\hosts` (Windows) hinzu: + +``` +127.0.0.1 mein.sterntours.test +127.0.0.1 sterntours.test +127.0.0.1 assets.sterntours.test +127.0.0.1 sterntours-mail.test +``` + +--- + +## Häufige Befehle + +### Docker Container + +```bash +# Container starten +./vendor/bin/sail up -d + +# Container stoppen +./vendor/bin/sail down + +# Container neu bauen +./vendor/bin/sail build --no-cache + +# Logs anzeigen +./vendor/bin/sail logs -f + +# Spezifischen Service anzeigen +./vendor/bin/sail logs mysql -f +``` + +### Artisan Befehle + +```bash +# Migrationen ausführen +./vendor/bin/sail artisan migrate + +# Migrationen zurücksetzen +./vendor/bin/sail artisan migrate:rollback + +# Seeds ausführen +./vendor/bin/sail artisan db:seed + +# Cache leeren +./vendor/bin/sail artisan cache:clear +./vendor/bin/sail artisan config:clear +./vendor/bin/sail artisan route:clear +./vendor/bin/sail artisan view:clear + +# Cache optimieren +./vendor/bin/sail artisan config:cache +./vendor/bin/sail artisan route:cache +./vendor/bin/sail artisan view:cache +``` + +### Composer + +```bash +# Packages installieren +./vendor/bin/sail composer install + +# Package hinzufügen +./vendor/bin/sail composer require + +# Package entfernen +./vendor/bin/sail composer remove + +# Autoload aktualisieren +./vendor/bin/sail composer dump-autoload +``` + +### NPM / Assets + +```bash +# Dependencies installieren +npm install + +# Development Build +npm run dev + +# Production Build +npm run prod + +# Watch Mode +npm run watch +``` + +### Tests + +```bash +# Alle Tests ausführen +./vendor/bin/sail test + +# Spezifische Test-Datei +./vendor/bin/sail test tests/Feature/ExampleTest.php + +# Mit Coverage +./vendor/bin/sail test --coverage +``` + +### Shell / SSH + +```bash +# Shell im Container öffnen +./vendor/bin/sail shell + +# Root Shell +./vendor/bin/sail root-shell + +# MySQL Shell +./vendor/bin/sail mysql + +# Redis CLI +./vendor/bin/sail redis +``` + +--- + +## Fehlerbehebung + +### Problem: "Docker is not running" + +**Lösung:** Starte Docker Desktop und warte, bis es vollständig gestartet ist. + +```bash +# macOS/Linux +sudo systemctl start docker + +# Windows +Starte Docker Desktop über das Startmenü +``` + +### Problem: "Port already in use" + +**Lösung:** Prüfe, welche Ports belegt sind und ändere sie in der `.env` Datei: + +```bash +# Ports prüfen +lsof -i :33064 +lsof -i :33065 + +# In .env ändern +FORWARD_DB_PORT=33064 +FORWARD_DB_PORT_STERN=33065 +``` + +### Problem: "Network proxy not found" + +**Lösung:** Erstelle das Traefik Proxy-Netzwerk manuell: + +```bash +docker network create proxy +``` + +### Problem: "Permission denied" beim init.sh + +**Lösung:** Mache das Script ausführbar: + +```bash +chmod +x init.sh +./init.sh +``` + +### Problem: "Class not found" + +**Lösung:** Regeneriere Composer Autoload: + +```bash +./vendor/bin/sail composer dump-autoload +./vendor/bin/sail artisan clear-compiled +``` + +### Problem: "Migration failed" + +**Lösung:** Prüfe Datenbankverbindung und setze zurück: + +```bash +# Verbindung testen +./vendor/bin/sail artisan tinker +>>> DB::connection()->getPdo(); + +# Migrationen zurücksetzen +./vendor/bin/sail artisan migrate:fresh +``` + +### Problem: "Vite/Assets nicht geladen" + +**Lösung:** Starte den Dev-Server: + +```bash +npm run dev +# oder +npm run watch +``` + +--- + +## Support & Kontakt + +Bei Fragen oder Problemen: + +1. Prüfe die [Fehlerbehebung](#fehlerbehebung) +2. Prüfe die [Laravel Dokumentation](https://laravel.com/docs) +3. Prüfe die [Laravel Sail Dokumentation](https://laravel.com/docs/sail) + +--- + +## Changelog + +### Version 1.0.0 (2025-11-07) +- ✓ Initiales Setup-Script erstellt +- ✓ Dokumentation erstellt +- ✓ Docker Compose Konfiguration +- ✓ Dual-Datenbank Setup +- ✓ Traefik Routing konfiguriert + +--- + +**Viel Erfolg mit dem Projekt! 🚀** + diff --git a/_ide_helper.php b/_ide_helper.php index 99dc32e..ff24f30 100644 --- a/_ide_helper.php +++ b/_ide_helper.php @@ -1,9 +1,10 @@ version(); } - - /** + /** * Run the given array of bootstrap classes. * * @param string[] $bootstrappers - * @return void - * @static + * @return void + * @static */ public static function bootstrapWith($bootstrappers) { /** @var \Illuminate\Foundation\Application $instance */ $instance->bootstrapWith($bootstrappers); } - - /** + /** * Register a callback to run after loading the environment. * * @param \Closure $callback - * @return void - * @static + * @return void + * @static */ public static function afterLoadingEnvironment($callback) { /** @var \Illuminate\Foundation\Application $instance */ $instance->afterLoadingEnvironment($callback); } - - /** + /** * Register a callback to run before a bootstrapper. * * @param string $bootstrapper * @param \Closure $callback - * @return void - * @static + * @return void + * @static */ public static function beforeBootstrapping($bootstrapper, $callback) { /** @var \Illuminate\Foundation\Application $instance */ $instance->beforeBootstrapping($bootstrapper, $callback); } - - /** + /** * Register a callback to run after a bootstrapper. * * @param string $bootstrapper * @param \Closure $callback - * @return void - * @static + * @return void + * @static */ public static function afterBootstrapping($bootstrapper, $callback) { /** @var \Illuminate\Foundation\Application $instance */ $instance->afterBootstrapping($bootstrapper, $callback); } - - /** + /** * Determine if the application has been bootstrapped before. * - * @return bool - * @static + * @return bool + * @static */ public static function hasBeenBootstrapped() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->hasBeenBootstrapped(); } - - /** + /** * Set the base path for the application. * * @param string $basePath - * @return \Illuminate\Foundation\Application - * @static + * @return \Illuminate\Foundation\Application + * @static */ public static function setBasePath($basePath) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->setBasePath($basePath); } - - /** + /** * Get the path to the application "app" directory. * * @param string $path - * @return string - * @static + * @return string + * @static */ public static function path($path = '') { /** @var \Illuminate\Foundation\Application $instance */ return $instance->path($path); } - - /** + /** * Set the application directory. * * @param string $path - * @return \Illuminate\Foundation\Application - * @static + * @return \Illuminate\Foundation\Application + * @static */ public static function useAppPath($path) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->useAppPath($path); } - - /** + /** * Get the base path of the Laravel installation. * - * @param string $path Optionally, a path to append to the base path - * @return string - * @static + * @param string $path + * @return string + * @static */ public static function basePath($path = '') { /** @var \Illuminate\Foundation\Application $instance */ return $instance->basePath($path); } - - /** + /** * Get the path to the bootstrap directory. * - * @param string $path Optionally, a path to append to the bootstrap path - * @return string - * @static + * @param string $path + * @return string + * @static */ public static function bootstrapPath($path = '') { /** @var \Illuminate\Foundation\Application $instance */ return $instance->bootstrapPath($path); } - - /** + /** * Get the path to the application configuration files. * - * @param string $path Optionally, a path to append to the config path - * @return string - * @static + * @param string $path + * @return string + * @static */ public static function configPath($path = '') { /** @var \Illuminate\Foundation\Application $instance */ return $instance->configPath($path); } - - /** + /** * Get the path to the database directory. * - * @param string $path Optionally, a path to append to the database path - * @return string - * @static + * @param string $path + * @return string + * @static */ public static function databasePath($path = '') { /** @var \Illuminate\Foundation\Application $instance */ return $instance->databasePath($path); } - - /** + /** * Set the database directory. * * @param string $path - * @return \Illuminate\Foundation\Application - * @static + * @return \Illuminate\Foundation\Application + * @static */ public static function useDatabasePath($path) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->useDatabasePath($path); } - - /** + /** * Get the path to the language files. * - * @return string - * @static + * @return string + * @static */ public static function langPath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->langPath(); } - - /** + /** + * Set the language file directory. + * + * @param string $path + * @return \Illuminate\Foundation\Application + * @static + */ + public static function useLangPath($path) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->useLangPath($path); + } + /** * Get the path to the public / web directory. * - * @return string - * @static + * @return string + * @static */ public static function publicPath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->publicPath(); } - - /** + /** * Get the path to the storage directory. * - * @return string - * @static + * @return string + * @static */ public static function storagePath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->storagePath(); } - - /** + /** * Set the storage directory. * * @param string $path - * @return \Illuminate\Foundation\Application - * @static + * @return \Illuminate\Foundation\Application + * @static */ public static function useStoragePath($path) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->useStoragePath($path); } - - /** + /** * Get the path to the resources directory. * * @param string $path - * @return string - * @static + * @return string + * @static */ public static function resourcePath($path = '') { /** @var \Illuminate\Foundation\Application $instance */ return $instance->resourcePath($path); } - - /** + /** + * Get the path to the views directory. + * + * This method returns the first configured path in the array of view paths. + * + * @param string $path + * @return string + * @static + */ + public static function viewPath($path = '') + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->viewPath($path); + } + /** * Get the path to the environment file directory. * - * @return string - * @static + * @return string + * @static */ public static function environmentPath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->environmentPath(); } - - /** + /** * Set the directory for the environment file. * * @param string $path - * @return \Illuminate\Foundation\Application - * @static + * @return \Illuminate\Foundation\Application + * @static */ public static function useEnvironmentPath($path) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->useEnvironmentPath($path); } - - /** + /** * Set the environment file to be loaded during bootstrapping. * * @param string $file - * @return \Illuminate\Foundation\Application - * @static + * @return \Illuminate\Foundation\Application + * @static */ public static function loadEnvironmentFrom($file) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->loadEnvironmentFrom($file); } - - /** + /** * Get the environment file the application is using. * - * @return string - * @static + * @return string + * @static */ public static function environmentFile() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->environmentFile(); } - - /** + /** * Get the fully qualified path to the environment file. * - * @return string - * @static + * @return string + * @static */ public static function environmentFilePath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->environmentFilePath(); } - - /** + /** * Get or check the current application environment. * * @param string|array $environments - * @return string|bool - * @static + * @return string|bool + * @static */ public static function environment(...$environments) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->environment(...$environments); } - - /** - * Determine if application is in local environment. + /** + * Determine if the application is in the local environment. * - * @return bool - * @static + * @return bool + * @static */ public static function isLocal() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->isLocal(); } - - /** - * Determine if application is in production environment. + /** + * Determine if the application is in the production environment. * - * @return bool - * @static + * @return bool + * @static */ public static function isProduction() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->isProduction(); } - - /** + /** * Detect the application's current environment. * * @param \Closure $callback - * @return string - * @static + * @return string + * @static */ public static function detectEnvironment($callback) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->detectEnvironment($callback); } - - /** + /** * Determine if the application is running in the console. * - * @return bool - * @static + * @return bool + * @static */ public static function runningInConsole() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->runningInConsole(); } - - /** + /** * Determine if the application is running unit tests. * - * @return bool - * @static + * @return bool + * @static */ public static function runningUnitTests() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->runningUnitTests(); } - - /** + /** + * Determine if the application is running with debug mode enabled. + * + * @return bool + * @static + */ + public static function hasDebugModeEnabled() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->hasDebugModeEnabled(); + } + /** * Register all of the configured providers. * - * @return void - * @static + * @return void + * @static */ public static function registerConfiguredProviders() { /** @var \Illuminate\Foundation\Application $instance */ $instance->registerConfiguredProviders(); } - - /** + /** * Register a service provider with the application. * * @param \Illuminate\Support\ServiceProvider|string $provider * @param bool $force - * @return \Illuminate\Support\ServiceProvider - * @static + * @return \Illuminate\Support\ServiceProvider + * @static */ public static function register($provider, $force = false) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->register($provider, $force); } - - /** + /** * Get the registered service provider instance if it exists. * * @param \Illuminate\Support\ServiceProvider|string $provider - * @return \Illuminate\Support\ServiceProvider|null - * @static + * @return \Illuminate\Support\ServiceProvider|null + * @static */ public static function getProvider($provider) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getProvider($provider); } - - /** + /** * Get the registered service provider instances if any exist. * * @param \Illuminate\Support\ServiceProvider|string $provider - * @return array - * @static + * @return array + * @static */ public static function getProviders($provider) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getProviders($provider); } - - /** + /** * Resolve a service provider instance from the class name. * * @param string $provider - * @return \Illuminate\Support\ServiceProvider - * @static + * @return \Illuminate\Support\ServiceProvider + * @static */ public static function resolveProvider($provider) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->resolveProvider($provider); } - - /** + /** * Load and boot all of the remaining deferred providers. * - * @return void - * @static + * @return void + * @static */ public static function loadDeferredProviders() { /** @var \Illuminate\Foundation\Application $instance */ $instance->loadDeferredProviders(); } - - /** + /** * Load the provider for a deferred service. * * @param string $service - * @return void - * @static + * @return void + * @static */ public static function loadDeferredProvider($service) { /** @var \Illuminate\Foundation\Application $instance */ $instance->loadDeferredProvider($service); } - - /** + /** * Register a deferred provider and service. * * @param string $provider * @param string|null $service - * @return void - * @static + * @return void + * @static */ public static function registerDeferredProvider($provider, $service = null) { /** @var \Illuminate\Foundation\Application $instance */ $instance->registerDeferredProvider($provider, $service); } - - /** + /** * Resolve the given type from the container. * * @param string $abstract * @param array $parameters - * @return mixed - * @static + * @return mixed + * @static */ public static function make($abstract, $parameters = []) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->make($abstract, $parameters); } - - /** + /** * Determine if the given abstract type has been bound. * * @param string $abstract - * @return bool - * @static + * @return bool + * @static */ public static function bound($abstract) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->bound($abstract); } - - /** + /** * Determine if the application has booted. * - * @return bool - * @static + * @return bool + * @static */ public static function isBooted() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->isBooted(); } - - /** + /** * Boot the application's service providers. * - * @return void - * @static + * @return void + * @static */ public static function boot() { /** @var \Illuminate\Foundation\Application $instance */ $instance->boot(); } - - /** + /** * Register a new boot listener. * * @param callable $callback - * @return void - * @static + * @return void + * @static */ public static function booting($callback) { /** @var \Illuminate\Foundation\Application $instance */ $instance->booting($callback); } - - /** + /** * Register a new "booted" listener. * * @param callable $callback - * @return void - * @static + * @return void + * @static */ public static function booted($callback) { /** @var \Illuminate\Foundation\Application $instance */ $instance->booted($callback); } - - /** + /** * {@inheritdoc} * - * @static + * @return \Symfony\Component\HttpFoundation\Response + * @static */ public static function handle($request, $type = 1, $catch = true) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->handle($request, $type, $catch); } - - /** + /** * Determine if middleware has been disabled for the application. * - * @return bool - * @static + * @return bool + * @static */ public static function shouldSkipMiddleware() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->shouldSkipMiddleware(); } - - /** + /** * Get the path to the cached services.php file. * - * @return string - * @static + * @return string + * @static */ public static function getCachedServicesPath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getCachedServicesPath(); } - - /** + /** * Get the path to the cached packages.php file. * - * @return string - * @static + * @return string + * @static */ public static function getCachedPackagesPath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getCachedPackagesPath(); } - - /** + /** * Determine if the application configuration is cached. * - * @return bool - * @static + * @return bool + * @static */ public static function configurationIsCached() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->configurationIsCached(); } - - /** + /** * Get the path to the configuration cache file. * - * @return string - * @static + * @return string + * @static */ public static function getCachedConfigPath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getCachedConfigPath(); } - - /** + /** * Determine if the application routes are cached. * - * @return bool - * @static + * @return bool + * @static */ public static function routesAreCached() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->routesAreCached(); } - - /** + /** * Get the path to the routes cache file. * - * @return string - * @static + * @return string + * @static */ public static function getCachedRoutesPath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getCachedRoutesPath(); } - - /** + /** * Determine if the application events are cached. * - * @return bool - * @static + * @return bool + * @static */ public static function eventsAreCached() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->eventsAreCached(); } - - /** + /** * Get the path to the events cache file. * - * @return string - * @static + * @return string + * @static */ public static function getCachedEventsPath() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getCachedEventsPath(); } - - /** + /** + * Add new prefix to list of absolute path prefixes. + * + * @param string $prefix + * @return \Illuminate\Foundation\Application + * @static + */ + public static function addAbsoluteCachePathPrefix($prefix) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->addAbsoluteCachePathPrefix($prefix); + } + /** * Determine if the application is currently down for maintenance. * - * @return bool - * @static + * @return bool + * @static */ public static function isDownForMaintenance() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->isDownForMaintenance(); } - - /** + /** * Throw an HttpException with the given data. * * @param int $code * @param string $message * @param array $headers - * @return void + * @return never * @throws \Symfony\Component\HttpKernel\Exception\HttpException * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException - * @static + * @static */ public static function abort($code, $message = '', $headers = []) { /** @var \Illuminate\Foundation\Application $instance */ - $instance->abort($code, $message, $headers); + return $instance->abort($code, $message, $headers); } - - /** + /** * Register a terminating callback with the application. * * @param callable|string $callback - * @return \Illuminate\Foundation\Application - * @static + * @return \Illuminate\Foundation\Application + * @static */ public static function terminating($callback) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->terminating($callback); } - - /** + /** * Terminate the application. * - * @return void - * @static + * @return void + * @static */ public static function terminate() { /** @var \Illuminate\Foundation\Application $instance */ $instance->terminate(); } - - /** + /** * Get the service providers that have been loaded. * - * @return array - * @static + * @return array + * @static */ public static function getLoadedProviders() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getLoadedProviders(); } - - /** + /** + * Determine if the given service provider is loaded. + * + * @param string $provider + * @return bool + * @static + */ + public static function providerIsLoaded($provider) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->providerIsLoaded($provider); + } + /** * Get the application's deferred services. * - * @return array - * @static + * @return array + * @static */ public static function getDeferredServices() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getDeferredServices(); } - - /** + /** * Set the application's deferred services. * * @param array $services - * @return void - * @static + * @return void + * @static */ public static function setDeferredServices($services) { /** @var \Illuminate\Foundation\Application $instance */ $instance->setDeferredServices($services); } - - /** + /** * Add an array of services to the application's deferred services. * * @param array $services - * @return void - * @static + * @return void + * @static */ public static function addDeferredServices($services) { /** @var \Illuminate\Foundation\Application $instance */ $instance->addDeferredServices($services); } - - /** + /** * Determine if the given service is a deferred service. * * @param string $service - * @return bool - * @static + * @return bool + * @static */ public static function isDeferredService($service) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->isDeferredService($service); } - - /** + /** * Configure the real-time facade namespace. * * @param string $namespace - * @return void - * @static + * @return void + * @static */ public static function provideFacades($namespace) { /** @var \Illuminate\Foundation\Application $instance */ $instance->provideFacades($namespace); } - - /** + /** * Get the current application locale. * - * @return string - * @static + * @return string + * @static */ public static function getLocale() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getLocale(); } - - /** + /** + * Get the current application locale. + * + * @return string + * @static + */ + public static function currentLocale() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->currentLocale(); + } + /** + * Get the current application fallback locale. + * + * @return string + * @static + */ + public static function getFallbackLocale() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getFallbackLocale(); + } + /** * Set the current application locale. * * @param string $locale - * @return void - * @static + * @return void + * @static */ public static function setLocale($locale) { /** @var \Illuminate\Foundation\Application $instance */ $instance->setLocale($locale); } - - /** - * Determine if application locale is the given locale. + /** + * Set the current application fallback locale. + * + * @param string $fallbackLocale + * @return void + * @static + */ + public static function setFallbackLocale($fallbackLocale) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->setFallbackLocale($fallbackLocale); + } + /** + * Determine if the application locale is the given locale. * * @param string $locale - * @return bool - * @static + * @return bool + * @static */ public static function isLocale($locale) { /** @var \Illuminate\Foundation\Application $instance */ return $instance->isLocale($locale); } - - /** + /** * Register the core class aliases in the container. * - * @return void - * @static + * @return void + * @static */ public static function registerCoreContainerAliases() { /** @var \Illuminate\Foundation\Application $instance */ $instance->registerCoreContainerAliases(); } - - /** + /** * Flush the container of all bindings and resolved instances. * - * @return void - * @static + * @return void + * @static */ public static function flush() { /** @var \Illuminate\Foundation\Application $instance */ $instance->flush(); } - - /** + /** * Get the application namespace. * - * @return string + * @return string * @throws \RuntimeException - * @static + * @static */ public static function getNamespace() { /** @var \Illuminate\Foundation\Application $instance */ return $instance->getNamespace(); } - - /** + /** * Define a contextual binding. * * @param array|string $concrete - * @return \Illuminate\Contracts\Container\ContextualBindingBuilder - * @static + * @return \Illuminate\Contracts\Container\ContextualBindingBuilder + * @static */ public static function when($concrete) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->when($concrete); } - - /** + /** * Returns true if the container can return an entry for the given identifier. - * + * * Returns false otherwise. - * + * * `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 + * @return bool + * @static */ public static function has($id) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->has($id); } - - /** + /** * Determine if the given abstract type has been resolved. * * @param string $abstract - * @return bool - * @static + * @return bool + * @static */ public static function resolved($abstract) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->resolved($abstract); } - - /** + /** * Determine if a given type is shared. * * @param string $abstract - * @return bool - * @static + * @return bool + * @static */ public static function isShared($abstract) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->isShared($abstract); } - - /** + /** * Determine if a given string is an alias. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function isAlias($name) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->isAlias($name); } - - /** + /** * Register a binding with the container. * * @param string $abstract * @param \Closure|string|null $concrete * @param bool $shared - * @return void - * @static + * @return void + * @throws \TypeError + * @static */ public static function bind($abstract, $concrete = null, $shared = false) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->bind($abstract, $concrete, $shared); } - - /** + /** * Determine if the container has a method binding. * * @param string $method - * @return bool - * @static + * @return bool + * @static */ public static function hasMethodBinding($method) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->hasMethodBinding($method); } - - /** + /** * Bind a callback to resolve with Container::call. * * @param array|string $method * @param \Closure $callback - * @return void - * @static + * @return void + * @static */ public static function bindMethod($method, $callback) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->bindMethod($method, $callback); } - - /** + /** * Get the method binding for the given method. * * @param string $method * @param mixed $instance - * @return mixed - * @static + * @return mixed + * @static */ public static function callMethodBinding($method, $instance) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->callMethodBinding($method, $instance); } - - /** + /** * Add a contextual binding to the container. * * @param string $concrete * @param string $abstract * @param \Closure|string $implementation - * @return void - * @static + * @return void + * @static */ public static function addContextualBinding($concrete, $abstract, $implementation) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->addContextualBinding($concrete, $abstract, $implementation); } - - /** + /** * Register a binding if it hasn't already been registered. * * @param string $abstract * @param \Closure|string|null $concrete * @param bool $shared - * @return void - * @static + * @return void + * @static */ public static function bindIf($abstract, $concrete = null, $shared = false) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->bindIf($abstract, $concrete, $shared); } - - /** + /** * Register a shared binding in the container. * * @param string $abstract * @param \Closure|string|null $concrete - * @return void - * @static + * @return void + * @static */ public static function singleton($abstract, $concrete = null) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->singleton($abstract, $concrete); } - - /** + /** * Register a shared binding if it hasn't already been registered. * * @param string $abstract * @param \Closure|string|null $concrete - * @return void - * @static + * @return void + * @static */ public static function singletonIf($abstract, $concrete = null) - { - //Method inherited from \Illuminate\Container\Container + { //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. * * @param string $abstract * @param \Closure $closure - * @return void + * @return void * @throws \InvalidArgumentException - * @static + * @static */ public static function extend($abstract, $closure) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->extend($abstract, $closure); } - - /** + /** * Register an existing instance as shared in the container. * * @param string $abstract * @param mixed $instance - * @return mixed - * @static + * @return mixed + * @static */ public static function instance($abstract, $instance) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->instance($abstract, $instance); } - - /** + /** * Assign a set of tags to a given binding. * * @param array|string $abstracts * @param array|mixed $tags - * @return void - * @static + * @return void + * @static */ public static function tag($abstracts, $tags) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->tag($abstracts, $tags); } - - /** + /** * Resolve all of the bindings for a given tag. * * @param string $tag - * @return \Illuminate\Container\iterable - * @static + * @return iterable + * @static */ public static function tagged($tag) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->tagged($tag); } - - /** + /** * Alias a type to a different name. * * @param string $abstract * @param string $alias - * @return void + * @return void * @throws \LogicException - * @static + * @static */ public static function alias($abstract, $alias) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->alias($abstract, $alias); } - - /** + /** * Bind a new callback to an abstract's rebind event. * * @param string $abstract * @param \Closure $callback - * @return mixed - * @static + * @return mixed + * @static */ public static function rebinding($abstract, $callback) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->rebinding($abstract, $callback); } - - /** + /** * Refresh an instance on the given target and method. * * @param string $abstract * @param mixed $target * @param string $method - * @return mixed - * @static + * @return mixed + * @static */ public static function refresh($abstract, $target, $method) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->refresh($abstract, $target, $method); } - - /** + /** * Wrap the given closure such that its dependencies will be injected when executed. * * @param \Closure $callback * @param array $parameters - * @return \Closure - * @static + * @return \Closure + * @static */ public static function wrap($callback, $parameters = []) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->wrap($callback, $parameters); } - - /** + /** * Call the given Closure / class@method and inject its dependencies. * * @param callable|string $callback - * @param array $parameters + * @param array $parameters * @param string|null $defaultMethod - * @return mixed - * @static + * @return mixed + * @throws \InvalidArgumentException + * @static */ public static function call($callback, $parameters = [], $defaultMethod = null) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->call($callback, $parameters, $defaultMethod); } - - /** + /** * Get a closure to resolve the given type from the container. * * @param string $abstract - * @return \Closure - * @static + * @return \Closure + * @static */ public static function factory($abstract) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->factory($abstract); } - - /** + /** * An alias function name for make(). * - * @param string $abstract + * @param string|callable $abstract * @param array $parameters - * @return mixed - * @static + * @return mixed + * @throws \Illuminate\Contracts\Container\BindingResolutionException + * @static */ public static function makeWith($abstract, $parameters = []) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->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. * @return mixed Entry. - * @static + * @static */ public static function get($id) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->get($id); } - - /** + /** * Instantiate a concrete instance of the given type. * - * @param string $concrete - * @return mixed + * @param \Closure|string $concrete + * @return mixed * @throws \Illuminate\Contracts\Container\BindingResolutionException - * @static + * @throws \Illuminate\Contracts\Container\CircularDependencyException + * @static */ public static function build($concrete) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->build($concrete); } - - /** + /** + * Register a new before resolving callback for all types. + * + * @param \Closure|string $abstract + * @param \Closure|null $callback + * @return void + * @static + */ + public static function beforeResolving($abstract, $callback = null) + { //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->beforeResolving($abstract, $callback); + } + /** * Register a new resolving callback. * * @param \Closure|string $abstract * @param \Closure|null $callback - * @return void - * @static + * @return void + * @static */ public static function resolving($abstract, $callback = null) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->resolving($abstract, $callback); } - - /** + /** * Register a new after resolving callback for all types. * * @param \Closure|string $abstract * @param \Closure|null $callback - * @return void - * @static + * @return void + * @static */ public static function afterResolving($abstract, $callback = null) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->afterResolving($abstract, $callback); } - - /** + /** * Get the container's bindings. * - * @return array - * @static + * @return array + * @static */ public static function getBindings() - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->getBindings(); } - - /** + /** * Get the alias for an abstract if available. * * @param string $abstract - * @return string - * @static + * @return string + * @static */ public static function getAlias($abstract) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->getAlias($abstract); } - - /** + /** * Remove all of the extender callbacks for a given type. * * @param string $abstract - * @return void - * @static + * @return void + * @static */ public static function forgetExtenders($abstract) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->forgetExtenders($abstract); } - - /** + /** * Remove a resolved instance from the instance cache. * * @param string $abstract - * @return void - * @static + * @return void + * @static */ public static function forgetInstance($abstract) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->forgetInstance($abstract); } - - /** + /** * Clear all of the instances from the container. * - * @return void - * @static + * @return void + * @static */ public static function forgetInstances() - { - //Method inherited from \Illuminate\Container\Container + { //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. * - * @return static - * @static + * @return static + * @static */ public static function getInstance() - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container return \Illuminate\Foundation\Application::getInstance(); } - - /** + /** * Set the shared instance of the container. * * @param \Illuminate\Contracts\Container\Container|null $container - * @return \Illuminate\Contracts\Container\Container|static - * @static + * @return \Illuminate\Contracts\Container\Container|static + * @static */ public static function setInstance($container = null) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container return \Illuminate\Foundation\Application::setInstance($container); } - - /** + /** * Determine if a given offset exists. * * @param string $key - * @return bool - * @static + * @return bool + * @static */ public static function offsetExists($key) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->offsetExists($key); } - - /** + /** * Get the value at a given offset. * * @param string $key - * @return mixed - * @static + * @return mixed + * @static */ public static function offsetGet($key) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ return $instance->offsetGet($key); } - - /** + /** * Set the value at a given offset. * * @param string $key * @param mixed $value - * @return void - * @static + * @return void + * @static */ public static function offsetSet($key, $value) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->offsetSet($key, $value); } - - /** + /** * Unset the value at a given offset. * * @param string $key - * @return void - * @static + * @return void + * @static */ public static function offsetUnset($key) - { - //Method inherited from \Illuminate\Container\Container + { //Method inherited from \Illuminate\Container\Container /** @var \Illuminate\Foundation\Application $instance */ $instance->offsetUnset($key); } } - - /** - * - * + /** * @see \Illuminate\Contracts\Console\Kernel */ - class Artisan { - - /** + class Artisan { + /** * Run the console application. * * @param \Symfony\Component\Console\Input\InputInterface $input * @param \Symfony\Component\Console\Output\OutputInterface|null $output - * @return int - * @static + * @return int + * @static */ public static function handle($input, $output = null) - { - //Method inherited from \Illuminate\Foundation\Console\Kernel + { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ return $instance->handle($input, $output); } - - /** + /** * Terminate the application. * * @param \Symfony\Component\Console\Input\InputInterface $input * @param int $status - * @return void - * @static + * @return void + * @static */ public static function terminate($input, $status) - { - //Method inherited from \Illuminate\Foundation\Console\Kernel + { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ $instance->terminate($input, $status); } - - /** + /** * Register a Closure based command with the application. * * @param string $signature * @param \Closure $callback - * @return \Illuminate\Foundation\Console\ClosureCommand - * @static + * @return \Illuminate\Foundation\Console\ClosureCommand + * @static */ public static function command($signature, $callback) - { - //Method inherited from \Illuminate\Foundation\Console\Kernel + { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ return $instance->command($signature, $callback); } - - /** + /** * Register the given command with the console application. * * @param \Symfony\Component\Console\Command\Command $command - * @return void - * @static + * @return void + * @static */ public static function registerCommand($command) - { - //Method inherited from \Illuminate\Foundation\Console\Kernel + { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ $instance->registerCommand($command); } - - /** + /** * Run an Artisan console command by name. * * @param string $command * @param array $parameters * @param \Symfony\Component\Console\Output\OutputInterface|null $outputBuffer - * @return int + * @return int * @throws \Symfony\Component\Console\Exception\CommandNotFoundException - * @static + * @static */ public static function call($command, $parameters = [], $outputBuffer = null) - { - //Method inherited from \Illuminate\Foundation\Console\Kernel + { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ return $instance->call($command, $parameters, $outputBuffer); } - - /** + /** * Queue the given console command. * * @param string $command * @param array $parameters - * @return \Illuminate\Foundation\Bus\PendingDispatch - * @static + * @return \Illuminate\Foundation\Bus\PendingDispatch + * @static */ public static function queue($command, $parameters = []) - { - //Method inherited from \Illuminate\Foundation\Console\Kernel + { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ return $instance->queue($command, $parameters); } - - /** + /** * Get all of the commands registered with the console. * - * @return array - * @static + * @return array + * @static */ public static function all() - { - //Method inherited from \Illuminate\Foundation\Console\Kernel + { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ return $instance->all(); } - - /** + /** * Get the output for the last run command. * - * @return string - * @static + * @return string + * @static */ public static function output() - { - //Method inherited from \Illuminate\Foundation\Console\Kernel + { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ return $instance->output(); } - - /** + /** * Bootstrap the application for artisan commands. * - * @return void - * @static + * @return void + * @static */ public static function bootstrap() - { - //Method inherited from \Illuminate\Foundation\Console\Kernel + { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ $instance->bootstrap(); } - - /** + /** * Set the Artisan application instance. * * @param \Illuminate\Console\Application $artisan - * @return void - * @static + * @return void + * @static */ public static function setArtisan($artisan) - { - //Method inherited from \Illuminate\Foundation\Console\Kernel + { //Method inherited from \Illuminate\Foundation\Console\Kernel /** @var \App\Console\Kernel $instance */ $instance->setArtisan($artisan); } } - - /** - * - * + /** * @see \Illuminate\Auth\AuthManager * @see \Illuminate\Contracts\Auth\Factory * @see \Illuminate\Contracts\Auth\Guard * @see \Illuminate\Contracts\Auth\StatefulGuard */ - class Auth { - - /** + class Auth { + /** * Attempt to get the guard from the local cache. * * @param string|null $name - * @return \Illuminate\Contracts\Auth\Guard|\Illuminate\Contracts\Auth\StatefulGuard - * @static + * @return \Illuminate\Contracts\Auth\Guard|\Illuminate\Contracts\Auth\StatefulGuard + * @static */ public static function guard($name = null) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->guard($name); } - - /** + /** * Create a session based authentication guard. * * @param string $name * @param array $config - * @return \Illuminate\Auth\SessionGuard - * @static + * @return \Illuminate\Auth\SessionGuard + * @static */ public static function createSessionDriver($name, $config) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->createSessionDriver($name, $config); } - - /** + /** * Create a token based authentication guard. * * @param string $name * @param array $config - * @return \Illuminate\Auth\TokenGuard - * @static + * @return \Illuminate\Auth\TokenGuard + * @static */ public static function createTokenDriver($name, $config) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->createTokenDriver($name, $config); } - - /** + /** * Get the default authentication driver name. * - * @return string - * @static + * @return string + * @static */ public static function getDefaultDriver() { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->getDefaultDriver(); } - - /** + /** * Set the default guard driver the factory should serve. * * @param string $name - * @return void - * @static + * @return void + * @static */ public static function shouldUse($name) { /** @var \Illuminate\Auth\AuthManager $instance */ $instance->shouldUse($name); } - - /** + /** * Set the default authentication driver name. * * @param string $name - * @return void - * @static + * @return void + * @static */ public static function setDefaultDriver($name) { /** @var \Illuminate\Auth\AuthManager $instance */ $instance->setDefaultDriver($name); } - - /** + /** * Register a new callback based request guard. * * @param string $driver * @param callable $callback - * @return \Illuminate\Auth\AuthManager - * @static + * @return \Illuminate\Auth\AuthManager + * @static */ public static function viaRequest($driver, $callback) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->viaRequest($driver, $callback); } - - /** + /** * Get the user resolver callback. * - * @return \Closure - * @static + * @return \Closure + * @static */ public static function userResolver() { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->userResolver(); } - - /** + /** * Set the callback to be used to resolve users. * * @param \Closure $userResolver - * @return \Illuminate\Auth\AuthManager - * @static + * @return \Illuminate\Auth\AuthManager + * @static */ public static function resolveUsersUsing($userResolver) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->resolveUsersUsing($userResolver); } - - /** + /** * Register a custom driver creator Closure. * * @param string $driver * @param \Closure $callback - * @return \Illuminate\Auth\AuthManager - * @static + * @return \Illuminate\Auth\AuthManager + * @static */ public static function extend($driver, $callback) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->extend($driver, $callback); } - - /** + /** * Register a custom provider creator Closure. * * @param string $name * @param \Closure $callback - * @return \Illuminate\Auth\AuthManager - * @static + * @return \Illuminate\Auth\AuthManager + * @static */ public static function provider($name, $callback) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->provider($name, $callback); } - - /** + /** * Determines if any guards have already been resolved. * - * @return bool - * @static + * @return bool + * @static */ public static function hasResolvedGuards() { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->hasResolvedGuards(); } - - /** + /** + * Forget all of the resolved guard instances. + * + * @return \Illuminate\Auth\AuthManager + * @static + */ + public static function forgetGuards() + { + /** @var \Illuminate\Auth\AuthManager $instance */ + return $instance->forgetGuards(); + } + /** + * Set the application instance used by the manager. + * + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Illuminate\Auth\AuthManager + * @static + */ + public static function setApplication($app) + { + /** @var \Illuminate\Auth\AuthManager $instance */ + return $instance->setApplication($app); + } + /** * Create the user provider implementation for the driver. * * @param string|null $provider - * @return \Illuminate\Contracts\Auth\UserProvider|null + * @return \Illuminate\Contracts\Auth\UserProvider|null * @throws \InvalidArgumentException - * @static + * @static */ public static function createUserProvider($provider = null) { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->createUserProvider($provider); } - - /** + /** * Get the default user provider name. * - * @return string - * @static + * @return string + * @static */ public static function getDefaultUserProvider() { /** @var \Illuminate\Auth\AuthManager $instance */ return $instance->getDefaultUserProvider(); } - - /** + /** * Get the currently authenticated user. * - * @return \App\User|null - * @static + * @return \App\User|null + * @static */ public static function user() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->user(); } - - /** + /** * Get the ID for the currently authenticated user. * - * @return int|null - * @static + * @return int|string|null + * @static */ public static function id() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->id(); } - - /** + /** * Log a user into the application without sessions or cookies. * * @param array $credentials - * @return bool - * @static + * @return bool + * @static */ public static function once($credentials = []) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->once($credentials); } - - /** + /** * Log the given user ID into the application without sessions or cookies. * * @param mixed $id - * @return \App\User|false - * @static + * @return \App\User|false + * @static */ public static function onceUsingId($id) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->onceUsingId($id); } - - /** + /** * Validate a user's credentials. * * @param array $credentials - * @return bool - * @static + * @return bool + * @static */ public static function validate($credentials = []) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->validate($credentials); } - - /** + /** * Attempt to authenticate using HTTP Basic Auth. * * @param string $field * @param array $extraConditions - * @return \Symfony\Component\HttpFoundation\Response|null - * @static + * @return \Symfony\Component\HttpFoundation\Response|null + * @static */ public static function basic($field = 'email', $extraConditions = []) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->basic($field, $extraConditions); } - - /** + /** * Perform a stateless HTTP Basic login attempt. * * @param string $field * @param array $extraConditions - * @return \Symfony\Component\HttpFoundation\Response|null - * @static + * @return \Symfony\Component\HttpFoundation\Response|null + * @static */ public static function onceBasic($field = 'email', $extraConditions = []) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->onceBasic($field, $extraConditions); } - - /** + /** * Attempt to authenticate a user using the given credentials. * * @param array $credentials * @param bool $remember - * @return bool - * @static + * @return bool + * @static */ 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. * * @param mixed $id * @param bool $remember - * @return \App\User|false - * @static + * @return \App\User|false + * @static */ public static function loginUsingId($id, $remember = false) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->loginUsingId($id, $remember); } - - /** + /** * Log a user into the application. * * @param \Illuminate\Contracts\Auth\Authenticatable $user * @param bool $remember - * @return void - * @static + * @return void + * @static */ public static function login($user, $remember = false) { /** @var \Illuminate\Auth\SessionGuard $instance */ $instance->login($user, $remember); } - - /** + /** * Log the user out of the application. * - * @return void - * @static + * @return void + * @static */ public static function logout() { /** @var \Illuminate\Auth\SessionGuard $instance */ $instance->logout(); } - - /** + /** * Log the user out of the application on their current device only. * - * @return void - * @static + * This method does not cycle the "remember" token. + * + * @return void + * @static */ public static function logoutCurrentDevice() { /** @var \Illuminate\Auth\SessionGuard $instance */ $instance->logoutCurrentDevice(); } - - /** + /** * Invalidate other sessions for the current user. - * + * * The application must be using the AuthenticateSession middleware. * * @param string $password * @param string $attribute - * @return bool|null - * @static + * @return \App\User|null + * @throws \Illuminate\Auth\AuthenticationException + * @static */ public static function logoutOtherDevices($password, $attribute = 'password') { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->logoutOtherDevices($password, $attribute); } - - /** + /** * Register an authentication attempt event listener. * * @param mixed $callback - * @return void - * @static + * @return void + * @static */ public static function attempting($callback) { /** @var \Illuminate\Auth\SessionGuard $instance */ $instance->attempting($callback); } - - /** + /** * Get the last user we attempted to authenticate. * - * @return \App\User - * @static + * @return \App\User + * @static */ public static function getLastAttempted() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getLastAttempted(); } - - /** + /** * Get a unique identifier for the auth session value. * - * @return string - * @static + * @return string + * @static */ public static function getName() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getName(); } - - /** + /** * Get the name of the cookie used to store the "recaller". * - * @return string - * @static + * @return string + * @static */ public static function getRecallerName() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getRecallerName(); } - - /** + /** * Determine if the user was authenticated via "remember me" cookie. * - * @return bool - * @static + * @return bool + * @static */ public static function viaRemember() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->viaRemember(); } - - /** + /** + * Set the number of minutes the remember me cookie should be valid for. + * + * @param int $minutes + * @return \Illuminate\Auth\SessionGuard + * @static + */ + public static function setRememberDuration($minutes) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->setRememberDuration($minutes); + } + /** * Get the cookie creator instance used by the guard. * - * @return \Illuminate\Contracts\Cookie\QueueingFactory + * @return \Illuminate\Contracts\Cookie\QueueingFactory * @throws \RuntimeException - * @static + * @static */ public static function getCookieJar() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getCookieJar(); } - - /** + /** * Set the cookie creator instance used by the guard. * * @param \Illuminate\Contracts\Cookie\QueueingFactory $cookie - * @return void - * @static + * @return void + * @static */ public static function setCookieJar($cookie) { /** @var \Illuminate\Auth\SessionGuard $instance */ $instance->setCookieJar($cookie); } - - /** + /** * Get the event dispatcher instance. * - * @return \Illuminate\Contracts\Events\Dispatcher - * @static + * @return \Illuminate\Contracts\Events\Dispatcher + * @static */ public static function getDispatcher() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getDispatcher(); } - - /** + /** * Set the event dispatcher instance. * * @param \Illuminate\Contracts\Events\Dispatcher $events - * @return void - * @static + * @return void + * @static */ public static function setDispatcher($events) { /** @var \Illuminate\Auth\SessionGuard $instance */ $instance->setDispatcher($events); } - - /** + /** * Get the session store used by the guard. * - * @return \Illuminate\Contracts\Session\Session - * @static + * @return \Illuminate\Contracts\Session\Session + * @static */ public static function getSession() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getSession(); } - - /** + /** * Return the currently cached user. * - * @return \App\User|null - * @static + * @return \App\User|null + * @static */ public static function getUser() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getUser(); } - - /** + /** * Set the current user. * * @param \Illuminate\Contracts\Auth\Authenticatable $user - * @return \Illuminate\Auth\SessionGuard - * @static + * @return \Illuminate\Auth\SessionGuard + * @static */ public static function setUser($user) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->setUser($user); } - - /** + /** * Get the current request instance. * - * @return \Symfony\Component\HttpFoundation\Request - * @static + * @return \Symfony\Component\HttpFoundation\Request + * @static */ public static function getRequest() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getRequest(); } - - /** + /** * Set the current request instance. * * @param \Symfony\Component\HttpFoundation\Request $request - * @return \Illuminate\Auth\SessionGuard - * @static + * @return \Illuminate\Auth\SessionGuard + * @static */ public static function setRequest($request) { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->setRequest($request); } - - /** - * Determine if current user is authenticated. If not, throw an exception. + /** + * Get the timebox instance used by the guard. * - * @return \App\User + * @return \Illuminate\Support\Timebox + * @static + */ + public static function getTimebox() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->getTimebox(); + } + /** + * Determine if the current user is authenticated. If not, throw an exception. + * + * @return \App\User * @throws \Illuminate\Auth\AuthenticationException - * @static + * @static */ public static function authenticate() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->authenticate(); } - - /** + /** * Determine if the guard has a user instance. * - * @return bool - * @static + * @return bool + * @static */ public static function hasUser() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->hasUser(); } - - /** + /** * Determine if the current user is authenticated. * - * @return bool - * @static + * @return bool + * @static */ public static function check() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->check(); } - - /** + /** * Determine if the current user is a guest. * - * @return bool - * @static + * @return bool + * @static */ public static function guest() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->guest(); } - - /** + /** * Get the user provider used by the guard. * - * @return \Illuminate\Contracts\Auth\UserProvider - * @static + * @return \Illuminate\Contracts\Auth\UserProvider + * @static */ public static function getProvider() { /** @var \Illuminate\Auth\SessionGuard $instance */ return $instance->getProvider(); } - - /** + /** * Set the user provider used by the guard. * * @param \Illuminate\Contracts\Auth\UserProvider $provider - * @return void - * @static + * @return void + * @static */ public static function setProvider($provider) { /** @var \Illuminate\Auth\SessionGuard $instance */ $instance->setProvider($provider); } - - /** + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Illuminate\Auth\SessionGuard::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Illuminate\Auth\SessionGuard::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Illuminate\Auth\SessionGuard::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\Auth\SessionGuard::flushMacros(); } } - - /** - * - * + /** * @see \Illuminate\View\Compilers\BladeCompiler */ - class Blade { - - /** + class Blade { + /** * Compile the view at the given path. * * @param string|null $path - * @return void - * @static + * @return void + * @static */ public static function compile($path = null) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->compile($path); } - - /** + /** * Get the path currently being compiled. * - * @return string - * @static + * @return string + * @static */ public static function getPath() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->getPath(); } - - /** + /** * Set the path currently being compiled. * * @param string $path - * @return void - * @static + * @return void + * @static */ public static function setPath($path) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->setPath($path); } - - /** + /** * Compile the given Blade template contents. * * @param string $value - * @return string - * @static + * @return string + * @static */ public static function compileString($value) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->compileString($value); } - - /** + /** + * Evaluate and render a Blade string to HTML. + * + * @param string $string + * @param array $data + * @param bool $deleteCachedView + * @return string + * @static + */ + public static function render($string, $data = [], $deleteCachedView = false) + { + return \Illuminate\View\Compilers\BladeCompiler::render($string, $data, $deleteCachedView); + } + /** + * Render a component instance to HTML. + * + * @param \Illuminate\View\Component $component + * @return string + * @static + */ + public static function renderComponent($component) + { + return \Illuminate\View\Compilers\BladeCompiler::renderComponent($component); + } + /** * Strip the parentheses from the given expression. * * @param string $expression - * @return string - * @static + * @return string + * @static */ public static function stripParentheses($expression) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->stripParentheses($expression); } - - /** + /** * Register a custom Blade compiler. * * @param callable $compiler - * @return void - * @static + * @return void + * @static */ public static function extend($compiler) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->extend($compiler); } - - /** + /** * Get the extensions used by the compiler. * - * @return array - * @static + * @return array + * @static */ public static function getExtensions() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->getExtensions(); } - - /** + /** * Register an "if" statement directive. * * @param string $name * @param callable $callback - * @return void - * @static + * @return void + * @static */ public static function if($name, $callback) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->if($name, $callback); } - - /** + /** * Check the result of a condition. * * @param string $name * @param array $parameters - * @return bool - * @static + * @return bool + * @static */ public static function check($name, ...$parameters) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->check($name, ...$parameters); } - - /** + /** + * Register a class-based component alias directive. + * + * @param string $class + * @param string|null $alias + * @param string $prefix + * @return void + * @static + */ + public static function component($class, $alias = null, $prefix = '') + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->component($class, $alias, $prefix); + } + /** + * Register an array of class-based components. + * + * @param array $components + * @param string $prefix + * @return void + * @static + */ + public static function components($components, $prefix = '') + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->components($components, $prefix); + } + /** + * Get the registered class component aliases. + * + * @return array + * @static + */ + public static function getClassComponentAliases() + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + return $instance->getClassComponentAliases(); + } + /** + * Register a class-based component namespace. + * + * @param string $namespace + * @param string $prefix + * @return void + * @static + */ + public static function componentNamespace($namespace, $prefix) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->componentNamespace($namespace, $prefix); + } + /** + * Get the registered class component namespaces. + * + * @return array + * @static + */ + public static function getClassComponentNamespaces() + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + return $instance->getClassComponentNamespaces(); + } + /** * Register a component alias directive. * * @param string $path * @param string|null $alias - * @return void - * @static + * @return void + * @static */ - public static function component($path, $alias = null) + public static function aliasComponent($path, $alias = null) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ - $instance->component($path, $alias); + $instance->aliasComponent($path, $alias); } - - /** + /** * Register an include alias directive. * * @param string $path * @param string|null $alias - * @return void - * @static + * @return void + * @static */ public static function include($path, $alias = null) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->include($path, $alias); } - - /** + /** + * Register an include alias directive. + * + * @param string $path + * @param string|null $alias + * @return void + * @static + */ + public static function aliasInclude($path, $alias = null) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->aliasInclude($path, $alias); + } + /** * Register a handler for custom directives. * * @param string $name * @param callable $handler - * @return void + * @return void * @throws \InvalidArgumentException - * @static + * @static */ public static function directive($name, $handler) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->directive($name, $handler); } - - /** + /** * Get the list of custom directives. * - * @return array - * @static + * @return array + * @static */ public static function getCustomDirectives() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->getCustomDirectives(); } - - /** + /** + * Register a new precompiler. + * + * @param callable $precompiler + * @return void + * @static + */ + public static function precompiler($precompiler) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->precompiler($precompiler); + } + /** * Set the echo format to be used by the compiler. * * @param string $format - * @return void - * @static + * @return void + * @static */ public static function setEchoFormat($format) { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->setEchoFormat($format); } - - /** + /** * Set the "echo" format to double encode entities. * - * @return void - * @static + * @return void + * @static */ public static function withDoubleEncoding() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->withDoubleEncoding(); } - - /** + /** * Set the "echo" format to not double encode entities. * - * @return void - * @static + * @return void + * @static */ public static function withoutDoubleEncoding() { /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ $instance->withoutDoubleEncoding(); } - - /** + /** + * Indicate that component tags should not be compiled. + * + * @return void + * @static + */ + public static function withoutComponentTags() + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->withoutComponentTags(); + } + /** * Get the path to the compiled version of a view. * * @param string $path - * @return string - * @static + * @return string + * @static */ public static function getCompiledPath($path) - { - //Method inherited from \Illuminate\View\Compilers\Compiler + { //Method inherited from \Illuminate\View\Compilers\Compiler /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->getCompiledPath($path); } - - /** + /** * Determine if the view at the given path is expired. * * @param string $path - * @return bool - * @static + * @return bool + * @static */ public static function isExpired($path) - { - //Method inherited from \Illuminate\View\Compilers\Compiler + { //Method inherited from \Illuminate\View\Compilers\Compiler /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ return $instance->isExpired($path); + } + /** + * Get a new component hash for a component name. + * + * @param string $component + * @return string + * @static + */ + public static function newComponentHash($component) + { + return \Illuminate\View\Compilers\BladeCompiler::newComponentHash($component); + } + /** + * Compile a class component opening. + * + * @param string $component + * @param string $alias + * @param string $data + * @param string $hash + * @return string + * @static + */ + public static function compileClassComponentOpening($component, $alias, $data, $hash) + { + return \Illuminate\View\Compilers\BladeCompiler::compileClassComponentOpening($component, $alias, $data, $hash); + } + /** + * Compile the end-component statements into valid PHP. + * + * @return string + * @static + */ + public static function compileEndComponentClass() + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + return $instance->compileEndComponentClass(); + } + /** + * Sanitize the given component attribute value. + * + * @param mixed $value + * @return mixed + * @static + */ + public static function sanitizeComponentAttribute($value) + { + return \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($value); + } + /** + * Compile an end-once block into valid PHP. + * + * @return string + * @static + */ + 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. + * + * @param string $value + * @return string + * @static + */ + 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); } } - - /** - * - * + /** * @method static \Illuminate\Broadcasting\Broadcasters\Broadcaster channel(string $channel, callable|string $callback, array $options = []) * @method static mixed auth(\Illuminate\Http\Request $request) * @see \Illuminate\Contracts\Broadcasting\Factory */ - class Broadcast { - - /** + class Broadcast { + /** * Register the routes for handling broadcast authentication and sockets. * * @param array|null $attributes - * @return void - * @static + * @return void + * @static */ public static function routes($attributes = null) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ $instance->routes($attributes); } - - /** + /** * Get the socket ID for the given request. * * @param \Illuminate\Http\Request|null $request - * @return string|null - * @static + * @return string|null + * @static */ public static function socket($request = null) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->socket($request); } - - /** + /** * Begin broadcasting an event. * * @param mixed|null $event - * @return \Illuminate\Broadcasting\PendingBroadcast|void - * @static + * @return \Illuminate\Broadcasting\PendingBroadcast + * @static */ public static function event($event = null) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->event($event); } - - /** + /** * Queue the given event for broadcast. * * @param mixed $event - * @return void - * @static + * @return void + * @static */ public static function queue($event) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ $instance->queue($event); } - - /** + /** * Get a driver instance. * * @param string|null $driver - * @return mixed - * @static + * @return mixed + * @static */ public static function connection($driver = null) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->connection($driver); } - - /** + /** * Get a driver instance. * * @param string|null $name - * @return mixed - * @static + * @return mixed + * @static */ public static function driver($name = null) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->driver($name); } - - /** + /** * Get the default driver name. * - * @return string - * @static + * @return string + * @static */ public static function getDefaultDriver() { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->getDefaultDriver(); } - - /** + /** * Set the default driver name. * * @param string $name - * @return void - * @static + * @return void + * @static */ public static function setDefaultDriver($name) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ $instance->setDefaultDriver($name); } - - /** + /** + * Disconnect the given disk and remove from local cache. + * + * @param string|null $name + * @return void + * @static + */ + public static function purge($name = null) + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + $instance->purge($name); + } + /** * Register a custom driver creator Closure. * * @param string $driver * @param \Closure $callback - * @return \Illuminate\Broadcasting\BroadcastManager - * @static + * @return \Illuminate\Broadcasting\BroadcastManager + * @static */ public static function extend($driver, $callback) { /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ return $instance->extend($driver, $callback); + } + /** + * Get the application instance used by the manager. + * + * @return \Illuminate\Contracts\Foundation\Application + * @static + */ + public static function getApplication() + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + return $instance->getApplication(); + } + /** + * Set the application instance used by the manager. + * + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Illuminate\Broadcasting\BroadcastManager + * @static + */ + public static function setApplication($app) + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + return $instance->setApplication($app); + } + /** + * Forget all of the resolved driver instances. + * + * @return \Illuminate\Broadcasting\BroadcastManager + * @static + */ + public static function forgetDrivers() + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + return $instance->forgetDrivers(); } } - - /** - * - * + /** * @see \Illuminate\Contracts\Bus\Dispatcher */ - class Bus { - - /** + class Bus { + /** * Dispatch a command to its appropriate handler. * * @param mixed $command - * @return mixed - * @static + * @return mixed + * @static */ public static function dispatch($command) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->dispatch($command); } - - /** + /** * Dispatch a command to its appropriate handler in the current process. * + * Queueable jobs will be dispatched to the "sync" queue. + * * @param mixed $command * @param mixed $handler - * @return mixed - * @static + * @return mixed + * @static + */ + public static function dispatchSync($command, $handler = null) + { + /** @var \Illuminate\Bus\Dispatcher $instance */ + return $instance->dispatchSync($command, $handler); + } + /** + * Dispatch a command to its appropriate handler in the current process without using the synchronous queue. + * + * @param mixed $command + * @param mixed $handler + * @return mixed + * @static */ public static function dispatchNow($command, $handler = null) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->dispatchNow($command, $handler); } - - /** + /** + * Attempt to find the batch with the given ID. + * + * @param string $batchId + * @return \Illuminate\Bus\Batch|null + * @static + */ + public static function findBatch($batchId) + { + /** @var \Illuminate\Bus\Dispatcher $instance */ + return $instance->findBatch($batchId); + } + /** + * Create a new batch of queueable jobs. + * + * @param \Illuminate\Support\Collection|array|mixed $jobs + * @return \Illuminate\Bus\PendingBatch + * @static + */ + public static function batch($jobs) + { + /** @var \Illuminate\Bus\Dispatcher $instance */ + return $instance->batch($jobs); + } + /** + * Create a new chain of queueable jobs. + * + * @param \Illuminate\Support\Collection|array $jobs + * @return \Illuminate\Foundation\Bus\PendingChain + * @static + */ + public static function chain($jobs) + { + /** @var \Illuminate\Bus\Dispatcher $instance */ + return $instance->chain($jobs); + } + /** * Determine if the given command has a handler. * * @param mixed $command - * @return bool - * @static + * @return bool + * @static */ public static function hasCommandHandler($command) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->hasCommandHandler($command); } - - /** + /** * Retrieve the handler for a command. * * @param mixed $command - * @return bool|mixed - * @static + * @return bool|mixed + * @static */ public static function getCommandHandler($command) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->getCommandHandler($command); } - - /** + /** * Dispatch a command to its appropriate handler behind a queue. * * @param mixed $command - * @return mixed - * @static + * @return mixed + * @throws \RuntimeException + * @static */ public static function dispatchToQueue($command) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->dispatchToQueue($command); } - - /** + /** * Dispatch a command to its appropriate handler after the current process. * * @param mixed $command * @param mixed $handler - * @return void - * @static + * @return void + * @static */ public static function dispatchAfterResponse($command, $handler = null) { /** @var \Illuminate\Bus\Dispatcher $instance */ $instance->dispatchAfterResponse($command, $handler); } - - /** + /** * Set the pipes through which commands should be piped before dispatching. * * @param array $pipes - * @return \Illuminate\Bus\Dispatcher - * @static + * @return \Illuminate\Bus\Dispatcher + * @static */ public static function pipeThrough($pipes) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->pipeThrough($pipes); } - - /** + /** * Map a command to a handler. * * @param array $map - * @return \Illuminate\Bus\Dispatcher - * @static + * @return \Illuminate\Bus\Dispatcher + * @static */ public static function map($map) { /** @var \Illuminate\Bus\Dispatcher $instance */ return $instance->map($map); } - - /** + /** * Assert if a job was dispatched based on a truth-test callback. * - * @param string $command + * @param string|\Closure $command * @param callable|int|null $callback - * @return void - * @static + * @return void + * @static */ public static function assertDispatched($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertDispatched($command, $callback); } - - /** + /** * Assert if a job was pushed a number of times. * * @param string $command * @param int $times - * @return void - * @static + * @return void + * @static */ public static function assertDispatchedTimes($command, $times = 1) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertDispatchedTimes($command, $times); } - - /** + /** * Determine if a job was dispatched based on a truth-test callback. * - * @param string $command + * @param string|\Closure $command * @param callable|null $callback - * @return void - * @static + * @return void + * @static */ public static function assertNotDispatched($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertNotDispatched($command, $callback); } - - /** - * Assert if a job was dispatched after the response was sent based on a truth-test callback. + /** + * Assert that no jobs were dispatched. + * + * @return void + * @static + */ + public static function assertNothingDispatched() + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + $instance->assertNothingDispatched(); + } + /** + * 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. + * + * @param string|\Closure $command * @param callable|int|null $callback - * @return void - * @static + * @return void + * @static */ public static function assertDispatchedAfterResponse($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertDispatchedAfterResponse($command, $callback); } - - /** + /** * Assert if a job was pushed after the response was sent a number of times. * * @param string $command * @param int $times - * @return void - * @static + * @return void + * @static */ public static function assertDispatchedAfterResponseTimes($command, $times = 1) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertDispatchedAfterResponseTimes($command, $times); } - - /** + /** * Determine if a job was dispatched based on a truth-test callback. * - * @param string $command + * @param string|\Closure $command * @param callable|null $callback - * @return void - * @static + * @return void + * @static */ public static function assertNotDispatchedAfterResponse($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ $instance->assertNotDispatchedAfterResponse($command, $callback); } - - /** + /** + * Assert if a chain of jobs was dispatched. + * + * @param array $expectedChain + * @return void + * @static + */ + public static function assertChained($expectedChain) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + $instance->assertChained($expectedChain); + } + /** + * Assert if a job was dispatched with an empty chain based on a truth-test callback. + * + * @param string|\Closure $command + * @param callable|null $callback + * @return void + * @static + */ + public static function assertDispatchedWithoutChain($command, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + $instance->assertDispatchedWithoutChain($command, $callback); + } + /** + * Assert if a batch was dispatched based on a truth-test callback. + * + * @param callable $callback + * @return void + * @static + */ + public static function assertBatched($callback) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + $instance->assertBatched($callback); + } + /** + * Assert the number of batches that have been dispatched. + * + * @param int $count + * @return void + * @static + */ + public static function assertBatchCount($count) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + $instance->assertBatchCount($count); + } + /** * Get all of the jobs matching a truth-test callback. * * @param string $command * @param callable|null $callback - * @return \Illuminate\Support\Collection - * @static + * @return \Illuminate\Support\Collection + * @static */ 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. * * @param string $command * @param callable|null $callback - * @return \Illuminate\Support\Collection - * @static + * @return \Illuminate\Support\Collection + * @static */ public static function dispatchedAfterResponse($command, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ return $instance->dispatchedAfterResponse($command, $callback); } - - /** + /** + * Get all of the pending batches matching a truth-test callback. + * + * @param callable $callback + * @return \Illuminate\Support\Collection + * @static + */ + public static function batched($callback) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + return $instance->batched($callback); + } + /** * Determine if there are any stored commands for a given class. * * @param string $command - * @return bool - * @static + * @return bool + * @static */ public static function hasDispatched($command) { /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ return $instance->hasDispatched($command); } - - /** + /** * Determine if there are any stored commands for a given class. * * @param string $command - * @return bool - * @static + * @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 */ return $instance->hasDispatchedAfterResponse($command); + } + /** + * Record the fake pending batch dispatch. + * + * @param \Illuminate\Bus\PendingBatch $pendingBatch + * @return \Illuminate\Bus\Batch + * @static + */ + public static function recordPendingBatch($pendingBatch) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + return $instance->recordPendingBatch($pendingBatch); } } - - /** - * - * + /** * @see \Illuminate\Cache\CacheManager * @see \Illuminate\Cache\Repository */ - class Cache { - - /** + class Cache { + /** * Get a cache store instance by name, wrapped in a repository. * * @param string|null $name - * @return \Illuminate\Contracts\Cache\Repository - * @static + * @return \Illuminate\Contracts\Cache\Repository + * @static */ public static function store($name = null) { /** @var \Illuminate\Cache\CacheManager $instance */ return $instance->store($name); } - - /** + /** * Get a cache driver instance. * * @param string|null $driver - * @return \Illuminate\Contracts\Cache\Repository - * @static + * @return \Illuminate\Contracts\Cache\Repository + * @static */ public static function driver($driver = null) { /** @var \Illuminate\Cache\CacheManager $instance */ return $instance->driver($driver); } - - /** + /** * Create a new cache repository with the given implementation. * * @param \Illuminate\Contracts\Cache\Store $store - * @return \Illuminate\Cache\Repository - * @static + * @return \Illuminate\Cache\Repository + * @static */ public static function repository($store) { /** @var \Illuminate\Cache\CacheManager $instance */ return $instance->repository($store); } - - /** + /** * Re-set the event dispatcher on all resolved cache repositories. * - * @return void - * @static + * @return void + * @static */ public static function refreshEventDispatcher() { /** @var \Illuminate\Cache\CacheManager $instance */ $instance->refreshEventDispatcher(); } - - /** + /** * Get the default cache driver name. * - * @return string - * @static + * @return string + * @static */ public static function getDefaultDriver() { /** @var \Illuminate\Cache\CacheManager $instance */ return $instance->getDefaultDriver(); } - - /** + /** * Set the default cache driver name. * * @param string $name - * @return void - * @static + * @return void + * @static */ public static function setDefaultDriver($name) { /** @var \Illuminate\Cache\CacheManager $instance */ $instance->setDefaultDriver($name); } - - /** + /** * Unset the given driver instances. * * @param array|string|null $name - * @return \Illuminate\Cache\CacheManager - * @static + * @return \Illuminate\Cache\CacheManager + * @static */ public static function forgetDriver($name = null) { /** @var \Illuminate\Cache\CacheManager $instance */ return $instance->forgetDriver($name); } - - /** + /** + * Disconnect the given driver and remove from local cache. + * + * @param string|null $name + * @return void + * @static + */ + public static function purge($name = null) + { + /** @var \Illuminate\Cache\CacheManager $instance */ + $instance->purge($name); + } + /** * Register a custom driver creator Closure. * * @param string $driver * @param \Closure $callback - * @return \Illuminate\Cache\CacheManager - * @static + * @return \Illuminate\Cache\CacheManager + * @static */ public static function extend($driver, $callback) { /** @var \Illuminate\Cache\CacheManager $instance */ return $instance->extend($driver, $callback); } - - /** + /** * Determine if an item exists in the cache. * * @param string $key - * @return bool - * @static + * @return bool + * @static */ public static function has($key) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->has($key); } - - /** + /** * Determine if an item doesn't exist in the cache. * * @param string $key - * @return bool - * @static + * @return bool + * @static */ public static function missing($key) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->missing($key); } - - /** + /** * Retrieve an item from the cache by key. * * @param string $key * @param mixed $default - * @return mixed - * @static + * @return mixed + * @static */ public static function get($key, $default = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->get($key, $default); } - - /** + /** * Retrieve multiple items from the cache by key. - * + * * Items not found in the cache will have a null value. * * @param array $keys - * @return array - * @static + * @return array + * @static */ public static function many($keys) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->many($keys); } - - /** + /** * Obtains multiple cache items by their unique keys. * - * @param \Psr\SimpleCache\iterable $keys A list of keys that can obtained in a single operation. + * @return iterable + * @param 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. + * @return iterable A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value. * @throws \Psr\SimpleCache\InvalidArgumentException * MUST be thrown if $keys is neither an array nor a Traversable, * or if any of the $keys are not a legal value. - * @static + * @static */ public static function getMultiple($keys, $default = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->getMultiple($keys, $default); } - - /** + /** * Retrieve an item from the cache and delete it. * * @param string $key * @param mixed $default - * @return mixed - * @static + * @return mixed + * @static */ public static function pull($key, $default = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->pull($key, $default); } - - /** + /** * Store an item in the cache. * * @param string $key * @param mixed $value * @param \DateTimeInterface|\DateInterval|int|null $ttl - * @return bool - * @static + * @return bool + * @static */ public static function put($key, $value, $ttl = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->put($key, $value, $ttl); } - - /** + /** * 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 @@ -3141,32 +3542,31 @@ namespace Illuminate\Support\Facades { * @return bool True on success and false on failure. * @throws \Psr\SimpleCache\InvalidArgumentException * MUST be thrown if the $key string is not a legal value. - * @static + * @static */ public static function set($key, $value, $ttl = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->set($key, $value, $ttl); } - - /** + /** * Store multiple items in the cache for a given number of seconds. * * @param array $values * @param \DateTimeInterface|\DateInterval|int|null $ttl - * @return bool - * @static + * @return bool + * @static */ public static function putMany($values, $ttl = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->putMany($values, $ttl); } - - /** + /** * Persists a set of key => value pairs in the cache, with an optional TTL. * - * @param \Psr\SimpleCache\iterable $values A list of key => value pairs for a multiple-set operation. + * @return bool + * @param 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 * for it or let the driver take care of that. @@ -3174,550 +3574,558 @@ namespace Illuminate\Support\Facades { * @throws \Psr\SimpleCache\InvalidArgumentException * MUST be thrown if $values is neither an array nor a Traversable, * or if any of the $values are not a legal value. - * @static + * @static */ public static function setMultiple($values, $ttl = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->setMultiple($values, $ttl); } - - /** + /** * Store an item in the cache if the key does not exist. * * @param string $key * @param mixed $value * @param \DateTimeInterface|\DateInterval|int|null $ttl - * @return bool - * @static + * @return bool + * @static */ public static function add($key, $value, $ttl = null) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->add($key, $value, $ttl); } - - /** + /** * Increment the value of an item in the cache. * * @param string $key * @param mixed $value - * @return int|bool - * @static + * @return int|bool + * @static */ public static function increment($key, $value = 1) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->increment($key, $value); } - - /** + /** * Decrement the value of an item in the cache. * * @param string $key * @param mixed $value - * @return int|bool - * @static + * @return int|bool + * @static */ public static function decrement($key, $value = 1) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->decrement($key, $value); } - - /** + /** * Store an item in the cache indefinitely. * * @param string $key * @param mixed $value - * @return bool - * @static + * @return bool + * @static */ public static function forever($key, $value) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->forever($key, $value); } - - /** + /** * Get an item from the cache, or execute the given Closure and store the result. * * @param string $key - * @param \DateTimeInterface|\DateInterval|int|null $ttl + * @param \Closure|\DateTimeInterface|\DateInterval|int|null $ttl * @param \Closure $callback - * @return mixed - * @static + * @return mixed + * @static */ public static function remember($key, $ttl, $callback) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->remember($key, $ttl, $callback); } - - /** + /** * Get an item from the cache, or execute the given Closure and store the result forever. * * @param string $key * @param \Closure $callback - * @return mixed - * @static + * @return mixed + * @static */ public static function sear($key, $callback) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->sear($key, $callback); } - - /** + /** * Get an item from the cache, or execute the given Closure and store the result forever. * * @param string $key * @param \Closure $callback - * @return mixed - * @static + * @return mixed + * @static */ public static function rememberForever($key, $callback) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->rememberForever($key, $callback); } - - /** + /** * Remove an item from the cache. * * @param string $key - * @return bool - * @static + * @return bool + * @static */ public static function forget($key) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->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 * MUST be thrown if the $key string is not a legal value. - * @static + * @static */ public static function delete($key) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->delete($key); } - - /** + /** * Deletes multiple cache items in a single operation. * - * @param \Psr\SimpleCache\iterable $keys A list of string-based keys to be deleted. + * @return bool + * @param 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 * MUST be thrown if $keys is neither an array nor a Traversable, * or if any of the $keys are not a legal value. - * @static + * @static */ public static function deleteMultiple($keys) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->deleteMultiple($keys); } - - /** + /** * Wipes clean the entire cache's keys. * + * @return bool * @return bool True on success and false on failure. - * @static + * @static */ public static function clear() { /** @var \Illuminate\Cache\Repository $instance */ return $instance->clear(); } - - /** + /** * Begin executing a new tags operation if the store supports it. * * @param array|mixed $names - * @return \Illuminate\Cache\TaggedCache + * @return \Illuminate\Cache\TaggedCache * @throws \BadMethodCallException - * @static + * @static */ public static function tags($names) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->tags($names); } - - /** + /** + * Determine if the current store supports tags. + * + * @return bool + * @static + */ + public static function supportsTags() + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->supportsTags(); + } + /** * Get the default cache time. * - * @return int|null - * @static + * @return int|null + * @static */ public static function getDefaultCacheTime() { /** @var \Illuminate\Cache\Repository $instance */ return $instance->getDefaultCacheTime(); } - - /** + /** * Set the default cache time in seconds. * * @param int|null $seconds - * @return \Illuminate\Cache\Repository - * @static + * @return \Illuminate\Cache\Repository + * @static */ public static function setDefaultCacheTime($seconds) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->setDefaultCacheTime($seconds); } - - /** + /** * Get the cache store implementation. * - * @return \Illuminate\Contracts\Cache\Store - * @static + * @return \Illuminate\Contracts\Cache\Store + * @static */ public static function getStore() { /** @var \Illuminate\Cache\Repository $instance */ return $instance->getStore(); } - - /** + /** * Get the event dispatcher instance. * - * @return \Illuminate\Contracts\Events\Dispatcher - * @static + * @return \Illuminate\Contracts\Events\Dispatcher + * @static */ public static function getEventDispatcher() { /** @var \Illuminate\Cache\Repository $instance */ return $instance->getEventDispatcher(); } - - /** + /** * Set the event dispatcher instance. * * @param \Illuminate\Contracts\Events\Dispatcher $events - * @return void - * @static + * @return void + * @static */ public static function setEventDispatcher($events) { /** @var \Illuminate\Cache\Repository $instance */ $instance->setEventDispatcher($events); } - - /** + /** * Determine if a cached value exists. * * @param string $key - * @return bool - * @static + * @return bool + * @static */ public static function offsetExists($key) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->offsetExists($key); } - - /** + /** * Retrieve an item from the cache by key. * * @param string $key - * @return mixed - * @static + * @return mixed + * @static */ public static function offsetGet($key) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->offsetGet($key); } - - /** + /** * Store an item in the cache for the default time. * * @param string $key * @param mixed $value - * @return void - * @static + * @return void + * @static */ public static function offsetSet($key, $value) { /** @var \Illuminate\Cache\Repository $instance */ $instance->offsetSet($key, $value); } - - /** + /** * Remove an item from the cache. * * @param string $key - * @return void - * @static + * @return void + * @static */ public static function offsetUnset($key) { /** @var \Illuminate\Cache\Repository $instance */ $instance->offsetUnset($key); } - - /** + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Illuminate\Cache\Repository::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Illuminate\Cache\Repository::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Illuminate\Cache\Repository::hasMacro($name); } - - /** + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\Cache\Repository::flushMacros(); + } + /** * Dynamically handle calls to the class. * * @param string $method * @param array $parameters - * @return mixed + * @return mixed * @throws \BadMethodCallException - * @static + * @static */ public static function macroCall($method, $parameters) { /** @var \Illuminate\Cache\Repository $instance */ return $instance->macroCall($method, $parameters); } - - /** + /** * Remove all items from the cache. * - * @return bool - * @static + * @return bool + * @static */ public static function flush() { /** @var \Illuminate\Cache\FileStore $instance */ return $instance->flush(); } - - /** + /** * Get the Filesystem instance. * - * @return \Illuminate\Filesystem\Filesystem - * @static + * @return \Illuminate\Filesystem\Filesystem + * @static */ public static function getFilesystem() { /** @var \Illuminate\Cache\FileStore $instance */ return $instance->getFilesystem(); } - - /** + /** * Get the working directory of the cache. * - * @return string - * @static + * @return string + * @static */ public static function getDirectory() { /** @var \Illuminate\Cache\FileStore $instance */ return $instance->getDirectory(); } - - /** + /** * Get the cache key prefix. * - * @return string - * @static + * @return string + * @static */ public static function getPrefix() { /** @var \Illuminate\Cache\FileStore $instance */ return $instance->getPrefix(); + } + /** + * Get a lock instance. + * + * @param string $name + * @param int $seconds + * @param string|null $owner + * @return \Illuminate\Contracts\Cache\Lock + * @static + */ + public static function lock($name, $seconds = 0, $owner = null) + { + /** @var \Illuminate\Cache\FileStore $instance */ + return $instance->lock($name, $seconds, $owner); + } + /** + * Restore a lock instance using the owner identifier. + * + * @param string $name + * @param string $owner + * @return \Illuminate\Contracts\Cache\Lock + * @static + */ + public static function restoreLock($name, $owner) + { + /** @var \Illuminate\Cache\FileStore $instance */ + return $instance->restoreLock($name, $owner); } } - - /** - * - * + /** * @see \Illuminate\Config\Repository */ - class Config { - - /** + class Config { + /** * Determine if the given configuration value exists. * * @param string $key - * @return bool - * @static + * @return bool + * @static */ public static function has($key) { /** @var \Illuminate\Config\Repository $instance */ return $instance->has($key); } - - /** + /** * Get the specified configuration value. * * @param array|string $key * @param mixed $default - * @return mixed - * @static + * @return mixed + * @static */ public static function get($key, $default = null) { /** @var \Illuminate\Config\Repository $instance */ return $instance->get($key, $default); } - - /** + /** * Get many configuration values. * * @param array $keys - * @return array - * @static + * @return array + * @static */ public static function getMany($keys) { /** @var \Illuminate\Config\Repository $instance */ return $instance->getMany($keys); } - - /** + /** * Set a given configuration value. * * @param array|string $key * @param mixed $value - * @return void - * @static + * @return void + * @static */ public static function set($key, $value = null) { /** @var \Illuminate\Config\Repository $instance */ $instance->set($key, $value); } - - /** + /** * Prepend a value onto an array configuration value. * * @param string $key * @param mixed $value - * @return void - * @static + * @return void + * @static */ public static function prepend($key, $value) { /** @var \Illuminate\Config\Repository $instance */ $instance->prepend($key, $value); } - - /** + /** * Push a value onto an array configuration value. * * @param string $key * @param mixed $value - * @return void - * @static + * @return void + * @static */ public static function push($key, $value) { /** @var \Illuminate\Config\Repository $instance */ $instance->push($key, $value); } - - /** + /** * Get all of the configuration items for the application. * - * @return array - * @static + * @return array + * @static */ public static function all() { /** @var \Illuminate\Config\Repository $instance */ return $instance->all(); } - - /** + /** * Determine if the given configuration option exists. * * @param string $key - * @return bool - * @static + * @return bool + * @static */ public static function offsetExists($key) { /** @var \Illuminate\Config\Repository $instance */ return $instance->offsetExists($key); } - - /** + /** * Get a configuration option. * * @param string $key - * @return mixed - * @static + * @return mixed + * @static */ public static function offsetGet($key) { /** @var \Illuminate\Config\Repository $instance */ return $instance->offsetGet($key); } - - /** + /** * Set a configuration option. * * @param string $key * @param mixed $value - * @return void - * @static + * @return void + * @static */ public static function offsetSet($key, $value) { /** @var \Illuminate\Config\Repository $instance */ $instance->offsetSet($key, $value); } - - /** + /** * Unset a configuration option. * * @param string $key - * @return void - * @static + * @return void + * @static */ public static function offsetUnset($key) { @@ -3726,15 +4134,11 @@ namespace Illuminate\Support\Facades { } } - - /** - * - * + /** * @see \Illuminate\Cookie\CookieJar */ - class Cookie { - - /** + class Cookie { + /** * Create a new cookie instance. * * @param string $name @@ -3746,16 +4150,15 @@ namespace Illuminate\Support\Facades { * @param bool $httpOnly * @param bool $raw * @param string|null $sameSite - * @return \Symfony\Component\HttpFoundation\Cookie - * @static + * @return \Symfony\Component\HttpFoundation\Cookie + * @static */ public static function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->make($name, $value, $minutes, $path, $domain, $secure, $httpOnly, $raw, $sameSite); } - - /** + /** * Create a cookie that lasts "forever" (five years). * * @param string $name @@ -3766,250 +4169,265 @@ namespace Illuminate\Support\Facades { * @param bool $httpOnly * @param bool $raw * @param string|null $sameSite - * @return \Symfony\Component\HttpFoundation\Cookie - * @static + * @return \Symfony\Component\HttpFoundation\Cookie + * @static */ public static function forever($name, $value, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->forever($name, $value, $path, $domain, $secure, $httpOnly, $raw, $sameSite); } - - /** + /** * Expire the given cookie. * * @param string $name * @param string|null $path * @param string|null $domain - * @return \Symfony\Component\HttpFoundation\Cookie - * @static + * @return \Symfony\Component\HttpFoundation\Cookie + * @static */ public static function forget($name, $path = null, $domain = null) { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->forget($name, $path, $domain); } - - /** + /** * Determine if a cookie has been queued. * * @param string $key * @param string|null $path - * @return bool - * @static + * @return bool + * @static */ public static function hasQueued($key, $path = null) { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->hasQueued($key, $path); } - - /** + /** * Get a queued cookie instance. * * @param string $key * @param mixed $default * @param string|null $path - * @return \Symfony\Component\HttpFoundation\Cookie - * @static + * @return \Symfony\Component\HttpFoundation\Cookie|null + * @static */ public static function queued($key, $default = null, $path = null) { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->queued($key, $default, $path); } - - /** + /** * Queue a cookie to send with the next response. * * @param array $parameters - * @return void - * @static + * @return void + * @static */ 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. * * @param string $name * @param string|null $path - * @return void - * @static + * @return void + * @static */ public static function unqueue($name, $path = null) { /** @var \Illuminate\Cookie\CookieJar $instance */ $instance->unqueue($name, $path); } - - /** + /** * Set the default path and domain for the jar. * * @param string $path * @param string $domain * @param bool $secure * @param string|null $sameSite - * @return \Illuminate\Cookie\CookieJar - * @static + * @return \Illuminate\Cookie\CookieJar + * @static */ public static function setDefaultPathAndDomain($path, $domain, $secure = false, $sameSite = null) { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->setDefaultPathAndDomain($path, $domain, $secure, $sameSite); } - - /** + /** * Get the cookies which have been queued for the next request. * - * @return \Symfony\Component\HttpFoundation\Cookie[] - * @static + * @return \Symfony\Component\HttpFoundation\Cookie[] + * @static */ public static function getQueuedCookies() { /** @var \Illuminate\Cookie\CookieJar $instance */ return $instance->getQueuedCookies(); } - - /** + /** + * Flush the cookies which have been queued for the next request. + * + * @return \Illuminate\Cookie\CookieJar + * @static + */ + public static function flushQueuedCookies() + { + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->flushQueuedCookies(); + } + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Illuminate\Cookie\CookieJar::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Illuminate\Cookie\CookieJar::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Illuminate\Cookie\CookieJar::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\Cookie\CookieJar::flushMacros(); } } - - /** - * - * + /** * @see \Illuminate\Encryption\Encrypter */ - class Crypt { - - /** + class Crypt { + /** * Determine if the given key and cipher combination is valid. * * @param string $key * @param string $cipher - * @return bool - * @static + * @return bool + * @static */ public static function supported($key, $cipher) { return \Illuminate\Encryption\Encrypter::supported($key, $cipher); } - - /** + /** * Create a new encryption key for the given cipher. * * @param string $cipher - * @return string - * @static + * @return string + * @static */ public static function generateKey($cipher) { return \Illuminate\Encryption\Encrypter::generateKey($cipher); } - - /** + /** * Encrypt the given value. * * @param mixed $value * @param bool $serialize - * @return string + * @return string * @throws \Illuminate\Contracts\Encryption\EncryptException - * @static + * @static */ public static function encrypt($value, $serialize = true) { /** @var \Illuminate\Encryption\Encrypter $instance */ return $instance->encrypt($value, $serialize); } - - /** + /** * Encrypt a string without serialization. * * @param string $value - * @return string + * @return string * @throws \Illuminate\Contracts\Encryption\EncryptException - * @static + * @static */ public static function encryptString($value) { /** @var \Illuminate\Encryption\Encrypter $instance */ return $instance->encryptString($value); } - - /** + /** * Decrypt the given value. * * @param string $payload * @param bool $unserialize - * @return mixed + * @return mixed * @throws \Illuminate\Contracts\Encryption\DecryptException - * @static + * @static */ public static function decrypt($payload, $unserialize = true) { /** @var \Illuminate\Encryption\Encrypter $instance */ return $instance->decrypt($payload, $unserialize); } - - /** + /** * Decrypt the given string without unserialization. * * @param string $payload - * @return string + * @return string * @throws \Illuminate\Contracts\Encryption\DecryptException - * @static + * @static */ public static function decryptString($payload) { /** @var \Illuminate\Encryption\Encrypter $instance */ return $instance->decryptString($payload); } - - /** + /** * Get the encryption key. * - * @return string - * @static + * @return string + * @static */ public static function getKey() { @@ -4018,1324 +4436,1377 @@ namespace Illuminate\Support\Facades { } } - - /** - * - * + /** * @see \Illuminate\Database\DatabaseManager * @see \Illuminate\Database\Connection */ - class DB { - - /** + class DB { + /** * Get a database connection instance. * * @param string|null $name - * @return \Illuminate\Database\Connection - * @static + * @return \Illuminate\Database\Connection + * @static */ public static function connection($name = null) { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->connection($name); } - - /** + /** + * Register a custom Doctrine type. + * + * @param string $class + * @param string $name + * @param string $type + * @return void + * @throws \Doctrine\DBAL\DBALException + * @throws \RuntimeException + * @static + */ + public static function registerDoctrineType($class, $name, $type) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + $instance->registerDoctrineType($class, $name, $type); + } + /** * Disconnect from the given database and remove from local cache. * * @param string|null $name - * @return void - * @static + * @return void + * @static */ public static function purge($name = null) { /** @var \Illuminate\Database\DatabaseManager $instance */ $instance->purge($name); } - - /** + /** * Disconnect from the given database. * * @param string|null $name - * @return void - * @static + * @return void + * @static */ public static function disconnect($name = null) { /** @var \Illuminate\Database\DatabaseManager $instance */ $instance->disconnect($name); } - - /** + /** * Reconnect to the given database. * * @param string|null $name - * @return \Illuminate\Database\Connection - * @static + * @return \Illuminate\Database\Connection + * @static */ public static function reconnect($name = null) { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->reconnect($name); } - - /** + /** + * Set the default database connection for the callback execution. + * + * @param string $name + * @param callable $callback + * @return mixed + * @static + */ + public static function usingConnection($name, $callback) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->usingConnection($name, $callback); + } + /** * Get the default connection name. * - * @return string - * @static + * @return string + * @static */ public static function getDefaultConnection() { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->getDefaultConnection(); } - - /** + /** * Set the default connection name. * * @param string $name - * @return void - * @static + * @return void + * @static */ public static function setDefaultConnection($name) { /** @var \Illuminate\Database\DatabaseManager $instance */ $instance->setDefaultConnection($name); } - - /** + /** * Get all of the support drivers. * - * @return array - * @static + * @return array + * @static */ public static function supportedDrivers() { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->supportedDrivers(); } - - /** + /** * Get all of the drivers that are actually available. * - * @return array - * @static + * @return array + * @static */ public static function availableDrivers() { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->availableDrivers(); } - - /** + /** * Register an extension connection resolver. * * @param string $name * @param callable $resolver - * @return void - * @static + * @return void + * @static */ public static function extend($name, $resolver) { /** @var \Illuminate\Database\DatabaseManager $instance */ $instance->extend($name, $resolver); } - - /** + /** * Return all of the created connections. * - * @return array - * @static + * @return array + * @static */ public static function getConnections() { /** @var \Illuminate\Database\DatabaseManager $instance */ return $instance->getConnections(); } - - /** + /** * Set the database reconnector callback. * * @param callable $reconnector - * @return void - * @static + * @return void + * @static */ 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. + * + * @return bool + * @static + */ + public static function isMaria() + { + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->isMaria(); + } + /** * Get a schema builder instance for the connection. * - * @return \Illuminate\Database\Schema\MySqlBuilder - * @static + * @return \Illuminate\Database\Schema\MySqlBuilder + * @static */ public static function getSchemaBuilder() { /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getSchemaBuilder(); } - - /** + /** + * Get the schema state for the connection. + * + * @param \Illuminate\Filesystem\Filesystem|null $files + * @param callable|null $processFactory + * @return \Illuminate\Database\Schema\MySqlSchemaState + * @static + */ + public static function getSchemaState($files = null, $processFactory = null) + { + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getSchemaState($files, $processFactory); + } + /** * Set the query grammar to the default implementation. * - * @return void - * @static + * @return void + * @static */ public static function useDefaultQueryGrammar() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->useDefaultQueryGrammar(); } - - /** + /** * Set the schema grammar to the default implementation. * - * @return void - * @static + * @return void + * @static */ public static function useDefaultSchemaGrammar() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->useDefaultSchemaGrammar(); } - - /** + /** * Set the query post processor to the default implementation. * - * @return void - * @static + * @return void + * @static */ public static function useDefaultPostProcessor() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->useDefaultPostProcessor(); } - - /** + /** * Begin a fluent query against a database table. * * @param \Closure|\Illuminate\Database\Query\Builder|string $table * @param string|null $as - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function table($table, $as = null) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->table($table, $as); } - - /** + /** * Get a new query builder instance. * - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function query() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->query(); } - - /** + /** * Run a select statement and return a single result. * * @param string $query * @param array $bindings * @param bool $useReadPdo - * @return mixed - * @static + * @return mixed + * @static */ public static function selectOne($query, $bindings = [], $useReadPdo = true) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->selectOne($query, $bindings, $useReadPdo); } - - /** + /** * Run a select statement against the database. * * @param string $query * @param array $bindings - * @return array - * @static + * @return array + * @static */ public static function selectFromWriteConnection($query, $bindings = []) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->selectFromWriteConnection($query, $bindings); } - - /** + /** * Run a select statement against the database. * * @param string $query * @param array $bindings * @param bool $useReadPdo - * @return array - * @static + * @return array + * @static */ public static function select($query, $bindings = [], $useReadPdo = true) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->select($query, $bindings, $useReadPdo); } - - /** + /** * Run a select statement against the database and returns a generator. * * @param string $query * @param array $bindings * @param bool $useReadPdo - * @return \Generator - * @static + * @return \Generator + * @static */ public static function cursor($query, $bindings = [], $useReadPdo = true) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->cursor($query, $bindings, $useReadPdo); } - - /** + /** * Run an insert statement against the database. * * @param string $query * @param array $bindings - * @return bool - * @static + * @return bool + * @static */ public static function insert($query, $bindings = []) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->insert($query, $bindings); } - - /** + /** * Run an update statement against the database. * * @param string $query * @param array $bindings - * @return int - * @static + * @return int + * @static */ public static function update($query, $bindings = []) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->update($query, $bindings); } - - /** + /** * Run a delete statement against the database. * * @param string $query * @param array $bindings - * @return int - * @static + * @return int + * @static */ public static function delete($query, $bindings = []) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->delete($query, $bindings); } - - /** + /** * Execute an SQL statement and return the boolean result. * * @param string $query * @param array $bindings - * @return bool - * @static + * @return bool + * @static */ public static function statement($query, $bindings = []) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->statement($query, $bindings); } - - /** + /** * Run an SQL statement and get the number of rows affected. * * @param string $query * @param array $bindings - * @return int - * @static + * @return int + * @static */ public static function affectingStatement($query, $bindings = []) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->affectingStatement($query, $bindings); } - - /** + /** * Run a raw, unprepared query against the PDO connection. * * @param string $query - * @return bool - * @static + * @return bool + * @static */ public static function unprepared($query) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->unprepared($query); } - - /** + /** * Execute the given callback in "dry run" mode. * * @param \Closure $callback - * @return array - * @static + * @return array + * @static */ public static function pretend($callback) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->pretend($callback); } - - /** + /** * Bind values to their parameters in the given statement. * * @param \PDOStatement $statement * @param array $bindings - * @return void - * @static + * @return void + * @static */ public static function bindValues($statement, $bindings) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->bindValues($statement, $bindings); } - - /** + /** * Prepare the query bindings for execution. * * @param array $bindings - * @return array - * @static + * @return array + * @static */ public static function prepareBindings($bindings) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->prepareBindings($bindings); } - - /** + /** * Log a query in the connection's query log. * * @param string $query * @param array $bindings * @param float|null $time - * @return void - * @static + * @return void + * @static */ public static function logQuery($query, $bindings, $time = null) - { - //Method inherited from \Illuminate\Database\Connection + { //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. * * @param \Closure $callback - * @return void - * @static + * @return void + * @static */ public static function listen($callback) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->listen($callback); } - - /** + /** * Get a new raw query expression. * * @param mixed $value - * @return \Illuminate\Database\Query\Expression - * @static + * @return \Illuminate\Database\Query\Expression + * @static */ public static function raw($value) - { - //Method inherited from \Illuminate\Database\Connection + { //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. * * @param bool $value - * @return void - * @static + * @return void + * @static */ public static function recordsHaveBeenModified($value = true) - { - //Method inherited from \Illuminate\Database\Connection + { //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. + * + * @return void + * @static + */ + 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? * - * @return bool - * @static + * @return bool + * @static */ public static function isDoctrineAvailable() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->isDoctrineAvailable(); } - - /** + /** * Get a Doctrine Schema Column instance. * * @param string $table * @param string $column - * @return \Doctrine\DBAL\Schema\Column - * @static + * @return \Doctrine\DBAL\Schema\Column + * @static */ public static function getDoctrineColumn($table, $column) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getDoctrineColumn($table, $column); } - - /** + /** * Get the Doctrine DBAL schema manager for the connection. * - * @return \Doctrine\DBAL\Schema\AbstractSchemaManager - * @static + * @return \Doctrine\DBAL\Schema\AbstractSchemaManager + * @static */ public static function getDoctrineSchemaManager() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getDoctrineSchemaManager(); } - - /** + /** * Get the Doctrine DBAL database connection instance. * - * @return \Doctrine\DBAL\Connection - * @static + * @return \Doctrine\DBAL\Connection + * @static */ public static function getDoctrineConnection() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getDoctrineConnection(); } - - /** + /** * Get the current PDO connection. * - * @return \PDO - * @static + * @return \PDO + * @static */ public static function getPdo() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getPdo(); } - - /** + /** * Get the current PDO connection parameter without executing any reconnect logic. * - * @return \PDO|\Closure|null - * @static + * @return \PDO|\Closure|null + * @static */ public static function getRawPdo() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getRawPdo(); } - - /** + /** * Get the current PDO connection used for reading. * - * @return \PDO - * @static + * @return \PDO + * @static */ public static function getReadPdo() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getReadPdo(); } - - /** + /** * Get the current read PDO connection parameter without executing any reconnect logic. * - * @return \PDO|\Closure|null - * @static + * @return \PDO|\Closure|null + * @static */ public static function getRawReadPdo() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getRawReadPdo(); } - - /** + /** * Set the PDO connection. * * @param \PDO|\Closure|null $pdo - * @return \Illuminate\Database\MySqlConnection - * @static + * @return \Illuminate\Database\MySqlConnection + * @static */ public static function setPdo($pdo) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setPdo($pdo); } - - /** + /** * Set the PDO connection used for reading. * * @param \PDO|\Closure|null $pdo - * @return \Illuminate\Database\MySqlConnection - * @static + * @return \Illuminate\Database\MySqlConnection + * @static */ public static function setReadPdo($pdo) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setReadPdo($pdo); } - - /** + /** * Get the database connection name. * - * @return string|null - * @static + * @return string|null + * @static */ public static function getName() - { - //Method inherited from \Illuminate\Database\Connection + { //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. * * @param string|null $option - * @return mixed - * @static + * @return mixed + * @static */ public static function getConfig($option = null) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getConfig($option); } - - /** + /** * Get the PDO driver name. * - * @return string - * @static + * @return string + * @static */ public static function getDriverName() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getDriverName(); } - - /** + /** * Get the query grammar used by the connection. * - * @return \Illuminate\Database\Query\Grammars\Grammar - * @static + * @return \Illuminate\Database\Query\Grammars\Grammar + * @static */ public static function getQueryGrammar() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getQueryGrammar(); } - - /** + /** * Set the query grammar used by the connection. * * @param \Illuminate\Database\Query\Grammars\Grammar $grammar - * @return \Illuminate\Database\MySqlConnection - * @static + * @return \Illuminate\Database\MySqlConnection + * @static */ public static function setQueryGrammar($grammar) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setQueryGrammar($grammar); } - - /** + /** * Get the schema grammar used by the connection. * - * @return \Illuminate\Database\Schema\Grammars\Grammar - * @static + * @return \Illuminate\Database\Schema\Grammars\Grammar + * @static */ public static function getSchemaGrammar() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getSchemaGrammar(); } - - /** + /** * Set the schema grammar used by the connection. * * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar - * @return \Illuminate\Database\MySqlConnection - * @static + * @return \Illuminate\Database\MySqlConnection + * @static */ public static function setSchemaGrammar($grammar) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setSchemaGrammar($grammar); } - - /** + /** * Get the query post processor used by the connection. * - * @return \Illuminate\Database\Query\Processors\Processor - * @static + * @return \Illuminate\Database\Query\Processors\Processor + * @static */ public static function getPostProcessor() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getPostProcessor(); } - - /** + /** * Set the query post processor used by the connection. * * @param \Illuminate\Database\Query\Processors\Processor $processor - * @return \Illuminate\Database\MySqlConnection - * @static + * @return \Illuminate\Database\MySqlConnection + * @static */ public static function setPostProcessor($processor) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setPostProcessor($processor); } - - /** + /** * Get the event dispatcher used by the connection. * - * @return \Illuminate\Contracts\Events\Dispatcher - * @static + * @return \Illuminate\Contracts\Events\Dispatcher + * @static */ public static function getEventDispatcher() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getEventDispatcher(); } - - /** + /** * Set the event dispatcher instance on the connection. * * @param \Illuminate\Contracts\Events\Dispatcher $events - * @return \Illuminate\Database\MySqlConnection - * @static + * @return \Illuminate\Database\MySqlConnection + * @static */ public static function setEventDispatcher($events) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setEventDispatcher($events); } - - /** + /** * Unset the event dispatcher for this connection. * - * @return void - * @static + * @return void + * @static */ public static function unsetEventDispatcher() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->unsetEventDispatcher(); } - - /** + /** + * Set the transaction manager instance on the connection. + * + * @param \Illuminate\Database\DatabaseTransactionsManager $manager + * @return \Illuminate\Database\MySqlConnection + * @static + */ + public static function setTransactionManager($manager) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setTransactionManager($manager); + } + /** + * Unset the transaction manager for this connection. + * + * @return void + * @static + */ + public static function unsetTransactionManager() + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->unsetTransactionManager(); + } + /** * Determine if the connection is in a "dry run". * - * @return bool - * @static + * @return bool + * @static */ public static function pretending() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->pretending(); } - - /** + /** * Get the connection query log. * - * @return array - * @static + * @return array + * @static */ public static function getQueryLog() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getQueryLog(); } - - /** + /** * Clear the query log. * - * @return void - * @static + * @return void + * @static */ public static function flushQueryLog() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->flushQueryLog(); } - - /** + /** * Enable the query log on the connection. * - * @return void - * @static + * @return void + * @static */ public static function enableQueryLog() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->enableQueryLog(); } - - /** + /** * Disable the query log on the connection. * - * @return void - * @static + * @return void + * @static */ public static function disableQueryLog() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->disableQueryLog(); } - - /** + /** * Determine whether we're logging queries. * - * @return bool - * @static + * @return bool + * @static */ public static function logging() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->logging(); } - - /** + /** * Get the name of the connected database. * - * @return string - * @static + * @return string + * @static */ public static function getDatabaseName() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getDatabaseName(); } - - /** + /** * Set the name of the connected database. * * @param string $database - * @return \Illuminate\Database\MySqlConnection - * @static + * @return \Illuminate\Database\MySqlConnection + * @static */ public static function setDatabaseName($database) - { - //Method inherited from \Illuminate\Database\Connection + { //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. * - * @return string - * @static + * @return string + * @static */ public static function getTablePrefix() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->getTablePrefix(); } - - /** + /** * Set the table prefix in use by the connection. * * @param string $prefix - * @return \Illuminate\Database\MySqlConnection - * @static + * @return \Illuminate\Database\MySqlConnection + * @static */ public static function setTablePrefix($prefix) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->setTablePrefix($prefix); } - - /** + /** * Set the table prefix and return the grammar. * * @param \Illuminate\Database\Grammar $grammar - * @return \Illuminate\Database\Grammar - * @static + * @return \Illuminate\Database\Grammar + * @static */ public static function withTablePrefix($grammar) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->withTablePrefix($grammar); } - - /** + /** * Register a connection resolver. * * @param string $driver * @param \Closure $callback - * @return void - * @static + * @return void + * @static */ public static function resolverFor($driver, $callback) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection \Illuminate\Database\MySqlConnection::resolverFor($driver, $callback); } - - /** + /** * Get the connection resolver for the given driver. * * @param string $driver - * @return mixed - * @static + * @return mixed + * @static */ public static function getResolver($driver) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection return \Illuminate\Database\MySqlConnection::getResolver($driver); } - - /** + /** * Execute a Closure within a transaction. * * @param \Closure $callback * @param int $attempts - * @return mixed - * @throws \Exception|\Throwable - * @static + * @return mixed + * @throws \Throwable + * @static */ public static function transaction($callback, $attempts = 1) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->transaction($callback, $attempts); } - - /** + /** * Start a new database transaction. * - * @return void - * @throws \Exception - * @static + * @return void + * @throws \Throwable + * @static */ public static function beginTransaction() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->beginTransaction(); } - - /** + /** * Commit the active database transaction. * - * @return void - * @static + * @return void + * @throws \Throwable + * @static */ public static function commit() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->commit(); } - - /** + /** * Rollback the active database transaction. * * @param int|null $toLevel - * @return void - * @throws \Exception - * @static + * @return void + * @throws \Throwable + * @static */ public static function rollBack($toLevel = null) - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ $instance->rollBack($toLevel); } - - /** + /** * Get the number of active transactions. * - * @return int - * @static + * @return int + * @static */ public static function transactionLevel() - { - //Method inherited from \Illuminate\Database\Connection + { //Method inherited from \Illuminate\Database\Connection /** @var \Illuminate\Database\MySqlConnection $instance */ return $instance->transactionLevel(); + } + /** + * Execute the callback after a transaction commits. + * + * @param callable $callback + * @return void + * @throws \RuntimeException + * @static + */ + public static function afterCommit($callback) + { //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->afterCommit($callback); } } - - /** - * - * + /** * @see \Illuminate\Events\Dispatcher */ - class Event { - - /** + class Event { + /** * Register an event listener with the dispatcher. * - * @param string|array $events - * @param \Closure|string $listener - * @return void - * @static + * @param \Closure|string|array $events + * @param \Closure|string|array|null $listener + * @return void + * @static */ - public static function listen($events, $listener) + public static function listen($events, $listener = null) { /** @var \Illuminate\Events\Dispatcher $instance */ $instance->listen($events, $listener); } - - /** + /** * Determine if a given event has listeners. * * @param string $eventName - * @return bool - * @static + * @return bool + * @static */ public static function hasListeners($eventName) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->hasListeners($eventName); } - - /** + /** * Determine if the given event has any wildcard listeners. * * @param string $eventName - * @return bool - * @static + * @return bool + * @static */ public static function hasWildcardListeners($eventName) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->hasWildcardListeners($eventName); } - - /** + /** * Register an event and payload to be fired later. * * @param string $event * @param array $payload - * @return void - * @static + * @return void + * @static */ public static function push($event, $payload = []) { /** @var \Illuminate\Events\Dispatcher $instance */ $instance->push($event, $payload); } - - /** + /** * Flush a set of pushed events. * * @param string $event - * @return void - * @static + * @return void + * @static */ public static function flush($event) { /** @var \Illuminate\Events\Dispatcher $instance */ $instance->flush($event); } - - /** + /** * Register an event subscriber with the dispatcher. * * @param object|string $subscriber - * @return void - * @static + * @return void + * @static */ public static function subscribe($subscriber) { /** @var \Illuminate\Events\Dispatcher $instance */ $instance->subscribe($subscriber); } - - /** + /** * Fire an event until the first non-null response is returned. * * @param string|object $event * @param mixed $payload - * @return array|null - * @static + * @return array|null + * @static */ public static function until($event, $payload = []) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->until($event, $payload); } - - /** + /** * Fire an event and call the listeners. * * @param string|object $event * @param mixed $payload * @param bool $halt - * @return array|null - * @static + * @return array|null + * @static */ public static function dispatch($event, $payload = [], $halt = false) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->dispatch($event, $payload, $halt); } - - /** + /** * Get all of the listeners for a given event name. * * @param string $eventName - * @return array - * @static + * @return array + * @static */ public static function getListeners($eventName) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->getListeners($eventName); } - - /** + /** * Register an event listener with the dispatcher. * - * @param \Closure|string $listener + * @param \Closure|string|array $listener * @param bool $wildcard - * @return \Closure - * @static + * @return \Closure + * @static */ public static function makeListener($listener, $wildcard = false) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->makeListener($listener, $wildcard); } - - /** + /** * Create a class based listener using the IoC container. * * @param string $listener * @param bool $wildcard - * @return \Closure - * @static + * @return \Closure + * @static */ public static function createClassListener($listener, $wildcard = false) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->createClassListener($listener, $wildcard); } - - /** + /** * Remove a set of listeners from the dispatcher. * * @param string $event - * @return void - * @static + * @return void + * @static */ public static function forget($event) { /** @var \Illuminate\Events\Dispatcher $instance */ $instance->forget($event); } - - /** + /** * Forget all of the pushed listeners. * - * @return void - * @static + * @return void + * @static */ public static function forgetPushed() { /** @var \Illuminate\Events\Dispatcher $instance */ $instance->forgetPushed(); } - - /** + /** * Set the queue resolver implementation. * * @param callable $resolver - * @return \Illuminate\Events\Dispatcher - * @static + * @return \Illuminate\Events\Dispatcher + * @static */ public static function setQueueResolver($resolver) { /** @var \Illuminate\Events\Dispatcher $instance */ return $instance->setQueueResolver($resolver); } - - /** + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Illuminate\Events\Dispatcher::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Illuminate\Events\Dispatcher::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Illuminate\Events\Dispatcher::hasMacro($name); } - - /** + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\Events\Dispatcher::flushMacros(); + } + /** + * Assert if an event has a listener attached to it. + * + * @param string $expectedEvent + * @param string $expectedListener + * @return void + * @static + */ + public static function assertListening($expectedEvent, $expectedListener) + { + /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ + $instance->assertListening($expectedEvent, $expectedListener); + } + /** * Assert if an event was dispatched based on a truth-test callback. * - * @param string $event + * @param string|\Closure $event * @param callable|int|null $callback - * @return void - * @static + * @return void + * @static */ public static function assertDispatched($event, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ $instance->assertDispatched($event, $callback); } - - /** - * Assert if a event was dispatched a number of times. + /** + * Assert if an event was dispatched a number of times. * * @param string $event * @param int $times - * @return void - * @static + * @return void + * @static */ public static function assertDispatchedTimes($event, $times = 1) { /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ $instance->assertDispatchedTimes($event, $times); } - - /** + /** * Determine if an event was dispatched based on a truth-test callback. * - * @param string $event + * @param string|\Closure $event * @param callable|null $callback - * @return void - * @static + * @return void + * @static */ public static function assertNotDispatched($event, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ $instance->assertNotDispatched($event, $callback); } - - /** + /** + * Assert that no events were dispatched. + * + * @return void + * @static + */ + public static function assertNothingDispatched() + { + /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ + $instance->assertNothingDispatched(); + } + /** * Get all of the events matching a truth-test callback. * * @param string $event * @param callable|null $callback - * @return \Illuminate\Support\Collection - * @static + * @return \Illuminate\Support\Collection + * @static */ public static function dispatched($event, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ return $instance->dispatched($event, $callback); } - - /** + /** * Determine if the given event has been dispatched. * * @param string $event - * @return bool - * @static + * @return bool + * @static */ public static function hasDispatched($event) { @@ -5344,1576 +5815,1626 @@ namespace Illuminate\Support\Facades { } } - - /** - * - * + /** * @see \Illuminate\Filesystem\Filesystem */ - class File { - - /** + class File { + /** * Determine if a file or directory exists. * * @param string $path - * @return bool - * @static + * @return bool + * @static */ public static function exists($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->exists($path); } - - /** + /** * Determine if a file or directory is missing. * * @param string $path - * @return bool - * @static + * @return bool + * @static */ public static function missing($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->missing($path); } - - /** + /** * Get the contents of a file. * * @param string $path * @param bool $lock - * @return string + * @return string * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException - * @static + * @static */ public static function get($path, $lock = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->get($path, $lock); } - - /** + /** * Get contents of a file with shared access. * * @param string $path - * @return string - * @static + * @return string + * @static */ public static function sharedGet($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->sharedGet($path); } - - /** + /** * Get the returned value of a file. * * @param string $path - * @return mixed + * @param array $data + * @return mixed * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException - * @static + * @static */ - public static function getRequire($path) + public static function getRequire($path, $data = []) { /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->getRequire($path); + return $instance->getRequire($path, $data); } - - /** + /** * Require the given file once. * - * @param string $file - * @return mixed - * @static + * @param string $path + * @param array $data + * @return mixed + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + * @static */ - public static function requireOnce($file) + public static function requireOnce($path, $data = []) { /** @var \Illuminate\Filesystem\Filesystem $instance */ - return $instance->requireOnce($file); + return $instance->requireOnce($path, $data); } - - /** + /** + * Get the contents of a file one line at a time. + * + * @param string $path + * @return \Illuminate\Support\LazyCollection + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + * @static + */ + public static function lines($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->lines($path); + } + /** * Get the MD5 hash of the file at the given path. * * @param string $path - * @return string - * @static + * @return string + * @static */ public static function hash($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->hash($path); } - - /** + /** * Write the contents of a file. * * @param string $path * @param string $contents * @param bool $lock - * @return int|bool - * @static + * @return int|bool + * @static */ public static function put($path, $contents, $lock = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->put($path, $contents, $lock); } - - /** + /** * Write the contents of a file, replacing it atomically if it already exists. * * @param string $path * @param string $content - * @return void - * @static + * @return void + * @static */ 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. * * @param string $path * @param string $data - * @return int - * @static + * @return int + * @static */ public static function prepend($path, $data) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->prepend($path, $data); } - - /** + /** * Append to a file. * * @param string $path * @param string $data - * @return int - * @static + * @return int + * @static */ public static function append($path, $data) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->append($path, $data); } - - /** + /** * Get or set UNIX mode of a file or directory. * * @param string $path * @param int|null $mode - * @return mixed - * @static + * @return mixed + * @static */ public static function chmod($path, $mode = null) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->chmod($path, $mode); } - - /** + /** * Delete the file at a given path. * * @param string|array $paths - * @return bool - * @static + * @return bool + * @static */ public static function delete($paths) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->delete($paths); } - - /** + /** * Move a file to a new location. * * @param string $path * @param string $target - * @return bool - * @static + * @return bool + * @static */ public static function move($path, $target) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->move($path, $target); } - - /** + /** * Copy a file to a new location. * * @param string $path * @param string $target - * @return bool - * @static + * @return bool + * @static */ public static function copy($path, $target) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->copy($path, $target); } - - /** + /** * Create a symlink to the target file or directory. On Windows, a hard link is created if the target is a file. * * @param string $target * @param string $link - * @return void - * @static + * @return void + * @static */ public static function link($target, $link) { /** @var \Illuminate\Filesystem\Filesystem $instance */ $instance->link($target, $link); } - - /** + /** + * Create a relative symlink to the target file or directory. + * + * @param string $target + * @param string $link + * @return void + * @throws \RuntimeException + * @static + */ + public static function relativeLink($target, $link) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + $instance->relativeLink($target, $link); + } + /** * Extract the file name from a file path. * * @param string $path - * @return string - * @static + * @return string + * @static */ public static function name($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->name($path); } - - /** + /** * Extract the trailing name component from a file path. * * @param string $path - * @return string - * @static + * @return string + * @static */ public static function basename($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->basename($path); } - - /** + /** * Extract the parent directory from a file path. * * @param string $path - * @return string - * @static + * @return string + * @static */ public static function dirname($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->dirname($path); } - - /** + /** * Extract the file extension from a file path. * * @param string $path - * @return string - * @static + * @return string + * @static */ public static function extension($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->extension($path); } - - /** + /** + * Guess the file extension from the mime-type of a given file. + * + * @param string $path + * @return string|null + * @throws \RuntimeException + * @static + */ + public static function guessExtension($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->guessExtension($path); + } + /** * Get the file type of a given file. * * @param string $path - * @return string - * @static + * @return string + * @static */ public static function type($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->type($path); } - - /** + /** * Get the mime-type of a given file. * * @param string $path - * @return string|false - * @static + * @return string|false + * @static */ public static function mimeType($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->mimeType($path); } - - /** + /** * Get the file size of a given file. * * @param string $path - * @return int - * @static + * @return int + * @static */ public static function size($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->size($path); } - - /** + /** * Get the file's last modification time. * * @param string $path - * @return int - * @static + * @return int + * @static */ public static function lastModified($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->lastModified($path); } - - /** + /** * Determine if the given path is a directory. * * @param string $directory - * @return bool - * @static + * @return bool + * @static */ public static function isDirectory($directory) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->isDirectory($directory); } - - /** + /** * Determine if the given path is readable. * * @param string $path - * @return bool - * @static + * @return bool + * @static */ public static function isReadable($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->isReadable($path); } - - /** + /** * Determine if the given path is writable. * * @param string $path - * @return bool - * @static + * @return bool + * @static */ public static function isWritable($path) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->isWritable($path); } - - /** + /** * Determine if the given path is a file. * * @param string $file - * @return bool - * @static + * @return bool + * @static */ public static function isFile($file) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->isFile($file); } - - /** + /** * Find path names matching a given pattern. * * @param string $pattern * @param int $flags - * @return array - * @static + * @return array + * @static */ public static function glob($pattern, $flags = 0) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->glob($pattern, $flags); } - - /** + /** * Get an array of all files in a directory. * * @param string $directory * @param bool $hidden - * @return \Symfony\Component\Finder\SplFileInfo[] - * @static + * @return \Symfony\Component\Finder\SplFileInfo[] + * @static */ public static function files($directory, $hidden = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->files($directory, $hidden); } - - /** + /** * Get all of the files from the given directory (recursive). * * @param string $directory * @param bool $hidden - * @return \Symfony\Component\Finder\SplFileInfo[] - * @static + * @return \Symfony\Component\Finder\SplFileInfo[] + * @static */ public static function allFiles($directory, $hidden = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->allFiles($directory, $hidden); } - - /** + /** * Get all of the directories within a given directory. * * @param string $directory - * @return array - * @static + * @return array + * @static */ public static function directories($directory) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->directories($directory); } - - /** + /** * Ensure a directory exists. * * @param string $path * @param int $mode * @param bool $recursive - * @return void - * @static + * @return void + * @static */ public static function ensureDirectoryExists($path, $mode = 493, $recursive = true) { /** @var \Illuminate\Filesystem\Filesystem $instance */ $instance->ensureDirectoryExists($path, $mode, $recursive); } - - /** + /** * Create a directory. * * @param string $path * @param int $mode * @param bool $recursive * @param bool $force - * @return bool - * @static + * @return bool + * @static */ public static function makeDirectory($path, $mode = 493, $recursive = false, $force = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->makeDirectory($path, $mode, $recursive, $force); } - - /** + /** * Move a directory. * * @param string $from * @param string $to * @param bool $overwrite - * @return bool - * @static + * @return bool + * @static */ public static function moveDirectory($from, $to, $overwrite = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->moveDirectory($from, $to, $overwrite); } - - /** + /** * Copy a directory from one location to another. * * @param string $directory * @param string $destination * @param int|null $options - * @return bool - * @static + * @return bool + * @static */ public static function copyDirectory($directory, $destination, $options = null) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->copyDirectory($directory, $destination, $options); } - - /** + /** * Recursively delete a directory. - * + * * The directory itself may be optionally preserved. * * @param string $directory * @param bool $preserve - * @return bool - * @static + * @return bool + * @static */ public static function deleteDirectory($directory, $preserve = false) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->deleteDirectory($directory, $preserve); } - - /** + /** * Remove all of the directories within a given directory. * * @param string $directory - * @return bool - * @static + * @return bool + * @static */ public static function deleteDirectories($directory) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->deleteDirectories($directory); } - - /** + /** * Empty the specified directory of all files and folders. * * @param string $directory - * @return bool - * @static + * @return bool + * @static */ public static function cleanDirectory($directory) { /** @var \Illuminate\Filesystem\Filesystem $instance */ return $instance->cleanDirectory($directory); } - - /** + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Illuminate\Filesystem\Filesystem::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Illuminate\Filesystem\Filesystem::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Illuminate\Filesystem\Filesystem::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\Filesystem\Filesystem::flushMacros(); } } - - /** - * - * + /** * @see \Illuminate\Contracts\Auth\Access\Gate */ - class Gate { - - /** + class Gate { + /** * Determine if a given ability has been defined. * * @param string|array $ability - * @return bool - * @static + * @return bool + * @static */ public static function has($ability) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->has($ability); } - - /** + /** + * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is false. + * + * @param \Illuminate\Auth\Access\Response|\Closure|bool $condition + * @param string|null $message + * @param string|null $code + * @return \Illuminate\Auth\Access\Response + * @throws \Illuminate\Auth\Access\AuthorizationException + * @static + */ + public static function allowIf($condition, $message = null, $code = null) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->allowIf($condition, $message, $code); + } + /** + * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is true. + * + * @param \Illuminate\Auth\Access\Response|\Closure|bool $condition + * @param string|null $message + * @param string|null $code + * @return \Illuminate\Auth\Access\Response + * @throws \Illuminate\Auth\Access\AuthorizationException + * @static + */ + public static function denyIf($condition, $message = null, $code = null) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->denyIf($condition, $message, $code); + } + /** * Define a new ability. * * @param string $ability * @param callable|string $callback - * @return \Illuminate\Auth\Access\Gate + * @return \Illuminate\Auth\Access\Gate * @throws \InvalidArgumentException - * @static + * @static */ public static function define($ability, $callback) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->define($ability, $callback); } - - /** + /** * Define abilities for a resource. * * @param string $name * @param string $class * @param array|null $abilities - * @return \Illuminate\Auth\Access\Gate - * @static + * @return \Illuminate\Auth\Access\Gate + * @static */ public static function resource($name, $class, $abilities = null) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->resource($name, $class, $abilities); } - - /** + /** * Define a policy class for a given class type. * * @param string $class * @param string $policy - * @return \Illuminate\Auth\Access\Gate - * @static + * @return \Illuminate\Auth\Access\Gate + * @static */ public static function policy($class, $policy) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->policy($class, $policy); } - - /** + /** * Register a callback to run before all Gate checks. * * @param callable $callback - * @return \Illuminate\Auth\Access\Gate - * @static + * @return \Illuminate\Auth\Access\Gate + * @static */ public static function before($callback) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->before($callback); } - - /** + /** * Register a callback to run after all Gate checks. * * @param callable $callback - * @return \Illuminate\Auth\Access\Gate - * @static + * @return \Illuminate\Auth\Access\Gate + * @static */ public static function after($callback) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->after($callback); } - - /** + /** * Determine if the given ability should be granted for the current user. * * @param string $ability * @param array|mixed $arguments - * @return bool - * @static + * @return bool + * @static */ public static function allows($ability, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->allows($ability, $arguments); } - - /** + /** * Determine if the given ability should be denied for the current user. * * @param string $ability * @param array|mixed $arguments - * @return bool - * @static + * @return bool + * @static */ public static function denies($ability, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->denies($ability, $arguments); } - - /** + /** * Determine if all of the given abilities should be granted for the current user. * - * @param \Illuminate\Auth\Access\iterable|string $abilities + * @param iterable|string $abilities * @param array|mixed $arguments - * @return bool - * @static + * @return bool + * @static */ public static function check($abilities, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->check($abilities, $arguments); } - - /** + /** * Determine if any one of the given abilities should be granted for the current user. * - * @param \Illuminate\Auth\Access\iterable|string $abilities + * @param iterable|string $abilities * @param array|mixed $arguments - * @return bool - * @static + * @return bool + * @static */ public static function any($abilities, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->any($abilities, $arguments); } - - /** + /** * Determine if all of the given abilities should be denied for the current user. * - * @param \Illuminate\Auth\Access\iterable|string $abilities + * @param iterable|string $abilities * @param array|mixed $arguments - * @return bool - * @static + * @return bool + * @static */ public static function none($abilities, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->none($abilities, $arguments); } - - /** + /** * Determine if the given ability should be granted for the current user. * * @param string $ability * @param array|mixed $arguments - * @return \Illuminate\Auth\Access\Response + * @return \Illuminate\Auth\Access\Response * @throws \Illuminate\Auth\Access\AuthorizationException - * @static + * @static */ public static function authorize($ability, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->authorize($ability, $arguments); } - - /** + /** * Inspect the user for the given ability. * * @param string $ability * @param array|mixed $arguments - * @return \Illuminate\Auth\Access\Response - * @static + * @return \Illuminate\Auth\Access\Response + * @static */ public static function inspect($ability, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->inspect($ability, $arguments); } - - /** + /** * Get the raw result from the authorization callback. * * @param string $ability * @param array|mixed $arguments - * @return mixed + * @return mixed * @throws \Illuminate\Auth\Access\AuthorizationException - * @static + * @static */ public static function raw($ability, $arguments = []) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->raw($ability, $arguments); } - - /** + /** * Get a policy instance for a given class. * * @param object|string $class - * @return mixed - * @static + * @return mixed + * @static */ public static function getPolicyFor($class) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->getPolicyFor($class); } - - /** + /** * Specify a callback to be used to guess policy names. * * @param callable $callback - * @return \Illuminate\Auth\Access\Gate - * @static + * @return \Illuminate\Auth\Access\Gate + * @static */ public static function guessPolicyNamesUsing($callback) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->guessPolicyNamesUsing($callback); } - - /** + /** * Build a policy class instance of the given type. * * @param object|string $class - * @return mixed + * @return mixed * @throws \Illuminate\Contracts\Container\BindingResolutionException - * @static + * @static */ public static function resolvePolicy($class) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->resolvePolicy($class); } - - /** + /** * Get a gate instance for the given user. * * @param \Illuminate\Contracts\Auth\Authenticatable|mixed $user - * @return static - * @static + * @return static + * @static */ public static function forUser($user) { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->forUser($user); } - - /** + /** * Get all of the defined abilities. * - * @return array - * @static + * @return array + * @static */ public static function abilities() { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->abilities(); } - - /** + /** * Get all of the defined policies. * - * @return array - * @static + * @return array + * @static */ public static function policies() { /** @var \Illuminate\Auth\Access\Gate $instance */ return $instance->policies(); + } + /** + * Set the container instance used by the gate. + * + * @param \Illuminate\Contracts\Container\Container $container + * @return \Illuminate\Auth\Access\Gate + * @static + */ + public static function setContainer($container) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->setContainer($container); } } - - /** - * - * + /** * @see \Illuminate\Hashing\HashManager */ - class Hash { - - /** + class Hash { + /** * Create an instance of the Bcrypt hash Driver. * - * @return \Illuminate\Hashing\BcryptHasher - * @static + * @return \Illuminate\Hashing\BcryptHasher + * @static */ public static function createBcryptDriver() { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->createBcryptDriver(); } - - /** + /** * Create an instance of the Argon2i hash Driver. * - * @return \Illuminate\Hashing\ArgonHasher - * @static + * @return \Illuminate\Hashing\ArgonHasher + * @static */ public static function createArgonDriver() { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->createArgonDriver(); } - - /** + /** * Create an instance of the Argon2id hash Driver. * - * @return \Illuminate\Hashing\Argon2IdHasher - * @static + * @return \Illuminate\Hashing\Argon2IdHasher + * @static */ public static function createArgon2idDriver() { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->createArgon2idDriver(); } - - /** + /** * Get information about the given hashed value. * * @param string $hashedValue - * @return array - * @static + * @return array + * @static */ public static function info($hashedValue) { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->info($hashedValue); } - - /** + /** * Hash the given value. * * @param string $value * @param array $options - * @return string - * @static + * @return string + * @static */ public static function make($value, $options = []) { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->make($value, $options); } - - /** + /** * Check the given plain value against a hash. * * @param string $value * @param string $hashedValue * @param array $options - * @return bool - * @static + * @return bool + * @static */ public static function check($value, $hashedValue, $options = []) { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->check($value, $hashedValue, $options); } - - /** + /** * Check if the given hash has been hashed using the given options. * * @param string $hashedValue * @param array $options - * @return bool - * @static + * @return bool + * @static */ public static function needsRehash($hashedValue, $options = []) { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->needsRehash($hashedValue, $options); } - - /** + /** * Get the default driver name. * - * @return string - * @static + * @return string + * @static */ public static function getDefaultDriver() { /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->getDefaultDriver(); } - - /** + /** * Get a driver instance. * - * @param string $driver - * @return mixed + * @param string|null $driver + * @return mixed * @throws \InvalidArgumentException - * @static + * @static */ public static function driver($driver = null) - { - //Method inherited from \Illuminate\Support\Manager + { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->driver($driver); } - - /** + /** * Register a custom driver creator Closure. * * @param string $driver * @param \Closure $callback - * @return \Illuminate\Hashing\HashManager - * @static + * @return \Illuminate\Hashing\HashManager + * @static */ public static function extend($driver, $callback) - { - //Method inherited from \Illuminate\Support\Manager + { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->extend($driver, $callback); } - - /** + /** * Get all of the created "drivers". * - * @return array - * @static + * @return array + * @static */ public static function getDrivers() - { - //Method inherited from \Illuminate\Support\Manager + { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Hashing\HashManager $instance */ return $instance->getDrivers(); + } + /** + * Get the container instance used by the manager. + * + * @return \Illuminate\Contracts\Container\Container + * @static + */ + public static function getContainer() + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->getContainer(); + } + /** + * Set the container instance used by the manager. + * + * @param \Illuminate\Contracts\Container\Container $container + * @return \Illuminate\Hashing\HashManager + * @static + */ + public static function setContainer($container) + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->setContainer($container); + } + /** + * Forget all of the resolved driver instances. + * + * @return \Illuminate\Hashing\HashManager + * @static + */ + public static function forgetDrivers() + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->forgetDrivers(); } } - - /** - * - * + /** * @see \Illuminate\Translation\Translator */ - class Lang { - - /** + class Lang { + /** * Determine if a translation exists for a given locale. * * @param string $key * @param string|null $locale - * @return bool - * @static + * @return bool + * @static */ public static function hasForLocale($key, $locale = null) { /** @var \Illuminate\Translation\Translator $instance */ return $instance->hasForLocale($key, $locale); } - - /** + /** * Determine if a translation exists. * * @param string $key * @param string|null $locale * @param bool $fallback - * @return bool - * @static + * @return bool + * @static */ public static function has($key, $locale = null, $fallback = true) { /** @var \Illuminate\Translation\Translator $instance */ return $instance->has($key, $locale, $fallback); } - - /** + /** * Get the translation for the given key. * * @param string $key * @param array $replace * @param string|null $locale * @param bool $fallback - * @return string|array - * @static + * @return string|array + * @static */ public static function get($key, $replace = [], $locale = null, $fallback = true) { /** @var \Illuminate\Translation\Translator $instance */ return $instance->get($key, $replace, $locale, $fallback); } - - /** + /** * Get a translation according to an integer value. * * @param string $key * @param \Countable|int|array $number * @param array $replace * @param string|null $locale - * @return string - * @static + * @return string + * @static */ public static function choice($key, $number, $replace = [], $locale = null) { /** @var \Illuminate\Translation\Translator $instance */ return $instance->choice($key, $number, $replace, $locale); } - - /** + /** * Add translation lines to the given locale. * * @param array $lines * @param string $locale * @param string $namespace - * @return void - * @static + * @return void + * @static */ public static function addLines($lines, $locale, $namespace = '*') { /** @var \Illuminate\Translation\Translator $instance */ $instance->addLines($lines, $locale, $namespace); } - - /** + /** * Load the specified language group. * * @param string $namespace * @param string $group * @param string $locale - * @return void - * @static + * @return void + * @static */ public static function load($namespace, $group, $locale) { /** @var \Illuminate\Translation\Translator $instance */ $instance->load($namespace, $group, $locale); } - - /** + /** * Add a new namespace to the loader. * * @param string $namespace * @param string $hint - * @return void - * @static + * @return void + * @static */ public static function addNamespace($namespace, $hint) { /** @var \Illuminate\Translation\Translator $instance */ $instance->addNamespace($namespace, $hint); } - - /** + /** * Add a new JSON path to the loader. * * @param string $path - * @return void - * @static + * @return void + * @static */ public static function addJsonPath($path) { /** @var \Illuminate\Translation\Translator $instance */ $instance->addJsonPath($path); } - - /** + /** * Parse a key into namespace, group, and item. * * @param string $key - * @return array - * @static + * @return array + * @static */ public static function parseKey($key) { /** @var \Illuminate\Translation\Translator $instance */ return $instance->parseKey($key); } - - /** + /** * Get the message selector instance. * - * @return \Illuminate\Translation\MessageSelector - * @static + * @return \Illuminate\Translation\MessageSelector + * @static */ public static function getSelector() { /** @var \Illuminate\Translation\Translator $instance */ return $instance->getSelector(); } - - /** + /** * Set the message selector instance. * * @param \Illuminate\Translation\MessageSelector $selector - * @return void - * @static + * @return void + * @static */ public static function setSelector($selector) { /** @var \Illuminate\Translation\Translator $instance */ $instance->setSelector($selector); } - - /** + /** * Get the language line loader implementation. * - * @return \Illuminate\Contracts\Translation\Loader - * @static + * @return \Illuminate\Contracts\Translation\Loader + * @static */ public static function getLoader() { /** @var \Illuminate\Translation\Translator $instance */ return $instance->getLoader(); } - - /** + /** * Get the default locale being used. * - * @return string - * @static + * @return string + * @static */ public static function locale() { /** @var \Illuminate\Translation\Translator $instance */ return $instance->locale(); } - - /** + /** * Get the default locale being used. * - * @return string - * @static + * @return string + * @static */ public static function getLocale() { /** @var \Illuminate\Translation\Translator $instance */ return $instance->getLocale(); } - - /** + /** * Set the default locale. * * @param string $locale - * @return void - * @static + * @return void + * @throws \InvalidArgumentException + * @static */ public static function setLocale($locale) { /** @var \Illuminate\Translation\Translator $instance */ $instance->setLocale($locale); } - - /** + /** * Get the fallback locale being used. * - * @return string - * @static + * @return string + * @static */ public static function getFallback() { /** @var \Illuminate\Translation\Translator $instance */ return $instance->getFallback(); } - - /** + /** * Set the fallback locale being used. * * @param string $fallback - * @return void - * @static + * @return void + * @static */ public static function setFallback($fallback) { /** @var \Illuminate\Translation\Translator $instance */ $instance->setFallback($fallback); } - - /** + /** * Set the loaded translation groups. * * @param array $loaded - * @return void - * @static + * @return void + * @static */ public static function setLoaded($loaded) { /** @var \Illuminate\Translation\Translator $instance */ $instance->setLoaded($loaded); } - - /** + /** * Set the parsed value of a key. * * @param string $key * @param array $parsed - * @return void - * @static + * @return void + * @static */ public static function setParsedKey($key, $parsed) - { - //Method inherited from \Illuminate\Support\NamespacedItemResolver + { //Method inherited from \Illuminate\Support\NamespacedItemResolver /** @var \Illuminate\Translation\Translator $instance */ $instance->setParsedKey($key, $parsed); } - - /** + /** + * Flush the cache of parsed keys. + * + * @return void + * @static + */ + public static function flushParsedKeys() + { //Method inherited from \Illuminate\Support\NamespacedItemResolver + /** @var \Illuminate\Translation\Translator $instance */ + $instance->flushParsedKeys(); + } + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Illuminate\Translation\Translator::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Illuminate\Translation\Translator::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Illuminate\Translation\Translator::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\Translation\Translator::flushMacros(); } } - - /** - * - * + /** + * @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 */ - class Log { - - /** + class Log { + /** + * Build an on-demand log channel. + * + * @param array $config + * @return \Psr\Log\LoggerInterface + * @static + */ + public static function build($config) + { + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->build($config); + } + /** * Create a new, on-demand aggregate logger instance. * * @param array $channels * @param string|null $channel - * @return \Psr\Log\LoggerInterface - * @static + * @return \Psr\Log\LoggerInterface + * @static */ public static function stack($channels, $channel = null) { /** @var \Illuminate\Log\LogManager $instance */ return $instance->stack($channels, $channel); } - - /** + /** * Get a log channel instance. * * @param string|null $channel - * @return \Psr\Log\LoggerInterface - * @static + * @return \Psr\Log\LoggerInterface + * @static */ public static function channel($channel = null) { /** @var \Illuminate\Log\LogManager $instance */ return $instance->channel($channel); } - - /** + /** * Get a log driver instance. * * @param string|null $driver - * @return \Psr\Log\LoggerInterface - * @static + * @return \Psr\Log\LoggerInterface + * @static */ public static function driver($driver = null) { /** @var \Illuminate\Log\LogManager $instance */ return $instance->driver($driver); } - - /** - * - * - * @return array - * @static - */ - public static function getChannels() - { - /** @var \Illuminate\Log\LogManager $instance */ - return $instance->getChannels(); - } - - /** + /** * Get the default log driver name. * - * @return string - * @static + * @return string|null + * @static */ public static function getDefaultDriver() { /** @var \Illuminate\Log\LogManager $instance */ return $instance->getDefaultDriver(); } - - /** + /** * Set the default log driver name. * * @param string $name - * @return void - * @static + * @return void + * @static */ public static function setDefaultDriver($name) { /** @var \Illuminate\Log\LogManager $instance */ $instance->setDefaultDriver($name); } - - /** + /** * Register a custom driver creator Closure. * * @param string $driver * @param \Closure $callback - * @return \Illuminate\Log\LogManager - * @static + * @return \Illuminate\Log\LogManager + * @static */ public static function extend($driver, $callback) { /** @var \Illuminate\Log\LogManager $instance */ return $instance->extend($driver, $callback); } - - /** + /** * Unset the given channel instance. * - * @param string|null $name - * @return \Illuminate\Log\LogManager - * @static + * @param string|null $driver + * @return \Illuminate\Log\LogManager + * @static */ public static function forgetChannel($driver = null) { /** @var \Illuminate\Log\LogManager $instance */ return $instance->forgetChannel($driver); } - - /** + /** + * Get all of the resolved log channels. + * + * @return array + * @static + */ + public static function getChannels() + { + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->getChannels(); + } + /** * System is unusable. * * @param string $message * @param array $context - * @return void - * @static + * @return void + * @static */ public static function emergency($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->emergency($message, $context); } - - /** + /** * Action must be taken immediately. - * + * * Example: Entire website down, database unavailable, etc. This should * trigger the SMS alerts and wake you up. * * @param string $message * @param array $context - * @return void - * @static + * @return void + * @static */ public static function alert($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->alert($message, $context); } - - /** + /** * Critical conditions. - * + * * Example: Application component unavailable, unexpected exception. * * @param string $message * @param array $context - * @return void - * @static + * @return void + * @static */ public static function critical($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->critical($message, $context); } - - /** + /** * Runtime errors that do not require immediate action but should typically * be logged and monitored. * * @param string $message * @param array $context - * @return void - * @static + * @return void + * @static */ public static function error($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->error($message, $context); } - - /** + /** * Exceptional occurrences that are not errors. - * + * * Example: Use of deprecated APIs, poor use of an API, undesirable things * that are not necessarily wrong. * * @param string $message * @param array $context - * @return void - * @static + * @return void + * @static */ public static function warning($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->warning($message, $context); } - - /** + /** * Normal but significant events. * * @param string $message * @param array $context - * @return void - * @static + * @return void + * @static */ public static function notice($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->notice($message, $context); } - - /** + /** * Interesting events. - * + * * Example: User logs in, SQL logs. * * @param string $message * @param array $context - * @return void - * @static + * @return void + * @static */ public static function info($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->info($message, $context); } - - /** + /** * Detailed debug information. * * @param string $message * @param array $context - * @return void - * @static + * @return void + * @static */ public static function debug($message, $context = []) { /** @var \Illuminate\Log\LogManager $instance */ $instance->debug($message, $context); } - - /** + /** * Logs with an arbitrary level. * * @param mixed $level * @param string $message * @param array $context - * @return void - * @static + * @return void + * @static */ public static function log($level, $message, $context = []) { @@ -6922,806 +7443,761 @@ namespace Illuminate\Support\Facades { } } - - /** - * - * + /** + * @method static void alwaysFrom(string $address, string|null $name = null) + * @method static void alwaysReplyTo(string $address, string|null $name = null) + * @method static void alwaysReturnPath(string $address) + * @method static void alwaysTo(string $address, string|null $name = null) + * @method static mixed laterOn(string $queue, \DateTimeInterface|\DateInterval|int $delay, \Illuminate\Contracts\Mail\Mailable|string|array $view) + * @method static mixed queueOn(string $queue, \Illuminate\Contracts\Mail\Mailable|string|array $view) + * @method static void plain(string $view, array $data, $callback) + * @method static void html(string $html, $callback) * @see \Illuminate\Mail\Mailer * @see \Illuminate\Support\Testing\Fakes\MailFake */ - class Mail { - - /** - * Set the global from address and name. + class Mail { + /** + * Get a mailer instance by name. * - * @param string $address * @param string|null $name - * @return void - * @static + * @return \Illuminate\Contracts\Mail\Mailer + * @static */ - public static function alwaysFrom($address, $name = null) + public static function mailer($name = null) { - /** @var \Illuminate\Mail\Mailer $instance */ - $instance->alwaysFrom($address, $name); + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->mailer($name); } - - /** - * Set the global reply-to address and name. + /** + * Get a mailer driver instance. * - * @param string $address - * @param string|null $name - * @return void - * @static + * @param string|null $driver + * @return \Illuminate\Mail\Mailer + * @static */ - public static function alwaysReplyTo($address, $name = null) + public static function driver($driver = null) { - /** @var \Illuminate\Mail\Mailer $instance */ - $instance->alwaysReplyTo($address, $name); + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->driver($driver); } - - /** - * Set the global to address and name. + /** + * Create a new transport instance. * - * @param string $address - * @param string|null $name - * @return void - * @static - */ - public static function alwaysTo($address, $name = null) - { - /** @var \Illuminate\Mail\Mailer $instance */ - $instance->alwaysTo($address, $name); - } - - /** - * Begin the process of mailing a mailable class instance. - * - * @param mixed $users - * @return \Illuminate\Mail\PendingMail - * @static - */ - public static function to($users) - { - /** @var \Illuminate\Mail\Mailer $instance */ - return $instance->to($users); - } - - /** - * Begin the process of mailing a mailable class instance. - * - * @param mixed $users - * @return \Illuminate\Mail\PendingMail - * @static - */ - public static function cc($users) - { - /** @var \Illuminate\Mail\Mailer $instance */ - return $instance->cc($users); - } - - /** - * Begin the process of mailing a mailable class instance. - * - * @param mixed $users - * @return \Illuminate\Mail\PendingMail - * @static - */ - public static function bcc($users) - { - /** @var \Illuminate\Mail\Mailer $instance */ - return $instance->bcc($users); - } - - /** - * Send a new message with only an HTML part. - * - * @param string $html - * @param mixed $callback - * @return void - * @static - */ - public static function html($html, $callback) - { - /** @var \Illuminate\Mail\Mailer $instance */ - $instance->html($html, $callback); - } - - /** - * Send a new message with only a raw text part. - * - * @param string $text - * @param mixed $callback - * @return void - * @static - */ - public static function raw($text, $callback) - { - /** @var \Illuminate\Mail\Mailer $instance */ - $instance->raw($text, $callback); - } - - /** - * Send a new message with only a plain part. - * - * @param string $view - * @param array $data - * @param mixed $callback - * @return void - * @static - */ - public static function plain($view, $data, $callback) - { - /** @var \Illuminate\Mail\Mailer $instance */ - $instance->plain($view, $data, $callback); - } - - /** - * Render the given message as a view. - * - * @param string|array $view - * @param array $data - * @return string - * @static - */ - public static function render($view, $data = []) - { - /** @var \Illuminate\Mail\Mailer $instance */ - return $instance->render($view, $data); - } - - /** - * Send a new message using a view. - * - * @param \Illuminate\Contracts\Mail\Mailable|string|array $view - * @param array $data - * @param \Closure|string|null $callback - * @return void - * @static - */ - public static function send($view, $data = [], $callback = null) - { - /** @var \Illuminate\Mail\Mailer $instance */ - $instance->send($view, $data, $callback); - } - - /** - * Queue a new e-mail message for sending. - * - * @param \Illuminate\Contracts\Mail\Mailable $view - * @param string|null $queue - * @return mixed + * @param array $config + * @return \Swift_Transport * @throws \InvalidArgumentException - * @static + * @static */ - public static function queue($view, $queue = null) + public static function createTransport($config) { - /** @var \Illuminate\Mail\Mailer $instance */ - return $instance->queue($view, $queue); + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->createTransport($config); } - - /** - * Queue a new e-mail message for sending on the given queue. + /** + * Get the default mail driver name. * - * @param string $queue - * @param \Illuminate\Contracts\Mail\Mailable $view - * @return mixed - * @static + * @return string + * @static */ - public static function onQueue($queue, $view) + public static function getDefaultDriver() { - /** @var \Illuminate\Mail\Mailer $instance */ - return $instance->onQueue($queue, $view); + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->getDefaultDriver(); } - - /** - * Queue a new e-mail message for sending on the given queue. - * - * This method didn't match rest of framework's "onQueue" phrasing. Added "onQueue". - * - * @param string $queue - * @param \Illuminate\Contracts\Mail\Mailable $view - * @return mixed - * @static - */ - public static function queueOn($queue, $view) - { - /** @var \Illuminate\Mail\Mailer $instance */ - return $instance->queueOn($queue, $view); - } - - /** - * Queue a new e-mail message for sending after (n) seconds. - * - * @param \DateTimeInterface|\DateInterval|int $delay - * @param \Illuminate\Contracts\Mail\Mailable $view - * @param string|null $queue - * @return mixed - * @throws \InvalidArgumentException - * @static - */ - public static function later($delay, $view, $queue = null) - { - /** @var \Illuminate\Mail\Mailer $instance */ - return $instance->later($delay, $view, $queue); - } - - /** - * Queue a new e-mail message for sending after (n) seconds on the given queue. - * - * @param string $queue - * @param \DateTimeInterface|\DateInterval|int $delay - * @param \Illuminate\Contracts\Mail\Mailable $view - * @return mixed - * @static - */ - public static function laterOn($queue, $delay, $view) - { - /** @var \Illuminate\Mail\Mailer $instance */ - return $instance->laterOn($queue, $delay, $view); - } - - /** - * Get the array of failed recipients. - * - * @return array - * @static - */ - public static function failures() - { - /** @var \Illuminate\Mail\Mailer $instance */ - return $instance->failures(); - } - - /** - * Get the Swift Mailer instance. - * - * @return \Swift_Mailer - * @static - */ - public static function getSwiftMailer() - { - /** @var \Illuminate\Mail\Mailer $instance */ - return $instance->getSwiftMailer(); - } - - /** - * Get the view factory instance. - * - * @return \Illuminate\Contracts\View\Factory - * @static - */ - public static function getViewFactory() - { - /** @var \Illuminate\Mail\Mailer $instance */ - return $instance->getViewFactory(); - } - - /** - * Set the Swift Mailer instance. - * - * @param \Swift_Mailer $swift - * @return void - * @static - */ - public static function setSwiftMailer($swift) - { - /** @var \Illuminate\Mail\Mailer $instance */ - $instance->setSwiftMailer($swift); - } - - /** - * Set the queue manager instance. - * - * @param \Illuminate\Contracts\Queue\Factory $queue - * @return \Illuminate\Mail\Mailer - * @static - */ - public static function setQueue($queue) - { - /** @var \Illuminate\Mail\Mailer $instance */ - return $instance->setQueue($queue); - } - - /** - * Register a custom macro. + /** + * Set the default mail driver name. * * @param string $name - * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ - public static function macro($name, $macro) + public static function setDefaultDriver($name) { - \Illuminate\Mail\Mailer::macro($name, $macro); + /** @var \Illuminate\Mail\MailManager $instance */ + $instance->setDefaultDriver($name); } - - /** - * Mix another object into the class. + /** + * Disconnect the given mailer and remove from local cache. * - * @param object $mixin - * @param bool $replace - * @return void - * @throws \ReflectionException - * @static + * @param string|null $name + * @return void + * @static */ - public static function mixin($mixin, $replace = true) + public static function purge($name = null) { - \Illuminate\Mail\Mailer::mixin($mixin, $replace); + /** @var \Illuminate\Mail\MailManager $instance */ + $instance->purge($name); } - - /** - * Checks if macro is registered. + /** + * Register a custom transport creator Closure. * - * @param string $name - * @return bool - * @static + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Mail\MailManager + * @static */ - public static function hasMacro($name) + public static function extend($driver, $callback) { - return \Illuminate\Mail\Mailer::hasMacro($name); + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->extend($driver, $callback); } - - /** + /** + * Get the application instance used by the manager. + * + * @return \Illuminate\Contracts\Foundation\Application + * @static + */ + public static function getApplication() + { + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->getApplication(); + } + /** + * Set the application instance used by the manager. + * + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Illuminate\Mail\MailManager + * @static + */ + public static function setApplication($app) + { + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->setApplication($app); + } + /** + * Forget all of the resolved mailer instances. + * + * @return \Illuminate\Mail\MailManager + * @static + */ + public static function forgetMailers() + { + /** @var \Illuminate\Mail\MailManager $instance */ + return $instance->forgetMailers(); + } + /** * Assert if a mailable was sent based on a truth-test callback. * - * @param string $mailable + * @param string|\Closure $mailable * @param callable|int|null $callback - * @return void - * @static + * @return void + * @static */ 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 + * @return void + * @static */ 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. * - * @return void - * @static + * @return void + * @static */ public static function assertNothingSent() { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->assertNothingSent(); } - - /** + /** * Assert if a mailable was queued based on a truth-test callback. * - * @param string $mailable + * @param string|\Closure $mailable * @param callable|int|null $callback - * @return void - * @static + * @return void + * @static */ public static function assertQueued($mailable, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->assertQueued($mailable, $callback); } - - /** + /** * 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 + * @return void + * @static */ public static function assertNotQueued($mailable, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->assertNotQueued($mailable, $callback); } - - /** + /** * Assert that no mailables were queued. * - * @return void - * @static + * @return void + * @static */ public static function assertNothingQueued() { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ $instance->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 + * @return \Illuminate\Support\Collection + * @static */ public static function sent($mailable, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ return $instance->sent($mailable, $callback); } - - /** + /** * Determine if the given mailable has been sent. * * @param string $mailable - * @return bool - * @static + * @return bool + * @static */ public static function hasSent($mailable) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ return $instance->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 + * @return \Illuminate\Support\Collection + * @static */ public static function queued($mailable, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ return $instance->queued($mailable, $callback); } - - /** + /** * Determine if the given mailable has been queued. * * @param string $mailable - * @return bool - * @static + * @return bool + * @static */ public static function hasQueued($mailable) { /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ return $instance->hasQueued($mailable); + } + /** + * Begin the process of mailing a mailable class instance. + * + * @param mixed $users + * @return \Illuminate\Mail\PendingMail + * @static + */ + public static function to($users) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->to($users); + } + /** + * Begin the process of mailing a mailable class instance. + * + * @param mixed $users + * @return \Illuminate\Mail\PendingMail + * @static + */ + public static function bcc($users) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->bcc($users); + } + /** + * Send a new message with only a raw text part. + * + * @param string $text + * @param \Closure|string $callback + * @return void + * @static + */ + public static function raw($text, $callback) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->raw($text, $callback); + } + /** + * Send a new message using a view. + * + * @param \Illuminate\Contracts\Mail\Mailable|string|array $view + * @param array $data + * @param \Closure|string|null $callback + * @return void + * @static + */ + public static function send($view, $data = [], $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->send($view, $data, $callback); + } + /** + * Queue a new e-mail message for sending. + * + * @param \Illuminate\Contracts\Mail\Mailable|string|array $view + * @param string|null $queue + * @return mixed + * @static + */ + public static function queue($view, $queue = null) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->queue($view, $queue); + } + /** + * Queue a new e-mail message for sending after (n) seconds. + * + * @param \DateTimeInterface|\DateInterval|int $delay + * @param \Illuminate\Contracts\Mail\Mailable|string|array $view + * @param string|null $queue + * @return mixed + * @static + */ + public static function later($delay, $view, $queue = null) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->later($delay, $view, $queue); + } + /** + * Get the array of failed recipients. + * + * @return array + * @static + */ + public static function failures() + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->failures(); } } - - /** - * - * + /** * @see \Illuminate\Notifications\ChannelManager */ - class Notification { - - /** + class Notification { + /** * Send the given notification to the given notifiable entities. * * @param \Illuminate\Support\Collection|array|mixed $notifiables * @param mixed $notification - * @return void - * @static + * @return void + * @static */ public static function send($notifiables, $notification) { /** @var \Illuminate\Notifications\ChannelManager $instance */ $instance->send($notifiables, $notification); } - - /** + /** * Send the given notification immediately. * * @param \Illuminate\Support\Collection|array|mixed $notifiables * @param mixed $notification * @param array|null $channels - * @return void - * @static + * @return void + * @static */ public static function sendNow($notifiables, $notification, $channels = null) { /** @var \Illuminate\Notifications\ChannelManager $instance */ $instance->sendNow($notifiables, $notification, $channels); } - - /** + /** * Get a channel instance. * * @param string|null $name - * @return mixed - * @static + * @return mixed + * @static */ public static function channel($name = null) { /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->channel($name); } - - /** + /** * Get the default channel driver name. * - * @return string - * @static + * @return string + * @static */ public static function getDefaultDriver() { /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->getDefaultDriver(); } - - /** + /** * Get the default channel driver name. * - * @return string - * @static + * @return string + * @static */ public static function deliversVia() { /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->deliversVia(); } - - /** + /** * Set the default channel driver name. * * @param string $channel - * @return void - * @static + * @return void + * @static */ public static function deliverVia($channel) { /** @var \Illuminate\Notifications\ChannelManager $instance */ $instance->deliverVia($channel); } - - /** + /** * Set the locale of notifications. * * @param string $locale - * @return \Illuminate\Notifications\ChannelManager - * @static + * @return \Illuminate\Notifications\ChannelManager + * @static */ public static function locale($locale) { /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->locale($locale); } - - /** + /** * Get a driver instance. * - * @param string $driver - * @return mixed + * @param string|null $driver + * @return mixed * @throws \InvalidArgumentException - * @static + * @static */ public static function driver($driver = null) - { - //Method inherited from \Illuminate\Support\Manager + { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->driver($driver); } - - /** + /** * Register a custom driver creator Closure. * * @param string $driver * @param \Closure $callback - * @return \Illuminate\Notifications\ChannelManager - * @static + * @return \Illuminate\Notifications\ChannelManager + * @static */ public static function extend($driver, $callback) - { - //Method inherited from \Illuminate\Support\Manager + { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->extend($driver, $callback); } - - /** + /** * Get all of the created "drivers". * - * @return array - * @static + * @return array + * @static */ public static function getDrivers() - { - //Method inherited from \Illuminate\Support\Manager + { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Notifications\ChannelManager $instance */ return $instance->getDrivers(); } - - /** + /** + * Get the container instance used by the manager. + * + * @return \Illuminate\Contracts\Container\Container + * @static + */ + public static function getContainer() + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->getContainer(); + } + /** + * Set the container instance used by the manager. + * + * @param \Illuminate\Contracts\Container\Container $container + * @return \Illuminate\Notifications\ChannelManager + * @static + */ + public static function setContainer($container) + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->setContainer($container); + } + /** + * Forget all of the resolved driver instances. + * + * @return \Illuminate\Notifications\ChannelManager + * @static + */ + public static function forgetDrivers() + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->forgetDrivers(); + } + /** + * Assert if a notification was sent on-demand based on a truth-test callback. + * + * @param string|\Closure $notification + * @param callable|null $callback + * @return void + * @throws \Exception + * @static + */ + public static function assertSentOnDemand($notification, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertSentOnDemand($notification, $callback); + } + /** * Assert if a notification was sent based on a truth-test callback. * * @param mixed $notifiable - * @param string $notification + * @param string|\Closure $notification * @param callable|null $callback - * @return void + * @return void * @throws \Exception - * @static + * @static */ public static function assertSentTo($notifiable, $notification, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ $instance->assertSentTo($notifiable, $notification, $callback); } - - /** + /** + * Assert if a notification was sent on-demand a number of times. + * + * @param string $notification + * @param int $times + * @return void + * @static + */ + public static function assertSentOnDemandTimes($notification, $times = 1) + { + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertSentOnDemandTimes($notification, $times); + } + /** * Assert if a notification was sent a number of times. * * @param mixed $notifiable * @param string $notification * @param int $times - * @return void - * @static + * @return void + * @static */ public static function assertSentToTimes($notifiable, $notification, $times = 1) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ $instance->assertSentToTimes($notifiable, $notification, $times); } - - /** + /** * Determine if a notification was sent based on a truth-test callback. * * @param mixed $notifiable - * @param string $notification + * @param string|\Closure $notification * @param callable|null $callback - * @return void + * @return void * @throws \Exception - * @static + * @static */ public static function assertNotSentTo($notifiable, $notification, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ $instance->assertNotSentTo($notifiable, $notification, $callback); } - - /** + /** * Assert that no notifications were sent. * - * @return void - * @static + * @return void + * @static */ public static function assertNothingSent() { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ $instance->assertNothingSent(); } - - /** + /** + * Assert the total amount of times a notification was sent. + * + * @param string $notification + * @param int $expectedCount + * @return void + * @static + */ + public static function assertSentTimes($notification, $expectedCount) + { + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertSentTimes($notification, $expectedCount); + } + /** * Assert the total amount of times a notification was sent. * * @param int $expectedCount * @param string $notification - * @return void - * @static + * @return void + * @deprecated Use the assertSentTimes method instead + * @static */ public static function assertTimesSent($expectedCount, $notification) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ $instance->assertTimesSent($expectedCount, $notification); } - - /** + /** * Get all of the notifications matching a truth-test callback. * * @param mixed $notifiable * @param string $notification * @param callable|null $callback - * @return \Illuminate\Support\Collection - * @static + * @return \Illuminate\Support\Collection + * @static */ public static function sent($notifiable, $notification, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ return $instance->sent($notifiable, $notification, $callback); } - - /** + /** * Determine if there are more notifications left to inspect. * * @param mixed $notifiable * @param string $notification - * @return bool - * @static + * @return bool + * @static */ public static function hasSent($notifiable, $notification) { /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ return $instance->hasSent($notifiable, $notification); } - - /** + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Illuminate\Support\Testing\Fakes\NotificationFake::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Illuminate\Support\Testing\Fakes\NotificationFake::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Illuminate\Support\Testing\Fakes\NotificationFake::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\Support\Testing\Fakes\NotificationFake::flushMacros(); } } - - /** - * - * - * @method static string sendResetLink(array $credentials) + /** * @method static mixed reset(array $credentials, \Closure $callback) + * @method static string sendResetLink(array $credentials, \Closure $callback = null) + * @method static \Illuminate\Contracts\Auth\CanResetPassword getUser(array $credentials) + * @method static string createToken(\Illuminate\Contracts\Auth\CanResetPassword $user) + * @method static void deleteToken(\Illuminate\Contracts\Auth\CanResetPassword $user) + * @method static bool tokenExists(\Illuminate\Contracts\Auth\CanResetPassword $user, string $token) + * @method static \Illuminate\Auth\Passwords\TokenRepositoryInterface getRepository() * @see \Illuminate\Auth\Passwords\PasswordBroker */ - class Password { - - /** + class Password { + /** * Attempt to get the broker from the local cache. * * @param string|null $name - * @return \Illuminate\Contracts\Auth\PasswordBroker - * @static + * @return \Illuminate\Contracts\Auth\PasswordBroker + * @static */ public static function broker($name = null) { /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ return $instance->broker($name); } - - /** + /** * Get the default password broker name. * - * @return string - * @static + * @return string + * @static */ public static function getDefaultDriver() { /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ return $instance->getDefaultDriver(); } - - /** + /** * Set the default password broker name. * * @param string $name - * @return void - * @static + * @return void + * @static */ public static function setDefaultDriver($name) { @@ -7730,1319 +8206,1310 @@ namespace Illuminate\Support\Facades { } } - - /** - * - * + /** * @see \Illuminate\Queue\QueueManager * @see \Illuminate\Queue\Queue */ - class Queue { - - /** + class Queue { + /** * Register an event listener for the before job event. * * @param mixed $callback - * @return void - * @static + * @return void + * @static */ public static function before($callback) { /** @var \Illuminate\Queue\QueueManager $instance */ $instance->before($callback); } - - /** + /** * Register an event listener for the after job event. * * @param mixed $callback - * @return void - * @static + * @return void + * @static */ public static function after($callback) { /** @var \Illuminate\Queue\QueueManager $instance */ $instance->after($callback); } - - /** + /** * Register an event listener for the exception occurred job event. * * @param mixed $callback - * @return void - * @static + * @return void + * @static */ public static function exceptionOccurred($callback) { /** @var \Illuminate\Queue\QueueManager $instance */ $instance->exceptionOccurred($callback); } - - /** + /** * Register an event listener for the daemon queue loop. * * @param mixed $callback - * @return void - * @static + * @return void + * @static */ public static function looping($callback) { /** @var \Illuminate\Queue\QueueManager $instance */ $instance->looping($callback); } - - /** + /** * Register an event listener for the failed job event. * * @param mixed $callback - * @return void - * @static + * @return void + * @static */ public static function failing($callback) { /** @var \Illuminate\Queue\QueueManager $instance */ $instance->failing($callback); } - - /** + /** * Register an event listener for the daemon queue stopping. * * @param mixed $callback - * @return void - * @static + * @return void + * @static */ public static function stopping($callback) { /** @var \Illuminate\Queue\QueueManager $instance */ $instance->stopping($callback); } - - /** + /** * Determine if the driver is connected. * * @param string|null $name - * @return bool - * @static + * @return bool + * @static */ public static function connected($name = null) { /** @var \Illuminate\Queue\QueueManager $instance */ return $instance->connected($name); } - - /** + /** * Resolve a queue connection instance. * * @param string|null $name - * @return \Illuminate\Contracts\Queue\Queue - * @static + * @return \Illuminate\Contracts\Queue\Queue + * @static */ public static function connection($name = null) { /** @var \Illuminate\Queue\QueueManager $instance */ return $instance->connection($name); } - - /** + /** * Add a queue connection resolver. * * @param string $driver * @param \Closure $resolver - * @return void - * @static + * @return void + * @static */ public static function extend($driver, $resolver) { /** @var \Illuminate\Queue\QueueManager $instance */ $instance->extend($driver, $resolver); } - - /** + /** * Add a queue connection resolver. * * @param string $driver * @param \Closure $resolver - * @return void - * @static + * @return void + * @static */ public static function addConnector($driver, $resolver) { /** @var \Illuminate\Queue\QueueManager $instance */ $instance->addConnector($driver, $resolver); } - - /** + /** * Get the name of the default queue connection. * - * @return string - * @static + * @return string + * @static */ public static function getDefaultDriver() { /** @var \Illuminate\Queue\QueueManager $instance */ return $instance->getDefaultDriver(); } - - /** + /** * Set the name of the default queue connection. * * @param string $name - * @return void - * @static + * @return void + * @static */ public static function setDefaultDriver($name) { /** @var \Illuminate\Queue\QueueManager $instance */ $instance->setDefaultDriver($name); } - - /** + /** * Get the full name for the given connection. * * @param string|null $connection - * @return string - * @static + * @return string + * @static */ public static function getName($connection = null) { /** @var \Illuminate\Queue\QueueManager $instance */ return $instance->getName($connection); } - - /** + /** + * Get the application instance used by the manager. + * + * @return \Illuminate\Contracts\Foundation\Application + * @static + */ + public static function getApplication() + { + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->getApplication(); + } + /** + * Set the application instance used by the manager. + * + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Illuminate\Queue\QueueManager + * @static + */ + public static function setApplication($app) + { + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->setApplication($app); + } + /** * Assert if a job was pushed based on a truth-test callback. * - * @param string $job + * @param string|\Closure $job * @param callable|int|null $callback - * @return void - * @static + * @return void + * @static */ public static function assertPushed($job, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ $instance->assertPushed($job, $callback); } - - /** + /** * Assert if a job was pushed based on a truth-test callback. * * @param string $queue - * @param string $job + * @param string|\Closure $job * @param callable|null $callback - * @return void - * @static + * @return void + * @static */ public static function assertPushedOn($queue, $job, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ $instance->assertPushedOn($queue, $job, $callback); } - - /** + /** * Assert if a job was pushed with chained jobs based on a truth-test callback. * * @param string $job * @param array $expectedChain * @param callable|null $callback - * @return void - * @static + * @return void + * @static */ public static function assertPushedWithChain($job, $expectedChain = [], $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ $instance->assertPushedWithChain($job, $expectedChain, $callback); } - - /** + /** * Assert if a job was pushed with an empty chain based on a truth-test callback. * * @param string $job * @param callable|null $callback - * @return void - * @static + * @return void + * @static */ public static function assertPushedWithoutChain($job, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ $instance->assertPushedWithoutChain($job, $callback); } - - /** + /** * Determine if a job was pushed based on a truth-test callback. * - * @param string $job + * @param string|\Closure $job * @param callable|null $callback - * @return void - * @static + * @return void + * @static */ public static function assertNotPushed($job, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ $instance->assertNotPushed($job, $callback); } - - /** + /** * Assert that no jobs were pushed. * - * @return void - * @static + * @return void + * @static */ public static function assertNothingPushed() { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ $instance->assertNothingPushed(); } - - /** + /** * Get all of the jobs matching a truth-test callback. * * @param string $job * @param callable|null $callback - * @return \Illuminate\Support\Collection - * @static + * @return \Illuminate\Support\Collection + * @static */ public static function pushed($job, $callback = null) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ return $instance->pushed($job, $callback); } - - /** + /** * Determine if there are any stored jobs for a given class. * * @param string $job - * @return bool - * @static + * @return bool + * @static */ public static function hasPushed($job) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ return $instance->hasPushed($job); } - - /** + /** * Get the size of the queue. * * @param string|null $queue - * @return int - * @static + * @return int + * @static */ public static function size($queue = null) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ return $instance->size($queue); } - - /** + /** * Push a new job onto the queue. * - * @param string $job + * @param string|object $job * @param mixed $data * @param string|null $queue - * @return mixed - * @static + * @return mixed + * @static */ public static function push($job, $data = '', $queue = null) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ return $instance->push($job, $data, $queue); } - - /** + /** * Push a raw payload onto the queue. * * @param string $payload * @param string|null $queue * @param array $options - * @return mixed - * @static + * @return mixed + * @static */ public static function pushRaw($payload, $queue = null, $options = []) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ return $instance->pushRaw($payload, $queue, $options); } - - /** + /** * Push a new job onto the queue after a delay. * * @param \DateTimeInterface|\DateInterval|int $delay - * @param string $job + * @param string|object $job * @param mixed $data * @param string|null $queue - * @return mixed - * @static + * @return mixed + * @static */ public static function later($delay, $job, $data = '', $queue = null) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ return $instance->later($delay, $job, $data, $queue); } - - /** + /** * Push a new job onto the queue. * * @param string $queue - * @param string $job + * @param string|object $job * @param mixed $data - * @return mixed - * @static + * @return mixed + * @static */ public static function pushOn($queue, $job, $data = '') { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ return $instance->pushOn($queue, $job, $data); } - - /** + /** * Push a new job onto the queue after a delay. * * @param string $queue * @param \DateTimeInterface|\DateInterval|int $delay - * @param string $job + * @param string|object $job * @param mixed $data - * @return mixed - * @static + * @return mixed + * @static */ public static function laterOn($queue, $delay, $job, $data = '') { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ return $instance->laterOn($queue, $delay, $job, $data); } - - /** + /** * Pop the next job off of the queue. * * @param string|null $queue - * @return \Illuminate\Contracts\Queue\Job|null - * @static + * @return \Illuminate\Contracts\Queue\Job|null + * @static */ public static function pop($queue = null) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ return $instance->pop($queue); } - - /** + /** * Push an array of jobs onto the queue. * * @param array $jobs * @param mixed $data * @param string|null $queue - * @return mixed - * @static + * @return mixed + * @static */ public static function bulk($jobs, $data = '', $queue = null) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ return $instance->bulk($jobs, $data, $queue); } - - /** + /** * Get the jobs that have been pushed. * - * @return array - * @static + * @return array + * @static */ public static function pushedJobs() { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ return $instance->pushedJobs(); } - - /** + /** * Get the connection name for the queue. * - * @return string - * @static + * @return string + * @static */ public static function getConnectionName() { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ return $instance->getConnectionName(); } - - /** + /** * Set the connection name for the queue. * * @param string $name - * @return \Illuminate\Support\Testing\Fakes\QueueFake - * @static + * @return \Illuminate\Support\Testing\Fakes\QueueFake + * @static */ public static function setConnectionName($name) { /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ return $instance->setConnectionName($name); } - - /** - * Get the retry delay for an object-based queue handler. + /** + * Get the backoff for an object-based queue handler. * * @param mixed $job - * @return mixed - * @static + * @return mixed + * @static */ - public static function getJobRetryDelay($job) - { - //Method inherited from \Illuminate\Queue\Queue + public static function getJobBackoff($job) + { //Method inherited from \Illuminate\Queue\Queue /** @var \Illuminate\Queue\SyncQueue $instance */ - return $instance->getJobRetryDelay($job); + return $instance->getJobBackoff($job); } - - /** + /** * Get the expiration timestamp for an object-based queue handler. * * @param mixed $job - * @return mixed - * @static + * @return mixed + * @static */ public static function getJobExpiration($job) - { - //Method inherited from \Illuminate\Queue\Queue + { //Method inherited from \Illuminate\Queue\Queue /** @var \Illuminate\Queue\SyncQueue $instance */ return $instance->getJobExpiration($job); } - - /** + /** * Register a callback to be executed when creating job payloads. * - * @param callable $callback - * @return void - * @static + * @param callable|null $callback + * @return void + * @static */ public static function createPayloadUsing($callback) - { - //Method inherited from \Illuminate\Queue\Queue + { //Method inherited from \Illuminate\Queue\Queue \Illuminate\Queue\SyncQueue::createPayloadUsing($callback); } - - /** + /** + * Get the container instance being used by the connection. + * + * @return \Illuminate\Container\Container + * @static + */ + public static function getContainer() + { //Method inherited from \Illuminate\Queue\Queue + /** @var \Illuminate\Queue\SyncQueue $instance */ + return $instance->getContainer(); + } + /** * Set the IoC container instance. * * @param \Illuminate\Container\Container $container - * @return void - * @static + * @return void + * @static */ public static function setContainer($container) - { - //Method inherited from \Illuminate\Queue\Queue + { //Method inherited from \Illuminate\Queue\Queue /** @var \Illuminate\Queue\SyncQueue $instance */ $instance->setContainer($container); } } - - /** - * - * + /** * @see \Illuminate\Routing\Redirector */ - class Redirect { - - /** + class Redirect { + /** * Create a new redirect response to the "home" route. * * @param int $status - * @return \Illuminate\Http\RedirectResponse - * @static + * @return \Illuminate\Http\RedirectResponse + * @static */ public static function home($status = 302) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->home($status); } - - /** + /** * Create a new redirect response to the previous location. * * @param int $status * @param array $headers * @param mixed $fallback - * @return \Illuminate\Http\RedirectResponse - * @static + * @return \Illuminate\Http\RedirectResponse + * @static */ public static function back($status = 302, $headers = [], $fallback = false) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->back($status, $headers, $fallback); } - - /** + /** * Create a new redirect response to the current URI. * * @param int $status * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static + * @return \Illuminate\Http\RedirectResponse + * @static */ public static function refresh($status = 302, $headers = []) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->refresh($status, $headers); } - - /** + /** * Create a new redirect response, while putting the current URL in the session. * * @param string $path * @param int $status * @param array $headers * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse - * @static + * @return \Illuminate\Http\RedirectResponse + * @static */ public static function guest($path, $status = 302, $headers = [], $secure = null) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->guest($path, $status, $headers, $secure); } - - /** + /** * Create a new redirect response to the previously intended location. * * @param string $default * @param int $status * @param array $headers * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse - * @static + * @return \Illuminate\Http\RedirectResponse + * @static */ public static function intended($default = '/', $status = 302, $headers = [], $secure = null) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->intended($default, $status, $headers, $secure); } - - /** + /** * Set the intended url. * * @param string $url - * @return void - * @static + * @return void + * @static */ public static function setIntendedUrl($url) { /** @var \Illuminate\Routing\Redirector $instance */ $instance->setIntendedUrl($url); } - - /** + /** * Create a new redirect response to the given path. * * @param string $path * @param int $status * @param array $headers * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse - * @static + * @return \Illuminate\Http\RedirectResponse + * @static */ public static function to($path, $status = 302, $headers = [], $secure = null) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->to($path, $status, $headers, $secure); } - - /** + /** * Create a new redirect response to an external URL (no validation). * * @param string $path * @param int $status * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static + * @return \Illuminate\Http\RedirectResponse + * @static */ public static function away($path, $status = 302, $headers = []) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->away($path, $status, $headers); } - - /** + /** * Create a new redirect response to the given HTTPS path. * * @param string $path * @param int $status * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static + * @return \Illuminate\Http\RedirectResponse + * @static */ public static function secure($path, $status = 302, $headers = []) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->secure($path, $status, $headers); } - - /** + /** * Create a new redirect response to a named route. * * @param string $route * @param mixed $parameters * @param int $status * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static + * @return \Illuminate\Http\RedirectResponse + * @static */ public static function route($route, $parameters = [], $status = 302, $headers = []) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->route($route, $parameters, $status, $headers); } - - /** + /** + * Create a new redirect response to a signed named route. + * + * @param string $route + * @param mixed $parameters + * @param \DateTimeInterface|\DateInterval|int|null $expiration + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function signedRoute($route, $parameters = [], $expiration = null, $status = 302, $headers = []) + { + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->signedRoute($route, $parameters, $expiration, $status, $headers); + } + /** + * Create a new redirect response to a signed named route. + * + * @param string $route + * @param \DateTimeInterface|\DateInterval|int|null $expiration + * @param mixed $parameters + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function temporarySignedRoute($route, $expiration, $parameters = [], $status = 302, $headers = []) + { + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->temporarySignedRoute($route, $expiration, $parameters, $status, $headers); + } + /** * Create a new redirect response to a controller action. * * @param string|array $action * @param mixed $parameters * @param int $status * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static + * @return \Illuminate\Http\RedirectResponse + * @static */ public static function action($action, $parameters = [], $status = 302, $headers = []) { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->action($action, $parameters, $status, $headers); } - - /** + /** * Get the URL generator instance. * - * @return \Illuminate\Routing\UrlGenerator - * @static + * @return \Illuminate\Routing\UrlGenerator + * @static */ public static function getUrlGenerator() { /** @var \Illuminate\Routing\Redirector $instance */ return $instance->getUrlGenerator(); } - - /** + /** * Set the active session store. * * @param \Illuminate\Session\Store $session - * @return void - * @static + * @return void + * @static */ public static function setSession($session) { /** @var \Illuminate\Routing\Redirector $instance */ $instance->setSession($session); } - - /** + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Illuminate\Routing\Redirector::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Illuminate\Routing\Redirector::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Illuminate\Routing\Redirector::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\Routing\Redirector::flushMacros(); } } - - /** - * - * + /** * @method static mixed filterFiles(mixed $files) * @see \Illuminate\Http\Request */ - class Request { - - /** + class Request { + /** * Create a new Illuminate HTTP request from server variables. * - * @return static - * @static + * @return static + * @static */ public static function capture() { return \Illuminate\Http\Request::capture(); } - - /** + /** * Return the Request instance. * - * @return \Illuminate\Http\Request - * @static + * @return \Illuminate\Http\Request + * @static */ public static function instance() { /** @var \Illuminate\Http\Request $instance */ return $instance->instance(); } - - /** + /** * Get the request method. * - * @return string - * @static + * @return string + * @static */ public static function method() { /** @var \Illuminate\Http\Request $instance */ return $instance->method(); } - - /** + /** * Get the root URL for the application. * - * @return string - * @static + * @return string + * @static */ public static function root() { /** @var \Illuminate\Http\Request $instance */ return $instance->root(); } - - /** + /** * Get the URL (no query string) for the request. * - * @return string - * @static + * @return string + * @static */ public static function url() { /** @var \Illuminate\Http\Request $instance */ return $instance->url(); } - - /** + /** * Get the full URL for the request. * - * @return string - * @static + * @return string + * @static */ public static function fullUrl() { /** @var \Illuminate\Http\Request $instance */ return $instance->fullUrl(); } - - /** + /** * Get the full URL for the request with the added query string parameters. * * @param array $query - * @return string - * @static + * @return string + * @static */ public static function fullUrlWithQuery($query) { /** @var \Illuminate\Http\Request $instance */ return $instance->fullUrlWithQuery($query); } - - /** + /** + * Get the full URL for the request without the given query string parameters. + * + * @param array|string $query + * @return string + * @static + */ + public static function fullUrlWithoutQuery($keys) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->fullUrlWithoutQuery($keys); + } + /** * Get the current path info for the request. * - * @return string - * @static + * @return string + * @static */ public static function path() { /** @var \Illuminate\Http\Request $instance */ return $instance->path(); } - - /** + /** * Get the current decoded path info for the request. * - * @return string - * @static + * @return string + * @static */ public static function decodedPath() { /** @var \Illuminate\Http\Request $instance */ return $instance->decodedPath(); } - - /** + /** * Get a segment from the URI (1 based index). * * @param int $index * @param string|null $default - * @return string|null - * @static + * @return string|null + * @static */ public static function segment($index, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->segment($index, $default); } - - /** + /** * Get all of the segments for the request path. * - * @return array - * @static + * @return array + * @static */ public static function segments() { /** @var \Illuminate\Http\Request $instance */ return $instance->segments(); } - - /** + /** * Determine if the current request URI matches a pattern. * * @param mixed $patterns - * @return bool - * @static + * @return bool + * @static */ public static function is(...$patterns) { /** @var \Illuminate\Http\Request $instance */ return $instance->is(...$patterns); } - - /** + /** * Determine if the route name matches a given pattern. * * @param mixed $patterns - * @return bool - * @static + * @return bool + * @static */ public static function routeIs(...$patterns) { /** @var \Illuminate\Http\Request $instance */ return $instance->routeIs(...$patterns); } - - /** - * Determine if the current request URL and query string matches a pattern. + /** + * Determine if the current request URL and query string match a pattern. * * @param mixed $patterns - * @return bool - * @static + * @return bool + * @static */ public static function fullUrlIs(...$patterns) { /** @var \Illuminate\Http\Request $instance */ return $instance->fullUrlIs(...$patterns); } - - /** + /** * Determine if the request is the result of an AJAX call. * - * @return bool - * @static + * @return bool + * @static */ public static function ajax() { /** @var \Illuminate\Http\Request $instance */ return $instance->ajax(); } - - /** - * Determine if the request is the result of an PJAX call. + /** + * Determine if the request is the result of a PJAX call. * - * @return bool - * @static + * @return bool + * @static */ public static function pjax() { /** @var \Illuminate\Http\Request $instance */ return $instance->pjax(); } - - /** - * Determine if the request is the result of an prefetch call. + /** + * Determine if the request is the result of a prefetch call. * - * @return bool - * @static + * @return bool + * @static */ public static function prefetch() { /** @var \Illuminate\Http\Request $instance */ return $instance->prefetch(); } - - /** + /** * Determine if the request is over HTTPS. * - * @return bool - * @static + * @return bool + * @static */ public static function secure() { /** @var \Illuminate\Http\Request $instance */ return $instance->secure(); } - - /** + /** * Get the client IP address. * - * @return string|null - * @static + * @return string|null + * @static */ public static function ip() { /** @var \Illuminate\Http\Request $instance */ return $instance->ip(); } - - /** + /** * Get the client IP addresses. * - * @return array - * @static + * @return array + * @static */ public static function ips() { /** @var \Illuminate\Http\Request $instance */ return $instance->ips(); } - - /** + /** * Get the client user agent. * - * @return string|null - * @static + * @return string|null + * @static */ public static function userAgent() { /** @var \Illuminate\Http\Request $instance */ return $instance->userAgent(); } - - /** + /** * Merge new input into the current request's input array. * * @param array $input - * @return \Illuminate\Http\Request - * @static + * @return \Illuminate\Http\Request + * @static */ public static function merge($input) { /** @var \Illuminate\Http\Request $instance */ return $instance->merge($input); } - - /** + /** + * Merge new input into the request's input, but only when that key is missing from the request. + * + * @param array $input + * @return \Illuminate\Http\Request + * @static + */ + public static function mergeIfMissing($input) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->mergeIfMissing($input); + } + /** * Replace the input for the current request. * * @param array $input - * @return \Illuminate\Http\Request - * @static + * @return \Illuminate\Http\Request + * @static */ public static function replace($input) { /** @var \Illuminate\Http\Request $instance */ return $instance->replace($input); } - - /** + /** * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel. - * + * * Instead, you may use the "input" method. * * @param string $key * @param mixed $default - * @return mixed - * @static + * @return mixed + * @static */ public static function get($key, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->get($key, $default); } - - /** + /** * Get the JSON payload for the request. * * @param string|null $key * @param mixed $default - * @return \Symfony\Component\HttpFoundation\ParameterBag|mixed - * @static + * @return \Symfony\Component\HttpFoundation\ParameterBag|mixed + * @static */ public static function json($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->json($key, $default); } - - /** + /** * Create a new request instance from the given Laravel request. * * @param \Illuminate\Http\Request $from * @param \Illuminate\Http\Request|null $to - * @return static - * @static + * @return static + * @static */ public static function createFrom($from, $to = null) { return \Illuminate\Http\Request::createFrom($from, $to); } - - /** + /** * Create an Illuminate request from a Symfony instance. * * @param \Symfony\Component\HttpFoundation\Request $request - * @return static - * @static + * @return static + * @static */ public static function createFromBase($request) { return \Illuminate\Http\Request::createFromBase($request); } - - /** + /** * Clones a request and overrides some of its parameters. * - * @param array $query The GET parameters - * @param array $request The POST parameters - * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...) - * @param array $cookies The COOKIE parameters - * @param array $files The FILES parameters - * @param array $server The SERVER parameters - * @return static - * @static + * @return static + * @param array|null $query The GET parameters + * @param array|null $request The POST parameters + * @param array|null $attributes The request attributes (parameters parsed from the PATH_INFO, ...) + * @param array|null $cookies The COOKIE parameters + * @param array|null $files The FILES parameters + * @param array|null $server The SERVER parameters + * @return static + * @static */ public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->duplicate($query, $request, $attributes, $cookies, $files, $server); } - - /** + /** * Get the session associated with the request. * - * @return \Illuminate\Session\Store + * @return \Illuminate\Session\Store * @throws \RuntimeException - * @static + * @static */ public static function session() { /** @var \Illuminate\Http\Request $instance */ return $instance->session(); } - - /** + /** * Get the session associated with the request. * - * @return \Illuminate\Session\Store|null - * @static + * @return \Illuminate\Session\Store|null + * @static */ public static function getSession() { /** @var \Illuminate\Http\Request $instance */ return $instance->getSession(); } - - /** + /** * Set the session instance on the request. * * @param \Illuminate\Contracts\Session\Session $session - * @return void - * @static + * @return void + * @static */ public static function setLaravelSession($session) { /** @var \Illuminate\Http\Request $instance */ $instance->setLaravelSession($session); } - - /** + /** * Get the user making the request. * * @param string|null $guard - * @return mixed - * @static + * @return mixed + * @static */ public static function user($guard = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->user($guard); } - - /** + /** * Get the route handling the request. * * @param string|null $param * @param mixed $default - * @return \Illuminate\Routing\Route|object|string|null - * @static + * @return \Illuminate\Routing\Route|object|string|null + * @static */ public static function route($param = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->route($param, $default); } - - /** + /** * Get a unique fingerprint for the request / route / IP address. * - * @return string + * @return string * @throws \RuntimeException - * @static + * @static */ public static function fingerprint() { /** @var \Illuminate\Http\Request $instance */ return $instance->fingerprint(); } - - /** + /** * Set the JSON payload for the request. * * @param \Symfony\Component\HttpFoundation\ParameterBag $json - * @return \Illuminate\Http\Request - * @static + * @return \Illuminate\Http\Request + * @static */ public static function setJson($json) { /** @var \Illuminate\Http\Request $instance */ return $instance->setJson($json); } - - /** + /** * Get the user resolver callback. * - * @return \Closure - * @static + * @return \Closure + * @static */ public static function getUserResolver() { /** @var \Illuminate\Http\Request $instance */ return $instance->getUserResolver(); } - - /** + /** * Set the user resolver callback. * * @param \Closure $callback - * @return \Illuminate\Http\Request - * @static + * @return \Illuminate\Http\Request + * @static */ public static function setUserResolver($callback) { /** @var \Illuminate\Http\Request $instance */ return $instance->setUserResolver($callback); } - - /** + /** * Get the route resolver callback. * - * @return \Closure - * @static + * @return \Closure + * @static */ public static function getRouteResolver() { /** @var \Illuminate\Http\Request $instance */ return $instance->getRouteResolver(); } - - /** + /** * Set the route resolver callback. * * @param \Closure $callback - * @return \Illuminate\Http\Request - * @static + * @return \Illuminate\Http\Request + * @static */ public static function setRouteResolver($callback) { /** @var \Illuminate\Http\Request $instance */ return $instance->setRouteResolver($callback); } - - /** + /** * Get all of the input and files for the request. * - * @return array - * @static + * @return array + * @static */ public static function toArray() { /** @var \Illuminate\Http\Request $instance */ return $instance->toArray(); } - - /** + /** * Determine if the given offset exists. * * @param string $offset - * @return bool - * @static + * @return bool + * @static */ public static function offsetExists($offset) { /** @var \Illuminate\Http\Request $instance */ return $instance->offsetExists($offset); } - - /** + /** * Get the value at the given offset. * * @param string $offset - * @return mixed - * @static + * @return mixed + * @static */ public static function offsetGet($offset) { /** @var \Illuminate\Http\Request $instance */ return $instance->offsetGet($offset); } - - /** + /** * Set the value at the given offset. * * @param string $offset * @param mixed $value - * @return void - * @static + * @return void + * @static */ public static function offsetSet($offset, $value) { /** @var \Illuminate\Http\Request $instance */ $instance->offsetSet($offset, $value); } - - /** + /** * Remove the value at the given offset. * * @param string $offset - * @return void - * @static + * @return void + * @static */ public static function offsetUnset($offset) { /** @var \Illuminate\Http\Request $instance */ $instance->offsetUnset($offset); } - - /** + /** * Sets the parameters for this request. - * + * * This method also re-initializes all properties. * * @param array $query The GET parameters @@ -9052,30 +9519,26 @@ namespace Illuminate\Support\Facades { * @param array $files The FILES parameters * @param array $server The SERVER parameters * @param string|resource|null $content The raw body data - * @static + * @static */ public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content); } - - /** + /** * Creates a new request with values from PHP's super globals. * - * @return static - * @static + * @return static + * @static */ public static function createFromGlobals() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::createFromGlobals(); } - - /** + /** * Creates a Request based on a given URI and configuration. - * + * * The information contained in the URI always take precedence * over the other information (server and parameters). * @@ -9086,483 +9549,417 @@ namespace Illuminate\Support\Facades { * @param array $files The request files ($_FILES) * @param array $server The server parameters ($_SERVER) * @param string|resource|null $content The raw body data - * @return static - * @static + * @return static + * @throws BadRequestException When the URI is invalid + * @static */ public static function create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::create($uri, $method, $parameters, $cookies, $files, $server, $content); } - - /** + /** * Sets a callable able to create a Request instance. - * + * * This is mainly useful when you need to override the Request class * to keep BC with an existing system. It should not be used for any * other purpose. * - * @param callable|null $callable A PHP callable - * @static + * @static */ public static function setFactory($callable) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::setFactory($callable); } - - /** + /** * Overrides the PHP global variables according to this request instance. - * + * * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE. * $_FILES is never overridden, see rfc1867 * - * @static + * @static */ public static function overrideGlobals() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->overrideGlobals(); } - - /** + /** * Sets a list of trusted proxies. - * + * * You should only list the reverse proxies that you manage directly. * * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR'] * @param int $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies - * @throws \InvalidArgumentException When $trustedHeaderSet is invalid - * @static + * @static */ public static function setTrustedProxies($proxies, $trustedHeaderSet) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::setTrustedProxies($proxies, $trustedHeaderSet); } - - /** + /** * Gets the list of trusted proxies. * - * @return array An array of trusted proxies - * @static + * @return array + * @static */ public static function getTrustedProxies() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::getTrustedProxies(); } - - /** + /** * Gets the set of trusted headers from trusted proxies. * * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies - * @static + * @static */ public static function getTrustedHeaderSet() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::getTrustedHeaderSet(); } - - /** + /** * Sets a list of trusted host patterns. - * + * * You should only list the hosts you manage using regexs. * * @param array $hostPatterns A list of trusted host patterns - * @static + * @static */ public static function setTrustedHosts($hostPatterns) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::setTrustedHosts($hostPatterns); } - - /** + /** * Gets the list of trusted host patterns. * - * @return array An array of trusted host patterns - * @static + * @return array + * @static */ public static function getTrustedHosts() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::getTrustedHosts(); } - - /** + /** * Normalizes a query string. - * + * * It builds a normalized query string, where keys/value pairs are alphabetized, * have consistent escaping and unneeded delimiters are removed. * - * @param string $qs Query string - * @return string A normalized query string for the Request - * @static + * @return string + * @static */ public static function normalizeQueryString($qs) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::normalizeQueryString($qs); } - - /** + /** * Enables support for the _method request parameter to determine the intended HTTP method. - * + * * Be warned that enabling this feature might lead to CSRF issues in your code. * Check that you are using CSRF tokens when required. * If the HTTP method parameter override is enabled, an html-form with method "POST" can be altered * and used to send a "PUT" or "DELETE" request via the _method request parameter. * If these methods are not protected against CSRF, this presents a possible vulnerability. - * + * * The HTTP method can only be overridden when the real HTTP method is POST. * - * @static + * @static */ public static function enableHttpMethodParameterOverride() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::enableHttpMethodParameterOverride(); } - - /** + /** * Checks whether support for the _method request parameter is enabled. * - * @return bool True when the _method request parameter is enabled, false otherwise - * @static + * @return bool + * @static */ public static function getHttpMethodParameterOverride() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::getHttpMethodParameterOverride(); } - - /** + /** * Whether the request contains a Session which was started in one of the * previous requests. * - * @return bool - * @static + * @return bool + * @static */ public static function hasPreviousSession() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->hasPreviousSession(); } - - /** + /** * Whether the request contains a Session object. - * + * * This method does not give any information about the state of the session object, * like whether the session is started or not. It is just a way to check if this Request * is associated with a Session instance. * - * @return bool true when the Request contains a Session object, false otherwise - * @static + * @param bool $skipIfUninitialized When true, ignores factories injected by `setSessionFactory` + * @return bool + * @static */ public static function hasSession() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->hasSession(); } - - /** - * - * - * @static + /** + * @static */ public static function setSession($session) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->setSession($session); } - - /** - * - * - * @internal - * @static + /** + * @internal + * @param callable(): SessionInterface $factory + * @static */ public static function setSessionFactory($factory) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->setSessionFactory($factory); } - - /** + /** * Returns the client IP addresses. - * + * * In the returned array the most trusted IP address is first, and the * least trusted one last. The "real" client IP address is the last one, * but this is also the least trusted one. Trusted proxies are stripped. - * + * * Use this method carefully; you should use getClientIp() instead. * - * @return array The client IP addresses + * @return array * @see getClientIp() - * @static + * @static */ public static function getClientIps() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getClientIps(); } - - /** + /** * Returns the client IP address. - * + * * This method can read the client IP address from the "X-Forwarded-For" header * when trusted proxies were set via "setTrustedProxies()". The "X-Forwarded-For" * header value is a comma+space separated list of IP addresses, the left-most * being the original client, and each successive proxy that passed the request * adding the IP address where it received the request from. - * + * * If your reverse proxy uses a different header name than "X-Forwarded-For", * ("Client-Ip" for instance), configure it via the $trustedHeaderSet * argument of the Request::setTrustedProxies() method instead. * - * @return string|null The client IP address + * @return string|null * @see getClientIps() * @see https://wikipedia.org/wiki/X-Forwarded-For - * @static + * @static */ public static function getClientIp() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getClientIp(); } - - /** + /** * Returns current script name. * - * @return string - * @static + * @return string + * @static */ public static function getScriptName() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getScriptName(); } - - /** + /** * Returns the path being requested relative to the executed script. - * + * * The path info always starts with a /. - * + * * Suppose this request is instantiated from /mysite on localhost: - * + * * * http://localhost/mysite returns an empty string * * http://localhost/mysite/about returns '/about' * * http://localhost/mysite/enco%20ded returns '/enco%20ded' * * http://localhost/mysite/about?var=1 returns '/about' * * @return string The raw path (i.e. not urldecoded) - * @static + * @static */ public static function getPathInfo() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getPathInfo(); } - - /** + /** * Returns the root path from which this request is executed. - * + * * Suppose that an index.php file instantiates this request object: - * + * * * http://localhost/index.php returns an empty string * * http://localhost/index.php/page returns an empty string * * http://localhost/web/index.php returns '/web' * * http://localhost/we%20b/index.php returns '/we%20b' * * @return string The raw path (i.e. not urldecoded) - * @static + * @static */ public static function getBasePath() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getBasePath(); } - - /** + /** * Returns the root URL from which this request is executed. - * + * * The base URL never ends with a /. - * + * * This is similar to getBasePath(), except that it also includes the * script filename (e.g. index.php) if one exists. * * @return string The raw URL (i.e. not urldecoded) - * @static + * @static */ public static function getBaseUrl() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getBaseUrl(); } - - /** + /** * Gets the request's scheme. * - * @return string - * @static + * @return string + * @static */ public static function getScheme() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getScheme(); } - - /** + /** * Returns the port on which the request is made. - * + * * This method can read the client port from the "X-Forwarded-Port" header * when trusted proxies were set via "setTrustedProxies()". - * + * * The "X-Forwarded-Port" header must contain the client port. * - * @return int|string can be a string if fetched from the server bag - * @static + * @return int|string|null Can be a string if fetched from the server bag + * @static */ public static function getPort() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getPort(); } - - /** + /** * Returns the user. * - * @return string|null - * @static + * @return string|null + * @static */ public static function getUser() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getUser(); } - - /** + /** * Returns the password. * - * @return string|null - * @static + * @return string|null + * @static */ public static function getPassword() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getPassword(); } - - /** + /** * Gets the user info. * - * @return string A user name and, optionally, scheme-specific information about how to gain authorization to access the server - * @static + * @return string|null A user name if any and, optionally, scheme-specific information about how to gain authorization to access the server + * @static */ public static function getUserInfo() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getUserInfo(); } - - /** + /** * Returns the HTTP host being requested. - * + * * The port name will be appended to the host if it's non-standard. * - * @return string - * @static + * @return string + * @static */ public static function getHttpHost() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getHttpHost(); } - - /** + /** * Returns the requested URI (path and query string). * * @return string The raw URI (i.e. not URI decoded) - * @static + * @static */ public static function getRequestUri() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getRequestUri(); } - - /** + /** * Gets the scheme and HTTP host. - * + * * If the URL was called with basic authentication, the user * and the password are not added to the generated string. * - * @return string The scheme and HTTP host - * @static + * @return string + * @static */ public static function getSchemeAndHttpHost() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getSchemeAndHttpHost(); } - - /** + /** * Generates a normalized URI (URL) for the Request. * - * @return string A normalized URI (URL) for the Request + * @return string * @see getQueryString() - * @static + * @static */ public static function getUri() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getUri(); } - - /** + /** * Generates a normalized URI for the given path. * * @param string $path A path to use instead of the current one - * @return string The normalized URI for the path - * @static + * @return string + * @static */ public static function getUriForPath($path) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getUriForPath($path); } - - /** + /** * Returns the path as relative reference from the current Request path. - * + * * Only the URIs path component (no schema, host etc.) is relevant and must be given. * Both paths must be absolute and not contain relative parts. * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives. * Furthermore, they can be used to reduce the link size in documents. - * + * * Example target paths, given a base path of "/a/b/c/d": * - "/a/b/c/d" -> "" * - "/a/b/c/" -> "./" @@ -9570,1138 +9967,1128 @@ namespace Illuminate\Support\Facades { * - "/a/b/c/other" -> "other" * - "/a/x/y" -> "../../x/y" * - * @param string $path The target path - * @return string The relative target path - * @static + * @return string + * @static */ public static function getRelativeUriForPath($path) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getRelativeUriForPath($path); } - - /** + /** * Generates the normalized query string for the Request. - * + * * It builds a normalized query string, where keys/value pairs are alphabetized * and have consistent escaping. * - * @return string|null A normalized query string for the Request - * @static + * @return string|null + * @static */ public static function getQueryString() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getQueryString(); } - - /** + /** * Checks whether the request is secure or not. - * + * * This method can read the client protocol from the "X-Forwarded-Proto" header * when trusted proxies were set via "setTrustedProxies()". - * + * * The "X-Forwarded-Proto" header must contain the protocol: "https" or "http". * - * @return bool - * @static + * @return bool + * @static */ public static function isSecure() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isSecure(); } - - /** + /** * Returns the host name. - * + * * This method can read the client host name from the "X-Forwarded-Host" header * when trusted proxies were set via "setTrustedProxies()". - * + * * The "X-Forwarded-Host" header must contain the client host name. * - * @return string + * @return string * @throws SuspiciousOperationException when the host name is invalid or not trusted - * @static + * @static */ public static function getHost() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getHost(); } - - /** + /** * Sets the request method. * - * @param string $method - * @static + * @static */ public static function setMethod($method) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->setMethod($method); } - - /** + /** * Gets the request "intended" method. - * + * * If the X-HTTP-Method-Override header is set, and if the method is a POST, * then it is used to determine the "real" intended HTTP method. - * + * * The _method request parameter can also be used to determine the HTTP method, * but only if enableHttpMethodParameterOverride() has been called. - * + * * The method is always an uppercased string. * - * @return string The request method + * @return string * @see getRealMethod() - * @static + * @static */ public static function getMethod() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getMethod(); } - - /** + /** * Gets the "real" request method. * - * @return string The request method + * @return string * @see getMethod() - * @static + * @static */ public static function getRealMethod() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getRealMethod(); } - - /** + /** * Gets the mime type associated with the format. * - * @param string $format The format - * @return string|null The associated mime type (null if not found) - * @static + * @return string|null + * @static */ public static function getMimeType($format) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getMimeType($format); } - - /** + /** * Gets the mime types associated with the format. * - * @param string $format The format - * @return array The associated mime types - * @static + * @return array + * @static */ public static function getMimeTypes($format) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::getMimeTypes($format); } - - /** + /** * Gets the format associated with the mime type. * - * @param string $mimeType The associated mime type - * @return string|null The format (null if not found) - * @static + * @return string|null + * @static */ public static function getFormat($mimeType) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getFormat($mimeType); } - - /** + /** * Associates a format with mime types. * - * @param string $format The format * @param string|array $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type) - * @static + * @static */ public static function setFormat($format, $mimeTypes) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->setFormat($format, $mimeTypes); } - - /** + /** * Gets the request format. - * + * * Here is the process to determine the format: - * + * * * format defined by the user (with setRequestFormat()) * * _format request attribute * * $default * * @see getPreferredFormat - * @param string|null $default The default format - * @return string|null The request format - * @static + * @return string|null + * @static */ public static function getRequestFormat($default = 'html') - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getRequestFormat($default); } - - /** + /** * Sets the request format. * - * @param string $format The request format - * @static + * @static */ public static function setRequestFormat($format) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->setRequestFormat($format); } - - /** + /** * Gets the format associated with the request. * - * @return string|null The format (null if no content type is present) - * @static + * @return string|null + * @static */ public static function getContentType() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getContentType(); } - - /** + /** * Sets the default locale. * - * @param string $locale - * @static + * @static */ public static function setDefaultLocale($locale) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->setDefaultLocale($locale); } - - /** + /** * Get the default locale. * - * @return string - * @static + * @return string + * @static */ public static function getDefaultLocale() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getDefaultLocale(); } - - /** + /** * Sets the locale. * - * @param string $locale - * @static + * @static */ public static function setLocale($locale) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->setLocale($locale); } - - /** + /** * Get the locale. * - * @return string - * @static + * @return string + * @static */ public static function getLocale() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getLocale(); } - - /** + /** * Checks if the request method is of specified type. * * @param string $method Uppercase request method (GET, POST etc) - * @return bool - * @static + * @return bool + * @static */ public static function isMethod($method) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isMethod($method); } - - /** + /** * Checks whether or not the method is safe. * * @see https://tools.ietf.org/html/rfc7231#section-4.2.1 - * @return bool - * @static + * @return bool + * @static */ public static function isMethodSafe() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isMethodSafe(); } - - /** + /** * Checks whether or not the method is idempotent. * - * @return bool - * @static + * @return bool + * @static */ public static function isMethodIdempotent() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isMethodIdempotent(); } - - /** + /** * Checks whether the method is cacheable or not. * * @see https://tools.ietf.org/html/rfc7231#section-4.2.3 - * @return bool True for GET and HEAD, false otherwise - * @static + * @return bool + * @static */ public static function isMethodCacheable() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isMethodCacheable(); } - - /** + /** * Returns the protocol version. - * + * * If the application is behind a proxy, the protocol version used in the * requests between the client and the proxy and between the proxy and the * server might be different. This returns the former (from the "Via" header) * if the proxy is trusted (see "setTrustedProxies()"), otherwise it returns * the latter (from the "SERVER_PROTOCOL" server parameter). * - * @return string - * @static + * @return string|null + * @static */ public static function getProtocolVersion() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getProtocolVersion(); } - - /** + /** * Returns the request body content. * * @param bool $asResource If true, a resource will be returned - * @return string|resource The request body content or a resource to read the body stream - * @throws \LogicException - * @static + * @return string|resource + * @static */ public static function getContent($asResource = false) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getContent($asResource); } - - /** + /** * Gets the Etags. * - * @return array The entity tags - * @static + * @return array + * @static */ public static function getETags() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getETags(); } - - /** - * - * - * @return bool - * @static + /** + * @return bool + * @static */ public static function isNoCache() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isNoCache(); } - - /** + /** * Gets the preferred format for the response by inspecting, in the following order: - * * the request format set using setRequestFormat - * * the values of the Accept HTTP header - * + * * the request format set using setRequestFormat; + * * the values of the Accept HTTP header. + * * Note that if you use this method, you should send the "Vary: Accept" header * in the response to prevent any issues with intermediary HTTP caches. * - * @static + * @static */ public static function getPreferredFormat($default = 'html') - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getPreferredFormat($default); } - - /** + /** * Returns the preferred language. * * @param string[] $locales An array of ordered available locales - * @return string|null The preferred locale - * @static + * @return string|null + * @static */ public static function getPreferredLanguage($locales = null) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getPreferredLanguage($locales); } - - /** - * Gets a list of languages acceptable by the client browser. + /** + * Gets a list of languages acceptable by the client browser ordered in the user browser preferences. * - * @return array Languages ordered in the user browser preferences - * @static + * @return array + * @static */ public static function getLanguages() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getLanguages(); } - - /** - * Gets a list of charsets acceptable by the client browser. + /** + * Gets a list of charsets acceptable by the client browser in preferable order. * - * @return array List of charsets in preferable order - * @static + * @return array + * @static */ public static function getCharsets() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getCharsets(); } - - /** - * Gets a list of encodings acceptable by the client browser. + /** + * Gets a list of encodings acceptable by the client browser in preferable order. * - * @return array List of encodings in preferable order - * @static + * @return array + * @static */ public static function getEncodings() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getEncodings(); } - - /** - * Gets a list of content types acceptable by the client browser. + /** + * Gets a list of content types acceptable by the client browser in preferable order. * - * @return array List of content types in preferable order - * @static + * @return array + * @static */ public static function getAcceptableContentTypes() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getAcceptableContentTypes(); } - - /** - * Returns true if the request is a XMLHttpRequest. - * + /** + * Returns true if the request is an XMLHttpRequest. + * * It works if your JavaScript library sets an X-Requested-With HTTP header. * It is known to work with common JavaScript frameworks: * * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript - * @return bool true if the request is an XMLHttpRequest, false otherwise - * @static + * @return bool + * @static */ public static function isXmlHttpRequest() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isXmlHttpRequest(); } - - /** + /** + * Checks whether the client browser prefers safe content or not according to RFC8674. + * + * @see https://tools.ietf.org/html/rfc8674 + * @static + */ + public static function preferSafeContent() + { //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->preferSafeContent(); + } + /** * Indicates whether this request originated from a trusted proxy. - * + * * This can be useful to determine whether or not to trust the * contents of a proxy-specific header. * - * @return bool true if the request came from a trusted proxy, false otherwise - * @static + * @return bool + * @static */ public static function isFromTrustedProxy() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isFromTrustedProxy(); } - - /** - * Determine if the given content types match. - * - * @param string $actual - * @param string $type - * @return bool - * @static - */ - public static function matchesType($actual, $type) - { - return \Illuminate\Http\Request::matchesType($actual, $type); - } - - /** + /** * Determine if the request is sending JSON. * - * @return bool - * @static + * @return bool + * @static */ public static function isJson() { /** @var \Illuminate\Http\Request $instance */ return $instance->isJson(); } - - /** + /** * Determine if the current request probably expects a JSON response. * - * @return bool - * @static + * @return bool + * @static */ public static function expectsJson() { /** @var \Illuminate\Http\Request $instance */ return $instance->expectsJson(); } - - /** + /** * Determine if the current request is asking for JSON. * - * @return bool - * @static + * @return bool + * @static */ public static function wantsJson() { /** @var \Illuminate\Http\Request $instance */ return $instance->wantsJson(); } - - /** + /** * Determines whether the current requests accepts a given content type. * * @param string|array $contentTypes - * @return bool - * @static + * @return bool + * @static */ public static function accepts($contentTypes) { /** @var \Illuminate\Http\Request $instance */ return $instance->accepts($contentTypes); } - - /** + /** * Return the most suitable content type from the given array based on content negotiation. * * @param string|array $contentTypes - * @return string|null - * @static + * @return string|null + * @static */ public static function prefers($contentTypes) { /** @var \Illuminate\Http\Request $instance */ return $instance->prefers($contentTypes); } - - /** + /** * Determine if the current request accepts any content type. * - * @return bool - * @static + * @return bool + * @static */ public static function acceptsAnyContentType() { /** @var \Illuminate\Http\Request $instance */ return $instance->acceptsAnyContentType(); } - - /** + /** * Determines whether a request accepts JSON. * - * @return bool - * @static + * @return bool + * @static */ public static function acceptsJson() { /** @var \Illuminate\Http\Request $instance */ return $instance->acceptsJson(); } - - /** + /** * Determines whether a request accepts HTML. * - * @return bool - * @static + * @return bool + * @static */ public static function acceptsHtml() { /** @var \Illuminate\Http\Request $instance */ return $instance->acceptsHtml(); } - - /** + /** + * Determine if the given content types match. + * + * @param string $actual + * @param string $type + * @return bool + * @static + */ + public static function matchesType($actual, $type) + { + return \Illuminate\Http\Request::matchesType($actual, $type); + } + /** * Get the data format expected in the response. * * @param string $default - * @return string - * @static + * @return string + * @static */ public static function format($default = 'html') { /** @var \Illuminate\Http\Request $instance */ return $instance->format($default); } - - /** + /** * Retrieve an old input item. * * @param string|null $key * @param string|array|null $default - * @return string|array - * @static + * @return string|array|null + * @static */ public static function old($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->old($key, $default); } - - /** + /** * Flash the input for the current request to the session. * - * @return void - * @static + * @return void + * @static */ public static function flash() { /** @var \Illuminate\Http\Request $instance */ $instance->flash(); } - - /** + /** * Flash only some of the input to the session. * * @param array|mixed $keys - * @return void - * @static + * @return void + * @static */ public static function flashOnly($keys) { /** @var \Illuminate\Http\Request $instance */ $instance->flashOnly($keys); } - - /** + /** * Flash only some of the input to the session. * * @param array|mixed $keys - * @return void - * @static + * @return void + * @static */ public static function flashExcept($keys) { /** @var \Illuminate\Http\Request $instance */ $instance->flashExcept($keys); } - - /** + /** * Flush all of the old input from the session. * - * @return void - * @static + * @return void + * @static */ public static function flush() { /** @var \Illuminate\Http\Request $instance */ $instance->flush(); } - - /** + /** * Retrieve a server variable from the request. * * @param string|null $key * @param string|array|null $default - * @return string|array|null - * @static + * @return string|array|null + * @static */ public static function server($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->server($key, $default); } - - /** + /** * Determine if a header is set on the request. * * @param string $key - * @return bool - * @static + * @return bool + * @static */ public static function hasHeader($key) { /** @var \Illuminate\Http\Request $instance */ return $instance->hasHeader($key); } - - /** + /** * Retrieve a header from the request. * * @param string|null $key * @param string|array|null $default - * @return string|array|null - * @static + * @return string|array|null + * @static */ public static function header($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->header($key, $default); } - - /** + /** * Get the bearer token from the request headers. * - * @return string|null - * @static + * @return string|null + * @static */ public static function bearerToken() { /** @var \Illuminate\Http\Request $instance */ return $instance->bearerToken(); } - - /** + /** * Determine if the request contains a given input item key. * * @param string|array $key - * @return bool - * @static + * @return bool + * @static */ public static function exists($key) { /** @var \Illuminate\Http\Request $instance */ return $instance->exists($key); } - - /** + /** * Determine if the request contains a given input item key. * * @param string|array $key - * @return bool - * @static + * @return bool + * @static */ public static function has($key) { /** @var \Illuminate\Http\Request $instance */ return $instance->has($key); } - - /** + /** * Determine if the request contains any of the given inputs. * * @param string|array $keys - * @return bool - * @static + * @return bool + * @static */ public static function hasAny($keys) { /** @var \Illuminate\Http\Request $instance */ return $instance->hasAny($keys); } - - /** + /** + * Apply the callback if the request contains the given input item key. + * + * @param string $key + * @param callable $callback + * @param callable|null $default + * @return $this|mixed + * @static + */ + public static function whenHas($key, $callback, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->whenHas($key, $callback, $default); + } + /** * Determine if the request contains a non-empty value for an input item. * * @param string|array $key - * @return bool - * @static + * @return bool + * @static */ public static function filled($key) { /** @var \Illuminate\Http\Request $instance */ return $instance->filled($key); } - - /** + /** + * Determine if the request contains an empty value for an input item. + * + * @param string|array $key + * @return bool + * @static + */ + public static function isNotFilled($key) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->isNotFilled($key); + } + /** * Determine if the request contains a non-empty value for any of the given inputs. * * @param string|array $keys - * @return bool - * @static + * @return bool + * @static */ public static function anyFilled($keys) { /** @var \Illuminate\Http\Request $instance */ return $instance->anyFilled($keys); } - - /** + /** + * Apply the callback if the request contains a non-empty value for the given input item key. + * + * @param string $key + * @param callable $callback + * @param callable|null $default + * @return $this|mixed + * @static + */ + public static function whenFilled($key, $callback, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->whenFilled($key, $callback, $default); + } + /** * Determine if the request is missing a given input item key. * * @param string|array $key - * @return bool - * @static + * @return bool + * @static */ public static function missing($key) { /** @var \Illuminate\Http\Request $instance */ return $instance->missing($key); } - - /** + /** * Get the keys for all of the input and files. * - * @return array - * @static + * @return array + * @static */ public static function keys() { /** @var \Illuminate\Http\Request $instance */ return $instance->keys(); } - - /** + /** * Get all of the input and files for the request. * * @param array|mixed|null $keys - * @return array - * @static + * @return array + * @static */ public static function all($keys = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->all($keys); } - - /** + /** * Retrieve an input item from the request. * * @param string|null $key * @param mixed $default - * @return mixed - * @static + * @return mixed + * @static */ public static function input($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->input($key, $default); } - - /** + /** * Retrieve input as a boolean value. - * + * * Returns true when value is "1", "true", "on", and "yes". Otherwise, returns false. * * @param string|null $key * @param bool $default - * @return bool - * @static + * @return bool + * @static */ 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 Carbon instance. + * + * @param string $key + * @param string|null $format + * @param string|null $tz + * @return \Illuminate\Support\Carbon|null + * @static + */ + public static function date($key, $format = null, $tz = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->date($key, $format, $tz); + } + /** + * Retrieve input from the request as a collection. + * + * @param array|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. * * @param array|mixed $keys - * @return array - * @static + * @return array + * @static */ public static function only($keys) { /** @var \Illuminate\Http\Request $instance */ return $instance->only($keys); } - - /** + /** * Get all of the input except for a specified array of items. * * @param array|mixed $keys - * @return array - * @static + * @return array + * @static */ public static function except($keys) { /** @var \Illuminate\Http\Request $instance */ return $instance->except($keys); } - - /** + /** * Retrieve a query string item from the request. * * @param string|null $key * @param string|array|null $default - * @return string|array|null - * @static + * @return string|array|null + * @static */ public static function query($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->query($key, $default); } - - /** + /** * Retrieve a request payload item from the request. * * @param string|null $key * @param string|array|null $default - * @return string|array|null - * @static + * @return string|array|null + * @static */ public static function post($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->post($key, $default); } - - /** + /** * Determine if a cookie is set on the request. * * @param string $key - * @return bool - * @static + * @return bool + * @static */ public static function hasCookie($key) { /** @var \Illuminate\Http\Request $instance */ return $instance->hasCookie($key); } - - /** + /** * Retrieve a cookie from the request. * * @param string|null $key * @param string|array|null $default - * @return string|array|null - * @static + * @return string|array|null + * @static */ public static function cookie($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->cookie($key, $default); } - - /** + /** * Get an array of all of the files on the request. * - * @return array - * @static + * @return array + * @static */ public static function allFiles() { /** @var \Illuminate\Http\Request $instance */ return $instance->allFiles(); } - - /** + /** * Determine if the uploaded data contains a file. * * @param string $key - * @return bool - * @static + * @return bool + * @static */ public static function hasFile($key) { /** @var \Illuminate\Http\Request $instance */ return $instance->hasFile($key); } - - /** + /** * Retrieve a file from the request. * * @param string|null $key * @param mixed $default - * @return \Illuminate\Http\UploadedFile|\Illuminate\Http\UploadedFile[]|array|null - * @static + * @return \Illuminate\Http\UploadedFile|\Illuminate\Http\UploadedFile[]|array|null + * @static */ public static function file($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->file($key, $default); } - - /** + /** + * Dump the request items and end the script. + * + * @param mixed $keys + * @return void + * @static + */ + public static function dd(...$keys) + { + /** @var \Illuminate\Http\Request $instance */ + $instance->dd(...$keys); + } + /** + * Dump the items. + * + * @param mixed $keys + * @return \Illuminate\Http\Request + * @static + */ + public static function dump($keys = []) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->dump($keys); + } + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Illuminate\Http\Request::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Illuminate\Http\Request::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Illuminate\Http\Request::hasMacro($name); } - - /** - * + /** + * Flush the existing macros. * - * @static + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\Http\Request::flushMacros(); + } + /** + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() + * @param array $rules + * @param mixed $params + * @static */ public static function validate($rules, ...$params) { return \Illuminate\Http\Request::validate($rules, ...$params); } - - /** - * - * - * @static + /** + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() + * @param string $errorBag + * @param array $rules + * @param mixed $params + * @static */ public static function validateWithBag($errorBag, $rules, ...$params) { return \Illuminate\Http\Request::validateWithBag($errorBag, $rules, ...$params); } - - /** - * - * - * @static + /** + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @param mixed $absolute + * @static */ public static function hasValidSignature($absolute = true) { return \Illuminate\Http\Request::hasValidSignature($absolute); + } + /** + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @static + */ + public static function hasValidRelativeSignature() + { + return \Illuminate\Http\Request::hasValidRelativeSignature(); } } - - /** - * - * + /** * @see \Illuminate\Contracts\Routing\ResponseFactory */ - class Response { - - /** + class Response { + /** * Create a new response instance. * - * @param string $content + * @param mixed $content * @param int $status * @param array $headers - * @return \Illuminate\Http\Response - * @static + * @return \Illuminate\Http\Response + * @static */ public static function make($content = '', $status = 200, $headers = []) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->make($content, $status, $headers); } - - /** + /** * Create a new "no content" response. * * @param int $status * @param array $headers - * @return \Illuminate\Http\Response - * @static + * @return \Illuminate\Http\Response + * @static */ public static function noContent($status = 204, $headers = []) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->noContent($status, $headers); } - - /** + /** * Create a new response for a given view. * * @param string|array $view * @param array $data * @param int $status * @param array $headers - * @return \Illuminate\Http\Response - * @static + * @return \Illuminate\Http\Response + * @static */ public static function view($view, $data = [], $status = 200, $headers = []) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->view($view, $data, $status, $headers); } - - /** + /** * Create a new JSON response instance. * * @param mixed $data * @param int $status * @param array $headers * @param int $options - * @return \Illuminate\Http\JsonResponse - * @static + * @return \Illuminate\Http\JsonResponse + * @static */ public static function json($data = [], $status = 200, $headers = [], $options = 0) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->json($data, $status, $headers, $options); } - - /** + /** * Create a new JSONP response instance. * * @param string $callback @@ -10709,2058 +11096,2090 @@ namespace Illuminate\Support\Facades { * @param int $status * @param array $headers * @param int $options - * @return \Illuminate\Http\JsonResponse - * @static + * @return \Illuminate\Http\JsonResponse + * @static */ public static function jsonp($callback, $data = [], $status = 200, $headers = [], $options = 0) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->jsonp($callback, $data, $status, $headers, $options); } - - /** + /** * Create a new streamed response instance. * * @param \Closure $callback * @param int $status * @param array $headers - * @return \Symfony\Component\HttpFoundation\StreamedResponse - * @static + * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @static */ public static function stream($callback, $status = 200, $headers = []) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->stream($callback, $status, $headers); } - - /** + /** * Create a new streamed response instance as a file download. * * @param \Closure $callback * @param string|null $name * @param array $headers * @param string|null $disposition - * @return \Symfony\Component\HttpFoundation\StreamedResponse - * @static + * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @static */ public static function streamDownload($callback, $name = null, $headers = [], $disposition = 'attachment') { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->streamDownload($callback, $name, $headers, $disposition); } - - /** + /** * Create a new file download response. * * @param \SplFileInfo|string $file * @param string|null $name * @param array $headers * @param string|null $disposition - * @return \Symfony\Component\HttpFoundation\BinaryFileResponse - * @static + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + * @static */ public static function download($file, $name = null, $headers = [], $disposition = 'attachment') { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->download($file, $name, $headers, $disposition); } - - /** + /** * Return the raw contents of a binary file. * * @param \SplFileInfo|string $file * @param array $headers - * @return \Symfony\Component\HttpFoundation\BinaryFileResponse - * @static + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + * @static */ public static function file($file, $headers = []) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->file($file, $headers); } - - /** + /** * Create a new redirect response to the given path. * * @param string $path * @param int $status * @param array $headers * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse - * @static + * @return \Illuminate\Http\RedirectResponse + * @static */ public static function redirectTo($path, $status = 302, $headers = [], $secure = null) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->redirectTo($path, $status, $headers, $secure); } - - /** + /** * Create a new redirect response to a named route. * * @param string $route - * @param array $parameters + * @param mixed $parameters * @param int $status * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static + * @return \Illuminate\Http\RedirectResponse + * @static */ public static function redirectToRoute($route, $parameters = [], $status = 302, $headers = []) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->redirectToRoute($route, $parameters, $status, $headers); } - - /** + /** * Create a new redirect response to a controller action. * * @param string $action - * @param array $parameters + * @param mixed $parameters * @param int $status * @param array $headers - * @return \Illuminate\Http\RedirectResponse - * @static + * @return \Illuminate\Http\RedirectResponse + * @static */ public static function redirectToAction($action, $parameters = [], $status = 302, $headers = []) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->redirectToAction($action, $parameters, $status, $headers); } - - /** + /** * Create a new redirect response, while putting the current URL in the session. * * @param string $path * @param int $status * @param array $headers * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse - * @static + * @return \Illuminate\Http\RedirectResponse + * @static */ public static function redirectGuest($path, $status = 302, $headers = [], $secure = null) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->redirectGuest($path, $status, $headers, $secure); } - - /** + /** * Create a new redirect response to the previously intended location. * * @param string $default * @param int $status * @param array $headers * @param bool|null $secure - * @return \Illuminate\Http\RedirectResponse - * @static + * @return \Illuminate\Http\RedirectResponse + * @static */ public static function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null) { /** @var \Illuminate\Routing\ResponseFactory $instance */ return $instance->redirectToIntended($default, $status, $headers, $secure); } - - /** + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Illuminate\Routing\ResponseFactory::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Illuminate\Routing\ResponseFactory::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Illuminate\Routing\ResponseFactory::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\Routing\ResponseFactory::flushMacros(); } } - - /** - * - * - * @method static \Illuminate\Routing\RouteRegistrar prefix(string $prefix) - * @method static \Illuminate\Routing\RouteRegistrar where(array $where) - * @method static \Illuminate\Routing\RouteRegistrar middleware(array|string|null $middleware) + /** * @method static \Illuminate\Routing\RouteRegistrar as(string $value) + * @method static \Illuminate\Routing\RouteRegistrar controller(string $controller) * @method static \Illuminate\Routing\RouteRegistrar domain(string $value) + * @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 $value) + * @method static \Illuminate\Routing\RouteRegistrar namespace(string|null $value) + * @method static \Illuminate\Routing\RouteRegistrar prefix(string $prefix) + * @method static \Illuminate\Routing\RouteRegistrar scopeBindings() + * @method static \Illuminate\Routing\RouteRegistrar where(array $where) + * @method static \Illuminate\Routing\RouteRegistrar withoutMiddleware(array|string $middleware) * @see \Illuminate\Routing\Router */ - class Route { - - /** + class Route { + /** * Register a new GET route with the router. * * @param string $uri - * @param \Closure|array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static */ public static function get($uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ return $instance->get($uri, $action); } - - /** + /** * Register a new POST route with the router. * * @param string $uri - * @param \Closure|array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static */ public static function post($uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ return $instance->post($uri, $action); } - - /** + /** * Register a new PUT route with the router. * * @param string $uri - * @param \Closure|array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static */ public static function put($uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ return $instance->put($uri, $action); } - - /** + /** * Register a new PATCH route with the router. * * @param string $uri - * @param \Closure|array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static */ public static function patch($uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ return $instance->patch($uri, $action); } - - /** + /** * Register a new DELETE route with the router. * * @param string $uri - * @param \Closure|array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static */ public static function delete($uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ return $instance->delete($uri, $action); } - - /** + /** * Register a new OPTIONS route with the router. * * @param string $uri - * @param \Closure|array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static */ public static function options($uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ return $instance->options($uri, $action); } - - /** + /** * Register a new route responding to all verbs. * * @param string $uri - * @param \Closure|array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static */ public static function any($uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ return $instance->any($uri, $action); } - - /** + /** * Register a new Fallback route with the router. * - * @param \Closure|array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static */ public static function fallback($action) { /** @var \Illuminate\Routing\Router $instance */ return $instance->fallback($action); } - - /** + /** * Create a redirect from one URI to another. * * @param string $uri * @param string $destination * @param int $status - * @return \Illuminate\Routing\Route - * @static + * @return \Illuminate\Routing\Route + * @static */ public static function redirect($uri, $destination, $status = 302) { /** @var \Illuminate\Routing\Router $instance */ return $instance->redirect($uri, $destination, $status); } - - /** + /** * Create a permanent redirect from one URI to another. * * @param string $uri * @param string $destination - * @return \Illuminate\Routing\Route - * @static + * @return \Illuminate\Routing\Route + * @static */ public static function permanentRedirect($uri, $destination) { /** @var \Illuminate\Routing\Router $instance */ return $instance->permanentRedirect($uri, $destination); } - - /** + /** * Register a new route that returns a view. * * @param string $uri * @param string $view * @param array $data - * @return \Illuminate\Routing\Route - * @static + * @param int|array $status + * @param array $headers + * @return \Illuminate\Routing\Route + * @static */ - public static function view($uri, $view, $data = []) + public static function view($uri, $view, $data = [], $status = 200, $headers = []) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->view($uri, $view, $data); + return $instance->view($uri, $view, $data, $status, $headers); } - - /** + /** * Register a new route with the given verbs. * * @param array|string $methods * @param string $uri - * @param \Closure|array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static */ public static function match($methods, $uri, $action = null) { /** @var \Illuminate\Routing\Router $instance */ return $instance->match($methods, $uri, $action); } - - /** + /** * Register an array of resource controllers. * * @param array $resources * @param array $options - * @return void - * @static + * @return void + * @static */ public static function resources($resources, $options = []) { /** @var \Illuminate\Routing\Router $instance */ $instance->resources($resources, $options); } - - /** + /** * Route a resource to a controller. * * @param string $name * @param string $controller * @param array $options - * @return \Illuminate\Routing\PendingResourceRegistration - * @static + * @return \Illuminate\Routing\PendingResourceRegistration + * @static */ public static function resource($name, $controller, $options = []) { /** @var \Illuminate\Routing\Router $instance */ return $instance->resource($name, $controller, $options); } - - /** + /** * Register an array of API resource controllers. * * @param array $resources * @param array $options - * @return void - * @static + * @return void + * @static */ public static function apiResources($resources, $options = []) { /** @var \Illuminate\Routing\Router $instance */ $instance->apiResources($resources, $options); } - - /** + /** * Route an API resource to a controller. * * @param string $name * @param string $controller * @param array $options - * @return \Illuminate\Routing\PendingResourceRegistration - * @static + * @return \Illuminate\Routing\PendingResourceRegistration + * @static */ public static function apiResource($name, $controller, $options = []) { /** @var \Illuminate\Routing\Router $instance */ return $instance->apiResource($name, $controller, $options); } - - /** + /** * Create a route group with shared attributes. * * @param array $attributes * @param \Closure|string $routes - * @return void - * @static + * @return void + * @static */ public static function group($attributes, $routes) { /** @var \Illuminate\Routing\Router $instance */ $instance->group($attributes, $routes); } - - /** + /** * Merge the given array with the last group stack. * * @param array $new - * @return array - * @static + * @param bool $prependExistingPrefix + * @return array + * @static */ - public static function mergeWithLastGroup($new) + public static function mergeWithLastGroup($new, $prependExistingPrefix = true) { /** @var \Illuminate\Routing\Router $instance */ - return $instance->mergeWithLastGroup($new); + return $instance->mergeWithLastGroup($new, $prependExistingPrefix); } - - /** + /** * Get the prefix from the last group on the stack. * - * @return string - * @static + * @return string + * @static */ public static function getLastGroupPrefix() { /** @var \Illuminate\Routing\Router $instance */ return $instance->getLastGroupPrefix(); } - - /** + /** * Add a route to the underlying route collection. * * @param array|string $methods * @param string $uri - * @param \Closure|array|string|callable|null $action - * @return \Illuminate\Routing\Route - * @static + * @param array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static */ public static function addRoute($methods, $uri, $action) { /** @var \Illuminate\Routing\Router $instance */ return $instance->addRoute($methods, $uri, $action); } - - /** + /** + * Create a new Route object. + * + * @param array|string $methods + * @param string $uri + * @param mixed $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function newRoute($methods, $uri, $action) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->newRoute($methods, $uri, $action); + } + /** * Return the response returned by the given route. * * @param string $name - * @return \Symfony\Component\HttpFoundation\Response - * @static + * @return \Symfony\Component\HttpFoundation\Response + * @static */ public static function respondWithRoute($name) { /** @var \Illuminate\Routing\Router $instance */ return $instance->respondWithRoute($name); } - - /** + /** * Dispatch the request to the application. * * @param \Illuminate\Http\Request $request - * @return \Symfony\Component\HttpFoundation\Response - * @static + * @return \Symfony\Component\HttpFoundation\Response + * @static */ public static function dispatch($request) { /** @var \Illuminate\Routing\Router $instance */ return $instance->dispatch($request); } - - /** + /** * Dispatch the request to a route and return the response. * * @param \Illuminate\Http\Request $request - * @return \Symfony\Component\HttpFoundation\Response - * @static + * @return \Symfony\Component\HttpFoundation\Response + * @static */ public static function dispatchToRoute($request) { /** @var \Illuminate\Routing\Router $instance */ return $instance->dispatchToRoute($request); } - - /** + /** * Gather the middleware for the given route with resolved class names. * * @param \Illuminate\Routing\Route $route - * @return array - * @static + * @return array + * @static */ public static function gatherRouteMiddleware($route) { /** @var \Illuminate\Routing\Router $instance */ return $instance->gatherRouteMiddleware($route); } - - /** + /** * Create a response instance from the given value. * * @param \Symfony\Component\HttpFoundation\Request $request * @param mixed $response - * @return \Symfony\Component\HttpFoundation\Response - * @static + * @return \Symfony\Component\HttpFoundation\Response + * @static */ public static function prepareResponse($request, $response) { /** @var \Illuminate\Routing\Router $instance */ return $instance->prepareResponse($request, $response); } - - /** + /** * Static version of prepareResponse. * * @param \Symfony\Component\HttpFoundation\Request $request * @param mixed $response - * @return \Symfony\Component\HttpFoundation\Response - * @static + * @return \Symfony\Component\HttpFoundation\Response + * @static */ public static function toResponse($request, $response) { return \Illuminate\Routing\Router::toResponse($request, $response); } - - /** + /** * Substitute the route bindings onto the route. * * @param \Illuminate\Routing\Route $route - * @return \Illuminate\Routing\Route + * @return \Illuminate\Routing\Route * @throws \Illuminate\Database\Eloquent\ModelNotFoundException - * @static + * @static */ public static function substituteBindings($route) { /** @var \Illuminate\Routing\Router $instance */ return $instance->substituteBindings($route); } - - /** + /** * Substitute the implicit Eloquent model bindings for the route. * * @param \Illuminate\Routing\Route $route - * @return void + * @return void * @throws \Illuminate\Database\Eloquent\ModelNotFoundException - * @static + * @static */ public static function substituteImplicitBindings($route) { /** @var \Illuminate\Routing\Router $instance */ $instance->substituteImplicitBindings($route); } - - /** + /** * Register a route matched event listener. * * @param string|callable $callback - * @return void - * @static + * @return void + * @static */ public static function matched($callback) { /** @var \Illuminate\Routing\Router $instance */ $instance->matched($callback); } - - /** + /** * Get all of the defined middleware short-hand names. * - * @return array - * @static + * @return array + * @static */ public static function getMiddleware() { /** @var \Illuminate\Routing\Router $instance */ return $instance->getMiddleware(); } - - /** + /** * Register a short-hand name for a middleware. * * @param string $name * @param string $class - * @return \Illuminate\Routing\Router - * @static + * @return \Illuminate\Routing\Router + * @static */ public static function aliasMiddleware($name, $class) { /** @var \Illuminate\Routing\Router $instance */ return $instance->aliasMiddleware($name, $class); } - - /** + /** * Check if a middlewareGroup with the given name exists. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMiddlewareGroup($name) { /** @var \Illuminate\Routing\Router $instance */ return $instance->hasMiddlewareGroup($name); } - - /** + /** * Get all of the defined middleware groups. * - * @return array - * @static + * @return array + * @static */ public static function getMiddlewareGroups() { /** @var \Illuminate\Routing\Router $instance */ return $instance->getMiddlewareGroups(); } - - /** + /** * Register a group of middleware. * * @param string $name * @param array $middleware - * @return \Illuminate\Routing\Router - * @static + * @return \Illuminate\Routing\Router + * @static */ public static function middlewareGroup($name, $middleware) { /** @var \Illuminate\Routing\Router $instance */ return $instance->middlewareGroup($name, $middleware); } - - /** + /** * Add a middleware to the beginning of a middleware group. - * + * * If the middleware is already in the group, it will not be added again. * * @param string $group * @param string $middleware - * @return \Illuminate\Routing\Router - * @static + * @return \Illuminate\Routing\Router + * @static */ public static function prependMiddlewareToGroup($group, $middleware) { /** @var \Illuminate\Routing\Router $instance */ return $instance->prependMiddlewareToGroup($group, $middleware); } - - /** + /** * Add a middleware to the end of a middleware group. - * + * * If the middleware is already in the group, it will not be added again. * * @param string $group * @param string $middleware - * @return \Illuminate\Routing\Router - * @static + * @return \Illuminate\Routing\Router + * @static */ public static function pushMiddlewareToGroup($group, $middleware) { /** @var \Illuminate\Routing\Router $instance */ return $instance->pushMiddlewareToGroup($group, $middleware); } - - /** + /** + * Flush the router's middleware groups. + * + * @return \Illuminate\Routing\Router + * @static + */ + public static function flushMiddlewareGroups() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->flushMiddlewareGroups(); + } + /** * Add a new route parameter binder. * * @param string $key * @param string|callable $binder - * @return void - * @static + * @return void + * @static */ public static function bind($key, $binder) { /** @var \Illuminate\Routing\Router $instance */ $instance->bind($key, $binder); } - - /** + /** * Register a model binder for a wildcard. * * @param string $key * @param string $class * @param \Closure|null $callback - * @return void - * @static + * @return void + * @static */ public static function model($key, $class, $callback = null) { /** @var \Illuminate\Routing\Router $instance */ $instance->model($key, $class, $callback); } - - /** + /** * Get the binding callback for a given binding. * * @param string $key - * @return \Closure|null - * @static + * @return \Closure|null + * @static */ public static function getBindingCallback($key) { /** @var \Illuminate\Routing\Router $instance */ return $instance->getBindingCallback($key); } - - /** + /** * Get the global "where" patterns. * - * @return array - * @static + * @return array + * @static */ public static function getPatterns() { /** @var \Illuminate\Routing\Router $instance */ return $instance->getPatterns(); } - - /** + /** * Set a global where pattern on all routes. * * @param string $key * @param string $pattern - * @return void - * @static + * @return void + * @static */ public static function pattern($key, $pattern) { /** @var \Illuminate\Routing\Router $instance */ $instance->pattern($key, $pattern); } - - /** + /** * Set a group of global where patterns on all routes. * * @param array $patterns - * @return void - * @static + * @return void + * @static */ public static function patterns($patterns) { /** @var \Illuminate\Routing\Router $instance */ $instance->patterns($patterns); } - - /** + /** * Determine if the router currently has a group stack. * - * @return bool - * @static + * @return bool + * @static */ public static function hasGroupStack() { /** @var \Illuminate\Routing\Router $instance */ return $instance->hasGroupStack(); } - - /** + /** * Get the current group stack for the router. * - * @return array - * @static + * @return array + * @static */ public static function getGroupStack() { /** @var \Illuminate\Routing\Router $instance */ return $instance->getGroupStack(); } - - /** + /** * Get a route parameter for the current route. * * @param string $key * @param string|null $default - * @return mixed - * @static + * @return mixed + * @static */ public static function input($key, $default = null) { /** @var \Illuminate\Routing\Router $instance */ return $instance->input($key, $default); } - - /** + /** * Get the request currently being dispatched. * - * @return \Illuminate\Http\Request - * @static + * @return \Illuminate\Http\Request + * @static */ public static function getCurrentRequest() { /** @var \Illuminate\Routing\Router $instance */ return $instance->getCurrentRequest(); } - - /** + /** * Get the currently dispatched route instance. * - * @return \Illuminate\Routing\Route - * @static + * @return \Illuminate\Routing\Route|null + * @static */ public static function getCurrentRoute() { /** @var \Illuminate\Routing\Router $instance */ return $instance->getCurrentRoute(); } - - /** + /** * Get the currently dispatched route instance. * - * @return \Illuminate\Routing\Route|null - * @static + * @return \Illuminate\Routing\Route|null + * @static */ public static function current() { /** @var \Illuminate\Routing\Router $instance */ return $instance->current(); } - - /** + /** * Check if a route with the given name exists. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function has($name) { /** @var \Illuminate\Routing\Router $instance */ return $instance->has($name); } - - /** + /** * Get the current route name. * - * @return string|null - * @static + * @return string|null + * @static */ public static function currentRouteName() { /** @var \Illuminate\Routing\Router $instance */ return $instance->currentRouteName(); } - - /** + /** * Alias for the "currentRouteNamed" method. * * @param mixed $patterns - * @return bool - * @static + * @return bool + * @static */ public static function is(...$patterns) { /** @var \Illuminate\Routing\Router $instance */ return $instance->is(...$patterns); } - - /** + /** * Determine if the current route matches a pattern. * * @param mixed $patterns - * @return bool - * @static + * @return bool + * @static */ public static function currentRouteNamed(...$patterns) { /** @var \Illuminate\Routing\Router $instance */ return $instance->currentRouteNamed(...$patterns); } - - /** + /** * Get the current route action. * - * @return string|null - * @static + * @return string|null + * @static */ public static function currentRouteAction() { /** @var \Illuminate\Routing\Router $instance */ return $instance->currentRouteAction(); } - - /** + /** * Alias for the "currentRouteUses" method. * * @param array $patterns - * @return bool - * @static + * @return bool + * @static */ public static function uses(...$patterns) { /** @var \Illuminate\Routing\Router $instance */ return $instance->uses(...$patterns); } - - /** + /** * Determine if the current route action matches a given action. * * @param string $action - * @return bool - * @static + * @return bool + * @static */ public static function currentRouteUses($action) { /** @var \Illuminate\Routing\Router $instance */ return $instance->currentRouteUses($action); } - - /** - * Register the typical authentication routes for an application. - * - * @param array $options - * @return void - * @static - */ - public static function auth($options = []) - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->auth($options); - } - - /** - * Register the typical reset password routes for an application. - * - * @return void - * @static - */ - public static function resetPassword() - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->resetPassword(); - } - - /** - * Register the typical confirm password routes for an application. - * - * @return void - * @static - */ - public static function confirmPassword() - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->confirmPassword(); - } - - /** - * Register the typical email verification routes for an application. - * - * @return void - * @static - */ - public static function emailVerification() - { - /** @var \Illuminate\Routing\Router $instance */ - $instance->emailVerification(); - } - - /** + /** * Set the unmapped global resource parameters to singular. * * @param bool $singular - * @return void - * @static + * @return void + * @static */ public static function singularResourceParameters($singular = true) { /** @var \Illuminate\Routing\Router $instance */ $instance->singularResourceParameters($singular); } - - /** + /** * Set the global resource parameter mapping. * * @param array $parameters - * @return void - * @static + * @return void + * @static */ public static function resourceParameters($parameters = []) { /** @var \Illuminate\Routing\Router $instance */ $instance->resourceParameters($parameters); } - - /** + /** * Get or set the verbs used in the resource URIs. * * @param array $verbs - * @return array|null - * @static + * @return array|null + * @static */ public static function resourceVerbs($verbs = []) { /** @var \Illuminate\Routing\Router $instance */ return $instance->resourceVerbs($verbs); } - - /** + /** * Get the underlying route collection. * - * @return \Illuminate\Routing\RouteCollection - * @static + * @return \Illuminate\Routing\RouteCollectionInterface + * @static */ public static function getRoutes() { /** @var \Illuminate\Routing\Router $instance */ return $instance->getRoutes(); } - - /** + /** * Set the route collection instance. * * @param \Illuminate\Routing\RouteCollection $routes - * @return void - * @static + * @return void + * @static */ public static function setRoutes($routes) { /** @var \Illuminate\Routing\Router $instance */ $instance->setRoutes($routes); } - - /** + /** + * Set the compiled route collection instance. + * + * @param array $routes + * @return void + * @static + */ + public static function setCompiledRoutes($routes) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->setCompiledRoutes($routes); + } + /** + * Remove any duplicate middleware from the given array. + * + * @param array $middleware + * @return array + * @static + */ + public static function uniqueMiddleware($middleware) + { + return \Illuminate\Routing\Router::uniqueMiddleware($middleware); + } + /** + * Set the container instance used by the router. + * + * @param \Illuminate\Container\Container $container + * @return \Illuminate\Routing\Router + * @static + */ + public static function setContainer($container) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->setContainer($container); + } + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Illuminate\Routing\Router::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Illuminate\Routing\Router::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Illuminate\Routing\Router::hasMacro($name); } - - /** + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\Routing\Router::flushMacros(); + } + /** * Dynamically handle calls to the class. * * @param string $method * @param array $parameters - * @return mixed + * @return mixed * @throws \BadMethodCallException - * @static + * @static */ public static function macroCall($method, $parameters) { /** @var \Illuminate\Routing\Router $instance */ return $instance->macroCall($method, $parameters); + } + /** + * @see \Laravel\Ui\AuthRouteMethods::auth() + * @param mixed $options + * @static + */ + public static function auth($options = []) + { + return \Illuminate\Routing\Router::auth($options); + } + /** + * @see \Laravel\Ui\AuthRouteMethods::resetPassword() + * @static + */ + public static function resetPassword() + { + return \Illuminate\Routing\Router::resetPassword(); + } + /** + * @see \Laravel\Ui\AuthRouteMethods::confirmPassword() + * @static + */ + public static function confirmPassword() + { + return \Illuminate\Routing\Router::confirmPassword(); + } + /** + * @see \Laravel\Ui\AuthRouteMethods::emailVerification() + * @static + */ + public static function emailVerification() + { + return \Illuminate\Routing\Router::emailVerification(); } } - - /** - * - * + /** * @see \Illuminate\Database\Schema\Builder */ - class Schema { - - /** + class Schema { + /** + * Create a database in the schema. + * + * @param string $name + * @return bool + * @static + */ + public static function createDatabase($name) + { + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->createDatabase($name); + } + /** + * Drop a database from the schema if the database exists. + * + * @param string $name + * @return bool + * @static + */ + public static function dropDatabaseIfExists($name) + { + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->dropDatabaseIfExists($name); + } + /** * Determine if the given table exists. * * @param string $table - * @return bool - * @static + * @return bool + * @static */ public static function hasTable($table) { /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->hasTable($table); } - - /** + /** * Get the column listing for a given table. * * @param string $table - * @return array - * @static + * @return array + * @static */ public static function getColumnListing($table) { /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->getColumnListing($table); } - - /** + /** * Drop all tables from the database. * - * @return void - * @static + * @return void + * @static */ public static function dropAllTables() { /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->dropAllTables(); } - - /** + /** * Drop all views from the database. * - * @return void - * @static + * @return void + * @static */ public static function dropAllViews() { /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->dropAllViews(); } - - /** + /** * Get all of the table names for the database. * - * @return array - * @static + * @return array + * @static */ public static function getAllTables() { /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->getAllTables(); } - - /** + /** * Get all of the view names for the database. * - * @return array - * @static + * @return array + * @static */ public static function getAllViews() { /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->getAllViews(); } - - /** + /** * Set the default string length for migrations. * * @param int $length - * @return void - * @static + * @return void + * @static */ public static function defaultStringLength($length) - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder \Illuminate\Database\Schema\MySqlBuilder::defaultStringLength($length); } - - /** + /** + * Set the default morph key type for migrations. + * + * @param string $type + * @return void + * @throws \InvalidArgumentException + * @static + */ + public static function defaultMorphKeyType($type) + { //Method inherited from \Illuminate\Database\Schema\Builder + \Illuminate\Database\Schema\MySqlBuilder::defaultMorphKeyType($type); + } + /** + * Set the default morph key type for migrations to UUIDs. + * + * @return void + * @static + */ + public static function morphUsingUuids() + { //Method inherited from \Illuminate\Database\Schema\Builder + \Illuminate\Database\Schema\MySqlBuilder::morphUsingUuids(); + } + /** * Determine if the given table has a given column. * * @param string $table * @param string $column - * @return bool - * @static + * @return bool + * @static */ public static function hasColumn($table, $column) - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->hasColumn($table, $column); } - - /** + /** * Determine if the given table has given columns. * * @param string $table * @param array $columns - * @return bool - * @static + * @return bool + * @static */ public static function hasColumns($table, $columns) - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->hasColumns($table, $columns); } - - /** + /** * Get the data type for the given column name. * * @param string $table * @param string $column - * @return string - * @static + * @return string + * @static */ public static function getColumnType($table, $column) - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->getColumnType($table, $column); } - - /** + /** * Modify a table on the schema. * * @param string $table * @param \Closure $callback - * @return void - * @static + * @return void + * @static */ public static function table($table, $callback) - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->table($table, $callback); } - - /** + /** * Create a new table on the schema. * * @param string $table * @param \Closure $callback - * @return void - * @static + * @return void + * @static */ public static function create($table, $callback) - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->create($table, $callback); } - - /** + /** * Drop a table from the schema. * * @param string $table - * @return void - * @static + * @return void + * @static */ public static function drop($table) - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->drop($table); } - - /** + /** * Drop a table from the schema if it exists. * * @param string $table - * @return void - * @static + * @return void + * @static */ public static function dropIfExists($table) - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->dropIfExists($table); } - - /** + /** + * Drop columns from a table schema. + * + * @param string $table + * @param string|array $columns + * @return void + * @static + */ + public static function dropColumns($table, $columns) + { //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->dropColumns($table, $columns); + } + /** * Drop all types from the database. * - * @return void + * @return void * @throws \LogicException - * @static + * @static */ public static function dropAllTypes() - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->dropAllTypes(); } - - /** + /** * Rename a table on the schema. * * @param string $from * @param string $to - * @return void - * @static + * @return void + * @static */ public static function rename($from, $to) - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->rename($from, $to); } - - /** + /** * Enable foreign key constraints. * - * @return bool - * @static + * @return bool + * @static */ public static function enableForeignKeyConstraints() - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->enableForeignKeyConstraints(); } - - /** + /** * Disable foreign key constraints. * - * @return bool - * @static + * @return bool + * @static */ public static function disableForeignKeyConstraints() - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->disableForeignKeyConstraints(); } - - /** + /** * Register a custom Doctrine mapping type. * * @param string $class * @param string $name * @param string $type - * @return void - * @throws \Doctrine\DBAL\DBALException - * @throws \RuntimeException - * @static + * @return void + * @static */ public static function registerCustomDoctrineType($class, $name, $type) - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->registerCustomDoctrineType($class, $name, $type); } - - /** + /** * Get the database connection instance. * - * @return \Illuminate\Database\Connection - * @static + * @return \Illuminate\Database\Connection + * @static */ public static function getConnection() - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->getConnection(); } - - /** + /** * Set the database connection instance. * * @param \Illuminate\Database\Connection $connection - * @return \Illuminate\Database\Schema\MySqlBuilder - * @static + * @return \Illuminate\Database\Schema\MySqlBuilder + * @static */ public static function setConnection($connection) - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ return $instance->setConnection($connection); } - - /** + /** * Set the Schema Blueprint resolver callback. * * @param \Closure $resolver - * @return void - * @static + * @return void + * @static */ public static function blueprintResolver($resolver) - { - //Method inherited from \Illuminate\Database\Schema\Builder + { //Method inherited from \Illuminate\Database\Schema\Builder /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ $instance->blueprintResolver($resolver); } } - - /** - * - * + /** * @see \Illuminate\Session\SessionManager * @see \Illuminate\Session\Store */ - class Session { - - /** + class Session { + /** + * Determine if requests for the same session should wait for each to finish before executing. + * + * @return bool + * @static + */ + public static function shouldBlock() + { + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->shouldBlock(); + } + /** + * Get the name of the cache store / driver that should be used to acquire session locks. + * + * @return string|null + * @static + */ + public static function blockDriver() + { + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->blockDriver(); + } + /** * Get the session configuration. * - * @return array - * @static + * @return array + * @static */ public static function getSessionConfig() { /** @var \Illuminate\Session\SessionManager $instance */ return $instance->getSessionConfig(); } - - /** + /** * Get the default session driver name. * - * @return string - * @static + * @return string + * @static */ public static function getDefaultDriver() { /** @var \Illuminate\Session\SessionManager $instance */ return $instance->getDefaultDriver(); } - - /** + /** * Set the default session driver name. * * @param string $name - * @return void - * @static + * @return void + * @static */ public static function setDefaultDriver($name) { /** @var \Illuminate\Session\SessionManager $instance */ $instance->setDefaultDriver($name); } - - /** + /** * Get a driver instance. * - * @param string $driver - * @return mixed + * @param string|null $driver + * @return mixed * @throws \InvalidArgumentException - * @static + * @static */ public static function driver($driver = null) - { - //Method inherited from \Illuminate\Support\Manager + { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Session\SessionManager $instance */ return $instance->driver($driver); } - - /** + /** * Register a custom driver creator Closure. * * @param string $driver * @param \Closure $callback - * @return \Illuminate\Session\SessionManager - * @static + * @return \Illuminate\Session\SessionManager + * @static */ public static function extend($driver, $callback) - { - //Method inherited from \Illuminate\Support\Manager + { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Session\SessionManager $instance */ return $instance->extend($driver, $callback); } - - /** + /** * Get all of the created "drivers". * - * @return array - * @static + * @return array + * @static */ public static function getDrivers() - { - //Method inherited from \Illuminate\Support\Manager + { //Method inherited from \Illuminate\Support\Manager /** @var \Illuminate\Session\SessionManager $instance */ return $instance->getDrivers(); } - - /** + /** + * Get the container instance used by the manager. + * + * @return \Illuminate\Contracts\Container\Container + * @static + */ + public static function getContainer() + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->getContainer(); + } + /** + * Set the container instance used by the manager. + * + * @param \Illuminate\Contracts\Container\Container $container + * @return \Illuminate\Session\SessionManager + * @static + */ + public static function setContainer($container) + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->setContainer($container); + } + /** + * Forget all of the resolved driver instances. + * + * @return \Illuminate\Session\SessionManager + * @static + */ + public static function forgetDrivers() + { //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->forgetDrivers(); + } + /** * Start the session, reading the data from a handler. * - * @return bool - * @static + * @return bool + * @static */ public static function start() { /** @var \Illuminate\Session\Store $instance */ return $instance->start(); } - - /** + /** * Save the session data to storage. * - * @return void - * @static + * @return void + * @static */ public static function save() { /** @var \Illuminate\Session\Store $instance */ $instance->save(); } - - /** + /** * Age the flash data for the session. * - * @return void - * @static + * @return void + * @static */ public static function ageFlashData() { /** @var \Illuminate\Session\Store $instance */ $instance->ageFlashData(); } - - /** + /** * Get all of the session data. * - * @return array - * @static + * @return array + * @static */ public static function all() { /** @var \Illuminate\Session\Store $instance */ return $instance->all(); } - - /** + /** * Get a subset of the session data. * * @param array $keys - * @return array - * @static + * @return array + * @static */ public static function only($keys) { /** @var \Illuminate\Session\Store $instance */ return $instance->only($keys); } - - /** + /** * Checks if a key exists. * * @param string|array $key - * @return bool - * @static + * @return bool + * @static */ 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. * * @param string|array $key - * @return bool - * @static + * @return bool + * @static */ public static function has($key) { /** @var \Illuminate\Session\Store $instance */ return $instance->has($key); } - - /** + /** * Get an item from the session. * * @param string $key * @param mixed $default - * @return mixed - * @static + * @return mixed + * @static */ public static function get($key, $default = null) { /** @var \Illuminate\Session\Store $instance */ return $instance->get($key, $default); } - - /** + /** * Get the value of a given key and then forget it. * * @param string $key - * @param string|null $default - * @return mixed - * @static + * @param mixed $default + * @return mixed + * @static */ public static function pull($key, $default = null) { /** @var \Illuminate\Session\Store $instance */ return $instance->pull($key, $default); } - - /** + /** * Determine if the session contains old input. * * @param string|null $key - * @return bool - * @static + * @return bool + * @static */ public static function hasOldInput($key = null) { /** @var \Illuminate\Session\Store $instance */ return $instance->hasOldInput($key); } - - /** + /** * Get the requested item from the flashed input array. * * @param string|null $key * @param mixed $default - * @return mixed - * @static + * @return mixed + * @static */ public static function getOldInput($key = null, $default = null) { /** @var \Illuminate\Session\Store $instance */ return $instance->getOldInput($key, $default); } - - /** + /** * Replace the given session attributes entirely. * * @param array $attributes - * @return void - * @static + * @return void + * @static */ public static function replace($attributes) { /** @var \Illuminate\Session\Store $instance */ $instance->replace($attributes); } - - /** + /** * Put a key / value pair or array of key / value pairs in the session. * * @param string|array $key * @param mixed $value - * @return void - * @static + * @return void + * @static */ public static function put($key, $value = null) { /** @var \Illuminate\Session\Store $instance */ $instance->put($key, $value); } - - /** + /** * Get an item from the session, or store the default value. * * @param string $key * @param \Closure $callback - * @return mixed - * @static + * @return mixed + * @static */ public static function remember($key, $callback) { /** @var \Illuminate\Session\Store $instance */ return $instance->remember($key, $callback); } - - /** + /** * Push a value onto a session array. * * @param string $key * @param mixed $value - * @return void - * @static + * @return void + * @static */ public static function push($key, $value) { /** @var \Illuminate\Session\Store $instance */ $instance->push($key, $value); } - - /** + /** * Increment the value of an item in the session. * * @param string $key * @param int $amount - * @return mixed - * @static + * @return mixed + * @static */ public static function increment($key, $amount = 1) { /** @var \Illuminate\Session\Store $instance */ return $instance->increment($key, $amount); } - - /** + /** * Decrement the value of an item in the session. * * @param string $key * @param int $amount - * @return int - * @static + * @return int + * @static */ public static function decrement($key, $amount = 1) { /** @var \Illuminate\Session\Store $instance */ return $instance->decrement($key, $amount); } - - /** + /** * Flash a key / value pair to the session. * * @param string $key * @param mixed $value - * @return void - * @static + * @return void + * @static */ public static function flash($key, $value = true) { /** @var \Illuminate\Session\Store $instance */ $instance->flash($key, $value); } - - /** + /** * Flash a key / value pair to the session for immediate use. * * @param string $key * @param mixed $value - * @return void - * @static + * @return void + * @static */ public static function now($key, $value) { /** @var \Illuminate\Session\Store $instance */ $instance->now($key, $value); } - - /** + /** * Reflash all of the session flash data. * - * @return void - * @static + * @return void + * @static */ public static function reflash() { /** @var \Illuminate\Session\Store $instance */ $instance->reflash(); } - - /** + /** * Reflash a subset of the current flash data. * * @param array|mixed $keys - * @return void - * @static + * @return void + * @static */ public static function keep($keys = null) { /** @var \Illuminate\Session\Store $instance */ $instance->keep($keys); } - - /** + /** * Flash an input array to the session. * * @param array $value - * @return void - * @static + * @return void + * @static */ public static function flashInput($value) { /** @var \Illuminate\Session\Store $instance */ $instance->flashInput($value); } - - /** + /** * Remove an item from the session, returning its value. * * @param string $key - * @return mixed - * @static + * @return mixed + * @static */ public static function remove($key) { /** @var \Illuminate\Session\Store $instance */ return $instance->remove($key); } - - /** + /** * Remove one or many items from the session. * * @param string|array $keys - * @return void - * @static + * @return void + * @static */ public static function forget($keys) { /** @var \Illuminate\Session\Store $instance */ $instance->forget($keys); } - - /** + /** * Remove all of the items from the session. * - * @return void - * @static + * @return void + * @static */ public static function flush() { /** @var \Illuminate\Session\Store $instance */ $instance->flush(); } - - /** + /** * Flush the session data and regenerate the ID. * - * @return bool - * @static + * @return bool + * @static */ public static function invalidate() { /** @var \Illuminate\Session\Store $instance */ return $instance->invalidate(); } - - /** + /** * Generate a new session identifier. * * @param bool $destroy - * @return bool - * @static + * @return bool + * @static */ public static function regenerate($destroy = false) { /** @var \Illuminate\Session\Store $instance */ return $instance->regenerate($destroy); } - - /** + /** * Generate a new session ID for the session. * * @param bool $destroy - * @return bool - * @static + * @return bool + * @static */ public static function migrate($destroy = false) { /** @var \Illuminate\Session\Store $instance */ return $instance->migrate($destroy); } - - /** + /** * Determine if the session has been started. * - * @return bool - * @static + * @return bool + * @static */ public static function isStarted() { /** @var \Illuminate\Session\Store $instance */ return $instance->isStarted(); } - - /** + /** * Get the name of the session. * - * @return string - * @static + * @return string + * @static */ public static function getName() { /** @var \Illuminate\Session\Store $instance */ return $instance->getName(); } - - /** + /** * Set the name of the session. * * @param string $name - * @return void - * @static + * @return void + * @static */ public static function setName($name) { /** @var \Illuminate\Session\Store $instance */ $instance->setName($name); } - - /** + /** * Get the current session ID. * - * @return string - * @static + * @return string + * @static */ public static function getId() { /** @var \Illuminate\Session\Store $instance */ return $instance->getId(); } - - /** + /** * Set the session ID. * * @param string $id - * @return void - * @static + * @return void + * @static */ public static function setId($id) { /** @var \Illuminate\Session\Store $instance */ $instance->setId($id); } - - /** + /** * Determine if this is a valid session ID. * * @param string $id - * @return bool - * @static + * @return bool + * @static */ public static function isValidId($id) { /** @var \Illuminate\Session\Store $instance */ return $instance->isValidId($id); } - - /** + /** * Set the existence of the session on the handler if applicable. * * @param bool $value - * @return void - * @static + * @return void + * @static */ public static function setExists($value) { /** @var \Illuminate\Session\Store $instance */ $instance->setExists($value); } - - /** + /** * Get the CSRF token value. * - * @return string - * @static + * @return string + * @static */ public static function token() { /** @var \Illuminate\Session\Store $instance */ return $instance->token(); } - - /** + /** * Regenerate the CSRF token value. * - * @return void - * @static + * @return void + * @static */ public static function regenerateToken() { /** @var \Illuminate\Session\Store $instance */ $instance->regenerateToken(); } - - /** + /** * Get the previous URL from the session. * - * @return string|null - * @static + * @return string|null + * @static */ public static function previousUrl() { /** @var \Illuminate\Session\Store $instance */ return $instance->previousUrl(); } - - /** + /** * Set the "previous" URL in the session. * * @param string $url - * @return void - * @static + * @return void + * @static */ public static function setPreviousUrl($url) { /** @var \Illuminate\Session\Store $instance */ $instance->setPreviousUrl($url); } - - /** + /** + * Specify that the user has confirmed their password. + * + * @return void + * @static + */ + public static function passwordConfirmed() + { + /** @var \Illuminate\Session\Store $instance */ + $instance->passwordConfirmed(); + } + /** * Get the underlying session handler implementation. * - * @return \SessionHandlerInterface - * @static + * @return \SessionHandlerInterface + * @static */ public static function getHandler() { /** @var \Illuminate\Session\Store $instance */ return $instance->getHandler(); } - - /** + /** * Determine if the session handler needs a request. * - * @return bool - * @static + * @return bool + * @static */ public static function handlerNeedsRequest() { /** @var \Illuminate\Session\Store $instance */ return $instance->handlerNeedsRequest(); } - - /** + /** * Set the request on the handler instance. * * @param \Illuminate\Http\Request $request - * @return void - * @static + * @return void + * @static */ public static function setRequestOnHandler($request) { @@ -12769,360 +13188,368 @@ namespace Illuminate\Support\Facades { } } - - /** - * - * + /** * @see \Illuminate\Filesystem\FilesystemManager */ - class Storage { - - /** + class Storage { + /** * Get a filesystem instance. * * @param string|null $name - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static */ public static function drive($name = null) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->drive($name); } - - /** + /** * Get a filesystem instance. * * @param string|null $name - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static */ public static function disk($name = null) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->disk($name); } - - /** + /** * Get a default cloud filesystem instance. * - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static */ 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. * * @param array $config - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static */ public static function createLocalDriver($config) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->createLocalDriver($config); } - - /** + /** * Create an instance of the ftp driver. * * @param array $config - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static */ public static function createFtpDriver($config) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->createFtpDriver($config); } - - /** + /** * Create an instance of the sftp driver. * * @param array $config - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static */ public static function createSftpDriver($config) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->createSftpDriver($config); } - - /** + /** * Create an instance of the Amazon S3 driver. * * @param array $config - * @return \Illuminate\Contracts\Filesystem\Cloud - * @static + * @return \Illuminate\Contracts\Filesystem\Cloud + * @static */ public static function createS3Driver($config) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->createS3Driver($config); } - - /** + /** * Set the given disk instance. * * @param string $name * @param mixed $disk - * @return \Illuminate\Filesystem\FilesystemManager - * @static + * @return \Illuminate\Filesystem\FilesystemManager + * @static */ public static function set($name, $disk) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->set($name, $disk); } - - /** + /** * Get the default driver name. * - * @return string - * @static + * @return string + * @static */ public static function getDefaultDriver() { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->getDefaultDriver(); } - - /** + /** * Get the default cloud driver name. * - * @return string - * @static + * @return string + * @static */ public static function getDefaultCloudDriver() { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->getDefaultCloudDriver(); } - - /** + /** * Unset the given disk instances. * * @param array|string $disk - * @return \Illuminate\Filesystem\FilesystemManager - * @static + * @return \Illuminate\Filesystem\FilesystemManager + * @static */ public static function forgetDisk($disk) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->forgetDisk($disk); } - - /** + /** + * Disconnect the given disk and remove from local cache. + * + * @param string|null $name + * @return void + * @static + */ + public static function purge($name = null) + { + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + $instance->purge($name); + } + /** * Register a custom driver creator Closure. * * @param string $driver * @param \Closure $callback - * @return \Illuminate\Filesystem\FilesystemManager - * @static + * @return \Illuminate\Filesystem\FilesystemManager + * @static */ public static function extend($driver, $callback) { /** @var \Illuminate\Filesystem\FilesystemManager $instance */ return $instance->extend($driver, $callback); } - - /** + /** + * Set the application instance used by the manager. + * + * @param \Illuminate\Contracts\Foundation\Application $app + * @return \Illuminate\Filesystem\FilesystemManager + * @static + */ + public static function setApplication($app) + { + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->setApplication($app); + } + /** * Assert that the given file exists. * * @param string|array $path - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static + * @param string|null $content + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static */ - public static function assertExists($path) + public static function assertExists($path, $content = null) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ - return $instance->assertExists($path); + return $instance->assertExists($path, $content); } - - /** + /** * Assert that the given file does not exist. * * @param string|array $path - * @return \Illuminate\Filesystem\FilesystemAdapter - * @static + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static */ public static function assertMissing($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->assertMissing($path); } - - /** + /** * Determine if a file exists. * * @param string $path - * @return bool - * @static + * @return bool + * @static */ public static function exists($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->exists($path); } - - /** + /** * Determine if a file or directory is missing. * * @param string $path - * @return bool - * @static + * @return bool + * @static */ public static function missing($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->missing($path); } - - /** + /** * Get the full path for the file at the given "short" path. * * @param string $path - * @return string - * @static + * @return string + * @static */ public static function path($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->path($path); } - - /** + /** * Get the contents of a file. * * @param string $path - * @return string + * @return string * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException - * @static + * @static */ public static function get($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->get($path); } - - /** + /** * Create a streamed response for a given file. * * @param string $path * @param string|null $name * @param array|null $headers * @param string|null $disposition - * @return \Symfony\Component\HttpFoundation\StreamedResponse - * @static + * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @static */ public static function response($path, $name = null, $headers = [], $disposition = 'inline') { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->response($path, $name, $headers, $disposition); } - - /** + /** * Create a streamed download response for a given file. * * @param string $path * @param string|null $name * @param array|null $headers - * @return \Symfony\Component\HttpFoundation\StreamedResponse - * @static + * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @static */ public static function download($path, $name = null, $headers = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->download($path, $name, $headers); } - - /** + /** * Write the contents of a file. * * @param string $path - * @param string|resource $contents + * @param \Psr\Http\Message\StreamInterface|\Illuminate\Http\File|\Illuminate\Http\UploadedFile|string|resource $contents * @param mixed $options - * @return bool - * @static + * @return bool + * @static */ public static function put($path, $contents, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->put($path, $contents, $options); } - - /** + /** * Store the uploaded file on the disk. * * @param string $path * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string $file - * @param array $options - * @return string|false - * @static + * @param mixed $options + * @return string|false + * @static */ public static function putFile($path, $file, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->putFile($path, $file, $options); } - - /** + /** * Store the uploaded file on the disk with a given name. * * @param string $path * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string $file * @param string $name - * @param array $options - * @return string|false - * @static + * @param mixed $options + * @return string|false + * @static */ public static function putFileAs($path, $file, $name, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->putFileAs($path, $file, $name, $options); } - - /** + /** * Get the visibility for the given path. * * @param string $path - * @return string - * @static + * @return string + * @static */ public static function getVisibility($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->getVisibility($path); } - - /** + /** * Set the visibility for the given path. * * @param string $path * @param string $visibility - * @return bool - * @static + * @return bool + * @static */ public static function setVisibility($path, $visibility) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->setVisibility($path, $visibility); } - - /** + /** * Prepend to a file. * * @param string $path * @param string $data * @param string $separator - * @return bool - * @static + * @return bool + * @static */ public static function prepend($path, $data, $separator = ' ') @@ -13130,15 +13557,14 @@ namespace Illuminate\Support\Facades { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->prepend($path, $data, $separator); } - - /** + /** * Append to a file. * * @param string $path * @param string $data * @param string $separator - * @return bool - * @static + * @return bool + * @static */ public static function append($path, $data, $separator = ' ') @@ -13146,1801 +13572,1863 @@ namespace Illuminate\Support\Facades { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->append($path, $data, $separator); } - - /** + /** * Delete the file at a given path. * * @param string|array $paths - * @return bool - * @static + * @return bool + * @static */ public static function delete($paths) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->delete($paths); } - - /** + /** * Copy a file to a new location. * * @param string $from * @param string $to - * @return bool - * @static + * @return bool + * @static */ public static function copy($from, $to) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->copy($from, $to); } - - /** + /** * Move a file to a new location. * * @param string $from * @param string $to - * @return bool - * @static + * @return bool + * @static */ public static function move($from, $to) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->move($from, $to); } - - /** + /** * Get the file size of a given file. * * @param string $path - * @return int - * @static + * @return int + * @static */ public static function size($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->size($path); } - - /** + /** * Get the mime-type of a given file. * * @param string $path - * @return string|false - * @static + * @return string|false + * @static */ public static function mimeType($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->mimeType($path); } - - /** + /** * Get the file's last modification time. * * @param string $path - * @return int - * @static + * @return int + * @static */ public static function lastModified($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->lastModified($path); } - - /** + /** * Get the URL for the file at the given path. * * @param string $path - * @return string + * @return string * @throws \RuntimeException - * @static + * @static */ public static function url($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->url($path); } - - /** + /** * Get a resource to read the file. * * @param string $path * @return resource|null The path resource or null on failure. * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException - * @static + * @static */ public static function readStream($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->readStream($path); } - - /** + /** * Write a new file using a stream. * * @param string $path * @param resource $resource * @param array $options - * @return bool + * @return bool * @throws \InvalidArgumentException If $resource is not a file handle. * @throws \Illuminate\Contracts\Filesystem\FileExistsException - * @static + * @static */ public static function writeStream($path, $resource, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->writeStream($path, $resource, $options); } - - /** + /** * Get a temporary URL for the file at the given path. * * @param string $path * @param \DateTimeInterface $expiration * @param array $options - * @return string + * @return string * @throws \RuntimeException - * @static + * @static */ public static function temporaryUrl($path, $expiration, $options = []) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->temporaryUrl($path, $expiration, $options); } - - /** + /** * Get a temporary URL for the file at the given path. * * @param \League\Flysystem\AwsS3v3\AwsS3Adapter $adapter * @param string $path * @param \DateTimeInterface $expiration * @param array $options - * @return string - * @static + * @return string + * @static */ public static function getAwsTemporaryUrl($adapter, $path, $expiration, $options) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->getAwsTemporaryUrl($adapter, $path, $expiration, $options); } - - /** + /** * Get an array of all files in a directory. * * @param string|null $directory * @param bool $recursive - * @return array - * @static + * @return array + * @static */ public static function files($directory = null, $recursive = false) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->files($directory, $recursive); } - - /** + /** * Get all of the files from the given directory (recursive). * * @param string|null $directory - * @return array - * @static + * @return array + * @static */ public static function allFiles($directory = null) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->allFiles($directory); } - - /** + /** * Get all of the directories within a given directory. * * @param string|null $directory * @param bool $recursive - * @return array - * @static + * @return array + * @static */ public static function directories($directory = null, $recursive = false) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->directories($directory, $recursive); } - - /** + /** * Get all (recursive) of the directories within a given directory. * * @param string|null $directory - * @return array - * @static + * @return array + * @static */ public static function allDirectories($directory = null) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->allDirectories($directory); } - - /** + /** * Create a directory. * * @param string $path - * @return bool - * @static + * @return bool + * @static */ public static function makeDirectory($path) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->makeDirectory($path); } - - /** + /** * Recursively delete a directory. * * @param string $directory - * @return bool - * @static + * @return bool + * @static */ public static function deleteDirectory($directory) { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->deleteDirectory($directory); } - - /** + /** * Flush the Flysystem cache. * - * @return void - * @static + * @return void + * @static */ public static function flushCache() { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ $instance->flushCache(); } - - /** + /** * Get the Flysystem driver. * - * @return \League\Flysystem\FilesystemInterface - * @static + * @return \League\Flysystem\FilesystemInterface + * @static */ public static function getDriver() { /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ return $instance->getDriver(); + } + /** + * Define a custom temporary URL builder callback. + * + * @param \Closure $callback + * @return void + * @static + */ + public static function buildTemporaryUrlsUsing($callback) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + $instance->buildTemporaryUrlsUsing($callback); + } + /** + * 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); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\Filesystem\FilesystemAdapter::flushMacros(); + } + /** + * 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); } } - - /** - * - * + /** * @see \Illuminate\Routing\UrlGenerator */ - class URL { - - /** + class URL { + /** * Get the full URL for the current request. * - * @return string - * @static + * @return string + * @static */ public static function full() { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->full(); } - - /** + /** * Get the current URL for the request. * - * @return string - * @static + * @return string + * @static */ public static function current() { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->current(); } - - /** + /** * Get the URL for the previous request. * * @param mixed $fallback - * @return string - * @static + * @return string + * @static */ public static function previous($fallback = false) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->previous($fallback); } - - /** + /** * Generate an absolute URL to the given path. * * @param string $path * @param mixed $extra * @param bool|null $secure - * @return string - * @static + * @return string + * @static */ public static function to($path, $extra = [], $secure = null) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->to($path, $extra, $secure); } - - /** + /** * Generate a secure, absolute URL to the given path. * * @param string $path * @param array $parameters - * @return string - * @static + * @return string + * @static */ public static function secure($path, $parameters = []) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->secure($path, $parameters); } - - /** + /** * Generate the URL to an application asset. * * @param string $path * @param bool|null $secure - * @return string - * @static + * @return string + * @static */ public static function asset($path, $secure = null) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->asset($path, $secure); } - - /** + /** * Generate the URL to a secure asset. * * @param string $path - * @return string - * @static + * @return string + * @static */ public static function secureAsset($path) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->secureAsset($path); } - - /** + /** * Generate the URL to an asset from a custom root domain such as CDN, etc. * * @param string $root * @param string $path * @param bool|null $secure - * @return string - * @static + * @return string + * @static */ public static function assetFrom($root, $path, $secure = null) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->assetFrom($root, $path, $secure); } - - /** + /** * Get the default scheme for a raw URL. * * @param bool|null $secure - * @return string - * @static + * @return string + * @static */ public static function formatScheme($secure = null) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->formatScheme($secure); } - - /** + /** * Create a signed route URL for a named route. * * @param string $name - * @param array $parameters + * @param mixed $parameters * @param \DateTimeInterface|\DateInterval|int|null $expiration * @param bool $absolute - * @return string + * @return string * @throws \InvalidArgumentException - * @static + * @static */ public static function signedRoute($name, $parameters = [], $expiration = null, $absolute = true) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->signedRoute($name, $parameters, $expiration, $absolute); } - - /** + /** * Create a temporary signed route URL for a named route. * * @param string $name * @param \DateTimeInterface|\DateInterval|int $expiration * @param array $parameters * @param bool $absolute - * @return string - * @static + * @return string + * @static */ public static function temporarySignedRoute($name, $expiration, $parameters = [], $absolute = true) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->temporarySignedRoute($name, $expiration, $parameters, $absolute); } - - /** + /** * Determine if the given request has a valid signature. * * @param \Illuminate\Http\Request $request * @param bool $absolute - * @return bool - * @static + * @return bool + * @static */ public static function hasValidSignature($request, $absolute = true) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->hasValidSignature($request, $absolute); } - - /** + /** + * Determine if the given request has a valid signature for a relative URL. + * + * @param \Illuminate\Http\Request $request + * @return bool + * @static + */ + public static function hasValidRelativeSignature($request) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->hasValidRelativeSignature($request); + } + /** * Determine if the signature from the given request matches the URL. * * @param \Illuminate\Http\Request $request * @param bool $absolute - * @return bool - * @static + * @return bool + * @static */ public static function hasCorrectSignature($request, $absolute = true) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->hasCorrectSignature($request, $absolute); } - - /** + /** * Determine if the expires timestamp from the given request is not from the past. * * @param \Illuminate\Http\Request $request - * @return bool - * @static + * @return bool + * @static */ public static function signatureHasNotExpired($request) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->signatureHasNotExpired($request); } - - /** + /** * Get the URL to a named route. * * @param string $name * @param mixed $parameters * @param bool $absolute - * @return string + * @return string * @throws \Symfony\Component\Routing\Exception\RouteNotFoundException - * @static + * @static */ public static function route($name, $parameters = [], $absolute = true) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->route($name, $parameters, $absolute); } - - /** + /** * Get the URL for a given route instance. * * @param \Illuminate\Routing\Route $route * @param mixed $parameters * @param bool $absolute - * @return string + * @return string * @throws \Illuminate\Routing\Exceptions\UrlGenerationException - * @static + * @static */ public static function toRoute($route, $parameters, $absolute) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->toRoute($route, $parameters, $absolute); } - - /** + /** * Get the URL to a controller action. * * @param string|array $action * @param mixed $parameters * @param bool $absolute - * @return string + * @return string * @throws \InvalidArgumentException - * @static + * @static */ public static function action($action, $parameters = [], $absolute = true) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->action($action, $parameters, $absolute); } - - /** + /** * Format the array of URL parameters. * * @param mixed|array $parameters - * @return array - * @static + * @return array + * @static */ public static function formatParameters($parameters) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->formatParameters($parameters); } - - /** + /** * Get the base URL for the request. * * @param string $scheme * @param string|null $root - * @return string - * @static + * @return string + * @static */ public static function formatRoot($scheme, $root = null) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->formatRoot($scheme, $root); } - - /** + /** * Format the given URL segments into a single URL. * * @param string $root * @param string $path * @param \Illuminate\Routing\Route|null $route - * @return string - * @static + * @return string + * @static */ public static function format($root, $path, $route = null) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->format($root, $path, $route); } - - /** + /** * Determine if the given path is a valid URL. * * @param string $path - * @return bool - * @static + * @return bool + * @static */ public static function isValidUrl($path) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->isValidUrl($path); } - - /** + /** * Set the default named parameters used by the URL generator. * * @param array $defaults - * @return void - * @static + * @return void + * @static */ public static function defaults($defaults) { /** @var \Illuminate\Routing\UrlGenerator $instance */ $instance->defaults($defaults); } - - /** + /** * Get the default named parameters used by the URL generator. * - * @return array - * @static + * @return array + * @static */ public static function getDefaultParameters() { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->getDefaultParameters(); } - - /** + /** * Force the scheme for URLs. * - * @param string $scheme - * @return void - * @static + * @param string|null $scheme + * @return void + * @static */ public static function forceScheme($scheme) { /** @var \Illuminate\Routing\UrlGenerator $instance */ $instance->forceScheme($scheme); } - - /** + /** * Set the forced root URL. * - * @param string $root - * @return void - * @static + * @param string|null $root + * @return void + * @static */ public static function forceRootUrl($root) { /** @var \Illuminate\Routing\UrlGenerator $instance */ $instance->forceRootUrl($root); } - - /** + /** * Set a callback to be used to format the host of generated URLs. * * @param \Closure $callback - * @return \Illuminate\Routing\UrlGenerator - * @static + * @return \Illuminate\Routing\UrlGenerator + * @static */ public static function formatHostUsing($callback) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->formatHostUsing($callback); } - - /** + /** * Set a callback to be used to format the path of generated URLs. * * @param \Closure $callback - * @return \Illuminate\Routing\UrlGenerator - * @static + * @return \Illuminate\Routing\UrlGenerator + * @static */ public static function formatPathUsing($callback) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->formatPathUsing($callback); } - - /** + /** * Get the path formatter being used by the URL generator. * - * @return \Closure - * @static + * @return \Closure + * @static */ public static function pathFormatter() { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->pathFormatter(); } - - /** + /** * Get the request instance. * - * @return \Illuminate\Http\Request - * @static + * @return \Illuminate\Http\Request + * @static */ public static function getRequest() { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->getRequest(); } - - /** + /** * Set the current request instance. * * @param \Illuminate\Http\Request $request - * @return void - * @static + * @return void + * @static */ public static function setRequest($request) { /** @var \Illuminate\Routing\UrlGenerator $instance */ $instance->setRequest($request); } - - /** + /** * Set the route collection. * - * @param \Illuminate\Routing\RouteCollection $routes - * @return \Illuminate\Routing\UrlGenerator - * @static + * @param \Illuminate\Routing\RouteCollectionInterface $routes + * @return \Illuminate\Routing\UrlGenerator + * @static */ public static function setRoutes($routes) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->setRoutes($routes); } - - /** + /** * Set the session resolver for the generator. * * @param callable $sessionResolver - * @return \Illuminate\Routing\UrlGenerator - * @static + * @return \Illuminate\Routing\UrlGenerator + * @static */ public static function setSessionResolver($sessionResolver) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->setSessionResolver($sessionResolver); } - - /** + /** * Set the encryption key resolver. * * @param callable $keyResolver - * @return \Illuminate\Routing\UrlGenerator - * @static + * @return \Illuminate\Routing\UrlGenerator + * @static */ public static function setKeyResolver($keyResolver) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->setKeyResolver($keyResolver); } - - /** + /** * Set the root controller namespace. * * @param string $rootNamespace - * @return \Illuminate\Routing\UrlGenerator - * @static + * @return \Illuminate\Routing\UrlGenerator + * @static */ public static function setRootControllerNamespace($rootNamespace) { /** @var \Illuminate\Routing\UrlGenerator $instance */ return $instance->setRootControllerNamespace($rootNamespace); } - - /** + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Illuminate\Routing\UrlGenerator::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Illuminate\Routing\UrlGenerator::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Illuminate\Routing\UrlGenerator::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\Routing\UrlGenerator::flushMacros(); } } - - /** - * - * + /** * @see \Illuminate\Validation\Factory */ - class Validator { - - /** + class Validator { + /** * Create a new Validator instance. * * @param array $data * @param array $rules * @param array $messages * @param array $customAttributes - * @return \Illuminate\Validation\Validator - * @static + * @return \Illuminate\Validation\Validator + * @static */ public static function make($data, $rules, $messages = [], $customAttributes = []) { /** @var \Illuminate\Validation\Factory $instance */ return $instance->make($data, $rules, $messages, $customAttributes); } - - /** + /** * Validate the given data against the provided rules. * * @param array $data * @param array $rules * @param array $messages * @param array $customAttributes - * @return array + * @return array * @throws \Illuminate\Validation\ValidationException - * @static + * @static */ public static function validate($data, $rules, $messages = [], $customAttributes = []) { /** @var \Illuminate\Validation\Factory $instance */ return $instance->validate($data, $rules, $messages, $customAttributes); } - - /** + /** * Register a custom validator extension. * * @param string $rule * @param \Closure|string $extension * @param string|null $message - * @return void - * @static + * @return void + * @static */ public static function extend($rule, $extension, $message = null) { /** @var \Illuminate\Validation\Factory $instance */ $instance->extend($rule, $extension, $message); } - - /** + /** * Register a custom implicit validator extension. * * @param string $rule * @param \Closure|string $extension * @param string|null $message - * @return void - * @static + * @return void + * @static */ public static function extendImplicit($rule, $extension, $message = null) { /** @var \Illuminate\Validation\Factory $instance */ $instance->extendImplicit($rule, $extension, $message); } - - /** + /** * Register a custom dependent validator extension. * * @param string $rule * @param \Closure|string $extension * @param string|null $message - * @return void - * @static + * @return void + * @static */ public static function extendDependent($rule, $extension, $message = null) { /** @var \Illuminate\Validation\Factory $instance */ $instance->extendDependent($rule, $extension, $message); } - - /** + /** * Register a custom validator message replacer. * * @param string $rule * @param \Closure|string $replacer - * @return void - * @static + * @return void + * @static */ 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. * * @param \Closure $resolver - * @return void - * @static + * @return void + * @static */ public static function resolver($resolver) { /** @var \Illuminate\Validation\Factory $instance */ $instance->resolver($resolver); } - - /** + /** * Get the Translator implementation. * - * @return \Illuminate\Contracts\Translation\Translator - * @static + * @return \Illuminate\Contracts\Translation\Translator + * @static */ public static function getTranslator() { /** @var \Illuminate\Validation\Factory $instance */ return $instance->getTranslator(); } - - /** + /** * Get the Presence Verifier implementation. * - * @return \Illuminate\Validation\PresenceVerifierInterface - * @static + * @return \Illuminate\Validation\PresenceVerifierInterface + * @static */ public static function getPresenceVerifier() { /** @var \Illuminate\Validation\Factory $instance */ return $instance->getPresenceVerifier(); } - - /** + /** * Set the Presence Verifier implementation. * * @param \Illuminate\Validation\PresenceVerifierInterface $presenceVerifier - * @return void - * @static + * @return void + * @static */ public static function setPresenceVerifier($presenceVerifier) { /** @var \Illuminate\Validation\Factory $instance */ $instance->setPresenceVerifier($presenceVerifier); + } + /** + * Get the container instance used by the validation factory. + * + * @return \Illuminate\Contracts\Container\Container + * @static + */ + public static function getContainer() + { + /** @var \Illuminate\Validation\Factory $instance */ + return $instance->getContainer(); + } + /** + * Set the container instance used by the validation factory. + * + * @param \Illuminate\Contracts\Container\Container $container + * @return \Illuminate\Validation\Factory + * @static + */ + public static function setContainer($container) + { + /** @var \Illuminate\Validation\Factory $instance */ + return $instance->setContainer($container); } } - - /** - * - * + /** * @see \Illuminate\View\Factory */ - class View { - - /** + class View { + /** * Get the evaluated view contents for the given view. * * @param string $path * @param \Illuminate\Contracts\Support\Arrayable|array $data * @param array $mergeData - * @return \Illuminate\Contracts\View\View - * @static + * @return \Illuminate\Contracts\View\View + * @static */ public static function file($path, $data = [], $mergeData = []) { /** @var \Illuminate\View\Factory $instance */ return $instance->file($path, $data, $mergeData); } - - /** + /** * Get the evaluated view contents for the given view. * * @param string $view * @param \Illuminate\Contracts\Support\Arrayable|array $data * @param array $mergeData - * @return \Illuminate\Contracts\View\View - * @static + * @return \Illuminate\Contracts\View\View + * @static */ public static function make($view, $data = [], $mergeData = []) { /** @var \Illuminate\View\Factory $instance */ return $instance->make($view, $data, $mergeData); } - - /** + /** * Get the first view that actually exists from the given list. * * @param array $views * @param \Illuminate\Contracts\Support\Arrayable|array $data * @param array $mergeData - * @return \Illuminate\Contracts\View\View + * @return \Illuminate\Contracts\View\View * @throws \InvalidArgumentException - * @static + * @static */ public static function first($views, $data = [], $mergeData = []) { /** @var \Illuminate\View\Factory $instance */ return $instance->first($views, $data, $mergeData); } - - /** + /** * Get the rendered content of the view based on a given condition. * * @param bool $condition * @param string $view * @param \Illuminate\Contracts\Support\Arrayable|array $data * @param array $mergeData - * @return string - * @static + * @return string + * @static */ public static function renderWhen($condition, $view, $data = [], $mergeData = []) { /** @var \Illuminate\View\Factory $instance */ return $instance->renderWhen($condition, $view, $data, $mergeData); } - - /** + /** + * Get the rendered content of the view based on the negation of a given condition. + * + * @param bool $condition + * @param string $view + * @param \Illuminate\Contracts\Support\Arrayable|array $data + * @param array $mergeData + * @return string + * @static + */ + public static function renderUnless($condition, $view, $data = [], $mergeData = []) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->renderUnless($condition, $view, $data, $mergeData); + } + /** * Get the rendered contents of a partial from a loop. * * @param string $view * @param array $data * @param string $iterator * @param string $empty - * @return string - * @static + * @return string + * @static */ public static function renderEach($view, $data, $iterator, $empty = 'raw|') { /** @var \Illuminate\View\Factory $instance */ return $instance->renderEach($view, $data, $iterator, $empty); } - - /** + /** * Determine if a given view exists. * * @param string $view - * @return bool - * @static + * @return bool + * @static */ public static function exists($view) { /** @var \Illuminate\View\Factory $instance */ return $instance->exists($view); } - - /** + /** * Get the appropriate view engine for the given path. * * @param string $path - * @return \Illuminate\Contracts\View\Engine + * @return \Illuminate\Contracts\View\Engine * @throws \InvalidArgumentException - * @static + * @static */ public static function getEngineFromPath($path) { /** @var \Illuminate\View\Factory $instance */ return $instance->getEngineFromPath($path); } - - /** + /** * Add a piece of shared data to the environment. * * @param array|string $key * @param mixed|null $value - * @return mixed - * @static + * @return mixed + * @static */ public static function share($key, $value = null) { /** @var \Illuminate\View\Factory $instance */ return $instance->share($key, $value); } - - /** + /** * Increment the rendering counter. * - * @return void - * @static + * @return void + * @static */ public static function incrementRender() { /** @var \Illuminate\View\Factory $instance */ $instance->incrementRender(); } - - /** + /** * Decrement the rendering counter. * - * @return void - * @static + * @return void + * @static */ public static function decrementRender() { /** @var \Illuminate\View\Factory $instance */ $instance->decrementRender(); } - - /** + /** * Check if there are no active render operations. * - * @return bool - * @static + * @return bool + * @static */ public static function doneRendering() { /** @var \Illuminate\View\Factory $instance */ return $instance->doneRendering(); } - - /** + /** + * Determine if the given once token has been rendered. + * + * @param string $id + * @return bool + * @static + */ + public static function hasRenderedOnce($id) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->hasRenderedOnce($id); + } + /** + * Mark the given once token as having been rendered. + * + * @param string $id + * @return void + * @static + */ + public static function markAsRenderedOnce($id) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->markAsRenderedOnce($id); + } + /** * Add a location to the array of view locations. * * @param string $location - * @return void - * @static + * @return void + * @static */ public static function addLocation($location) { /** @var \Illuminate\View\Factory $instance */ $instance->addLocation($location); } - - /** + /** * Add a new namespace to the loader. * * @param string $namespace * @param string|array $hints - * @return \Illuminate\View\Factory - * @static + * @return \Illuminate\View\Factory + * @static */ public static function addNamespace($namespace, $hints) { /** @var \Illuminate\View\Factory $instance */ return $instance->addNamespace($namespace, $hints); } - - /** + /** * Prepend a new namespace to the loader. * * @param string $namespace * @param string|array $hints - * @return \Illuminate\View\Factory - * @static + * @return \Illuminate\View\Factory + * @static */ public static function prependNamespace($namespace, $hints) { /** @var \Illuminate\View\Factory $instance */ return $instance->prependNamespace($namespace, $hints); } - - /** + /** * Replace the namespace hints for the given namespace. * * @param string $namespace * @param string|array $hints - * @return \Illuminate\View\Factory - * @static + * @return \Illuminate\View\Factory + * @static */ public static function replaceNamespace($namespace, $hints) { /** @var \Illuminate\View\Factory $instance */ return $instance->replaceNamespace($namespace, $hints); } - - /** + /** * Register a valid view extension and its engine. * * @param string $extension * @param string $engine * @param \Closure|null $resolver - * @return void - * @static + * @return void + * @static */ public static function addExtension($extension, $engine, $resolver = null) { /** @var \Illuminate\View\Factory $instance */ $instance->addExtension($extension, $engine, $resolver); } - - /** + /** * Flush all of the factory state like sections and stacks. * - * @return void - * @static + * @return void + * @static */ public static function flushState() { /** @var \Illuminate\View\Factory $instance */ $instance->flushState(); } - - /** + /** * Flush all of the section contents if done rendering. * - * @return void - * @static + * @return void + * @static */ public static function flushStateIfDoneRendering() { /** @var \Illuminate\View\Factory $instance */ $instance->flushStateIfDoneRendering(); } - - /** + /** * Get the extension to engine bindings. * - * @return array - * @static + * @return array + * @static */ public static function getExtensions() { /** @var \Illuminate\View\Factory $instance */ return $instance->getExtensions(); } - - /** + /** * Get the engine resolver instance. * - * @return \Illuminate\View\Engines\EngineResolver - * @static + * @return \Illuminate\View\Engines\EngineResolver + * @static */ public static function getEngineResolver() { /** @var \Illuminate\View\Factory $instance */ return $instance->getEngineResolver(); } - - /** + /** * Get the view finder instance. * - * @return \Illuminate\View\ViewFinderInterface - * @static + * @return \Illuminate\View\ViewFinderInterface + * @static */ public static function getFinder() { /** @var \Illuminate\View\Factory $instance */ return $instance->getFinder(); } - - /** + /** * Set the view finder instance. * * @param \Illuminate\View\ViewFinderInterface $finder - * @return void - * @static + * @return void + * @static */ public static function setFinder($finder) { /** @var \Illuminate\View\Factory $instance */ $instance->setFinder($finder); } - - /** + /** * Flush the cache of views located by the finder. * - * @return void - * @static + * @return void + * @static */ public static function flushFinderCache() { /** @var \Illuminate\View\Factory $instance */ $instance->flushFinderCache(); } - - /** + /** * Get the event dispatcher instance. * - * @return \Illuminate\Contracts\Events\Dispatcher - * @static + * @return \Illuminate\Contracts\Events\Dispatcher + * @static */ public static function getDispatcher() { /** @var \Illuminate\View\Factory $instance */ return $instance->getDispatcher(); } - - /** + /** * Set the event dispatcher instance. * * @param \Illuminate\Contracts\Events\Dispatcher $events - * @return void - * @static + * @return void + * @static */ public static function setDispatcher($events) { /** @var \Illuminate\View\Factory $instance */ $instance->setDispatcher($events); } - - /** + /** * Get the IoC container instance. * - * @return \Illuminate\Contracts\Container\Container - * @static + * @return \Illuminate\Contracts\Container\Container + * @static */ public static function getContainer() { /** @var \Illuminate\View\Factory $instance */ return $instance->getContainer(); } - - /** + /** * Set the IoC container instance. * * @param \Illuminate\Contracts\Container\Container $container - * @return void - * @static + * @return void + * @static */ public static function setContainer($container) { /** @var \Illuminate\View\Factory $instance */ $instance->setContainer($container); } - - /** + /** * Get an item from the shared data. * * @param string $key * @param mixed $default - * @return mixed - * @static + * @return mixed + * @static */ public static function shared($key, $default = null) { /** @var \Illuminate\View\Factory $instance */ return $instance->shared($key, $default); } - - /** + /** * Get all of the shared data for the environment. * - * @return array - * @static + * @return array + * @static */ public static function getShared() { /** @var \Illuminate\View\Factory $instance */ return $instance->getShared(); } - - /** + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Illuminate\View\Factory::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Illuminate\View\Factory::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Illuminate\View\Factory::hasMacro($name); } - - /** + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\View\Factory::flushMacros(); + } + /** * Start a component rendering process. * - * @param string $name + * @param \Illuminate\Contracts\View\View|\Illuminate\Contracts\Support\Htmlable|\Closure|string $view * @param array $data - * @return void - * @static + * @return void + * @static */ - public static function startComponent($name, $data = []) + public static function startComponent($view, $data = []) { /** @var \Illuminate\View\Factory $instance */ - $instance->startComponent($name, $data); + $instance->startComponent($view, $data); } - - /** + /** * Get the first view that actually exists from the given list, and start a component. * * @param array $names * @param array $data - * @return void - * @static + * @return void + * @static */ public static function startComponentFirst($names, $data = []) { /** @var \Illuminate\View\Factory $instance */ $instance->startComponentFirst($names, $data); } - - /** + /** * Render the current component. * - * @return string - * @static + * @return string + * @static */ public static function renderComponent() { /** @var \Illuminate\View\Factory $instance */ return $instance->renderComponent(); } - - /** + /** + * Get an item from the component data that exists above the current component. + * + * @param string $key + * @param mixed $default + * @return mixed|null + * @static + */ + public static function getConsumableComponentData($key, $default = null) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->getConsumableComponentData($key, $default); + } + /** * Start the slot rendering process. * * @param string $name * @param string|null $content - * @return void - * @static + * @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. * - * @return void - * @static + * @return void + * @static */ public static function endSlot() { /** @var \Illuminate\View\Factory $instance */ $instance->endSlot(); } - - /** + /** * Register a view creator event. * * @param array|string $views * @param \Closure|string $callback - * @return array - * @static + * @return array + * @static */ public static function creator($views, $callback) { /** @var \Illuminate\View\Factory $instance */ return $instance->creator($views, $callback); } - - /** + /** * Register multiple view composers via an array. * * @param array $composers - * @return array - * @static + * @return array + * @static */ public static function composers($composers) { /** @var \Illuminate\View\Factory $instance */ return $instance->composers($composers); } - - /** + /** * Register a view composer event. * * @param array|string $views * @param \Closure|string $callback - * @return array - * @static + * @return array + * @static */ public static function composer($views, $callback) { /** @var \Illuminate\View\Factory $instance */ return $instance->composer($views, $callback); } - - /** + /** * Call the composer for a given view. * * @param \Illuminate\Contracts\View\View $view - * @return void - * @static + * @return void + * @static */ public static function callComposer($view) { /** @var \Illuminate\View\Factory $instance */ $instance->callComposer($view); } - - /** + /** * Call the creator for a given view. * * @param \Illuminate\Contracts\View\View $view - * @return void - * @static + * @return void + * @static */ public static function callCreator($view) { /** @var \Illuminate\View\Factory $instance */ $instance->callCreator($view); } - - /** + /** * Start injecting content into a section. * * @param string $section * @param string|null $content - * @return void - * @static + * @return void + * @static */ public static function startSection($section, $content = null) { /** @var \Illuminate\View\Factory $instance */ $instance->startSection($section, $content); } - - /** + /** * Inject inline content into a section. * * @param string $section * @param string $content - * @return void - * @static + * @return void + * @static */ public static function inject($section, $content) { /** @var \Illuminate\View\Factory $instance */ $instance->inject($section, $content); } - - /** + /** * Stop injecting content into a section and return its contents. * - * @return string - * @static + * @return string + * @static */ public static function yieldSection() { /** @var \Illuminate\View\Factory $instance */ return $instance->yieldSection(); } - - /** + /** * Stop injecting content into a section. * * @param bool $overwrite - * @return string + * @return string * @throws \InvalidArgumentException - * @static + * @static */ public static function stopSection($overwrite = false) { /** @var \Illuminate\View\Factory $instance */ return $instance->stopSection($overwrite); } - - /** + /** * Stop injecting content into a section and append it. * - * @return string + * @return string * @throws \InvalidArgumentException - * @static + * @static */ public static function appendSection() { /** @var \Illuminate\View\Factory $instance */ return $instance->appendSection(); } - - /** + /** * Get the string contents of a section. * * @param string $section * @param string $default - * @return string - * @static + * @return string + * @static */ public static function yieldContent($section, $default = '') { /** @var \Illuminate\View\Factory $instance */ return $instance->yieldContent($section, $default); } - - /** + /** * Get the parent placeholder for the current request. * * @param string $section - * @return string - * @static + * @return string + * @static */ public static function parentPlaceholder($section = '') { return \Illuminate\View\Factory::parentPlaceholder($section); } - - /** + /** * Check if section exists. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasSection($name) { /** @var \Illuminate\View\Factory $instance */ return $instance->hasSection($name); } - - /** + /** + * Check if section does not exist. + * + * @param string $name + * @return bool + * @static + */ + public static function sectionMissing($name) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->sectionMissing($name); + } + /** * Get the contents of a section. * * @param string $name * @param string|null $default - * @return mixed - * @static + * @return mixed + * @static */ public static function getSection($name, $default = null) { /** @var \Illuminate\View\Factory $instance */ return $instance->getSection($name, $default); } - - /** + /** * Get the entire array of sections. * - * @return array - * @static + * @return array + * @static */ public static function getSections() { /** @var \Illuminate\View\Factory $instance */ return $instance->getSections(); } - - /** + /** * Flush all of the sections. * - * @return void - * @static + * @return void + * @static */ public static function flushSections() { /** @var \Illuminate\View\Factory $instance */ $instance->flushSections(); } - - /** + /** * Add new loop to the stack. * * @param \Countable|array $data - * @return void - * @static + * @return void + * @static */ public static function addLoop($data) { /** @var \Illuminate\View\Factory $instance */ $instance->addLoop($data); } - - /** + /** * Increment the top loop's indices. * - * @return void - * @static + * @return void + * @static */ public static function incrementLoopIndices() { /** @var \Illuminate\View\Factory $instance */ $instance->incrementLoopIndices(); } - - /** + /** * Pop a loop from the top of the loop stack. * - * @return void - * @static + * @return void + * @static */ public static function popLoop() { /** @var \Illuminate\View\Factory $instance */ $instance->popLoop(); } - - /** + /** * Get an instance of the last loop in the stack. * - * @return \stdClass|null - * @static + * @return \stdClass|null + * @static */ public static function getLastLoop() { /** @var \Illuminate\View\Factory $instance */ return $instance->getLastLoop(); } - - /** + /** * Get the entire loop stack. * - * @return array - * @static + * @return array + * @static */ public static function getLoopStack() { /** @var \Illuminate\View\Factory $instance */ return $instance->getLoopStack(); } - - /** + /** * Start injecting content into a push section. * * @param string $section * @param string $content - * @return void - * @static + * @return void + * @static */ public static function startPush($section, $content = '') { /** @var \Illuminate\View\Factory $instance */ $instance->startPush($section, $content); } - - /** + /** * Stop injecting content into a push section. * - * @return string + * @return string * @throws \InvalidArgumentException - * @static + * @static */ public static function stopPush() { /** @var \Illuminate\View\Factory $instance */ return $instance->stopPush(); } - - /** + /** * Start prepending content into a push section. * * @param string $section * @param string $content - * @return void - * @static + * @return void + * @static */ public static function startPrepend($section, $content = '') { /** @var \Illuminate\View\Factory $instance */ $instance->startPrepend($section, $content); } - - /** + /** * Stop prepending content into a push section. * - * @return string + * @return string * @throws \InvalidArgumentException - * @static + * @static */ public static function stopPrepend() { /** @var \Illuminate\View\Factory $instance */ return $instance->stopPrepend(); } - - /** + /** * Get the string contents of a push section. * * @param string $section * @param string $default - * @return string - * @static + * @return string + * @static */ public static function yieldPushContent($section, $default = '') { /** @var \Illuminate\View\Factory $instance */ return $instance->yieldPushContent($section, $default); } - - /** + /** * Flush all of the stacks. * - * @return void - * @static + * @return void + * @static */ public static function flushStacks() { /** @var \Illuminate\View\Factory $instance */ $instance->flushStacks(); } - - /** + /** * Start a translation block. * * @param array $replacements - * @return void - * @static + * @return void + * @static */ public static function startTranslation($replacements = []) { /** @var \Illuminate\View\Factory $instance */ $instance->startTranslation($replacements); } - - /** + /** * Render the current translation. * - * @return string - * @static + * @return string + * @static */ public static function renderTranslation() { @@ -14949,580 +15437,557 @@ namespace Illuminate\Support\Facades { } } - - /** - * - * + /** * @method static mixed filterFiles(mixed $files) * @see \Illuminate\Http\Request */ - class Request { - - /** + class Request { + /** * Create a new Illuminate HTTP request from server variables. * - * @return static - * @static + * @return static + * @static */ public static function capture() { return \Illuminate\Http\Request::capture(); } - - /** + /** * Return the Request instance. * - * @return \Illuminate\Http\Request - * @static + * @return \Illuminate\Http\Request + * @static */ public static function instance() { /** @var \Illuminate\Http\Request $instance */ return $instance->instance(); } - - /** + /** * Get the request method. * - * @return string - * @static + * @return string + * @static */ public static function method() { /** @var \Illuminate\Http\Request $instance */ return $instance->method(); } - - /** + /** * Get the root URL for the application. * - * @return string - * @static + * @return string + * @static */ public static function root() { /** @var \Illuminate\Http\Request $instance */ return $instance->root(); } - - /** + /** * Get the URL (no query string) for the request. * - * @return string - * @static + * @return string + * @static */ public static function url() { /** @var \Illuminate\Http\Request $instance */ return $instance->url(); } - - /** + /** * Get the full URL for the request. * - * @return string - * @static + * @return string + * @static */ public static function fullUrl() { /** @var \Illuminate\Http\Request $instance */ return $instance->fullUrl(); } - - /** + /** * Get the full URL for the request with the added query string parameters. * * @param array $query - * @return string - * @static + * @return string + * @static */ public static function fullUrlWithQuery($query) { /** @var \Illuminate\Http\Request $instance */ return $instance->fullUrlWithQuery($query); } - - /** + /** + * Get the full URL for the request without the given query string parameters. + * + * @param array|string $query + * @return string + * @static + */ + public static function fullUrlWithoutQuery($keys) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->fullUrlWithoutQuery($keys); + } + /** * Get the current path info for the request. * - * @return string - * @static + * @return string + * @static */ public static function path() { /** @var \Illuminate\Http\Request $instance */ return $instance->path(); } - - /** + /** * Get the current decoded path info for the request. * - * @return string - * @static + * @return string + * @static */ public static function decodedPath() { /** @var \Illuminate\Http\Request $instance */ return $instance->decodedPath(); } - - /** + /** * Get a segment from the URI (1 based index). * * @param int $index * @param string|null $default - * @return string|null - * @static + * @return string|null + * @static */ public static function segment($index, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->segment($index, $default); } - - /** + /** * Get all of the segments for the request path. * - * @return array - * @static + * @return array + * @static */ public static function segments() { /** @var \Illuminate\Http\Request $instance */ return $instance->segments(); } - - /** + /** * Determine if the current request URI matches a pattern. * * @param mixed $patterns - * @return bool - * @static + * @return bool + * @static */ public static function is(...$patterns) { /** @var \Illuminate\Http\Request $instance */ return $instance->is(...$patterns); } - - /** + /** * Determine if the route name matches a given pattern. * * @param mixed $patterns - * @return bool - * @static + * @return bool + * @static */ public static function routeIs(...$patterns) { /** @var \Illuminate\Http\Request $instance */ return $instance->routeIs(...$patterns); } - - /** - * Determine if the current request URL and query string matches a pattern. + /** + * Determine if the current request URL and query string match a pattern. * * @param mixed $patterns - * @return bool - * @static + * @return bool + * @static */ public static function fullUrlIs(...$patterns) { /** @var \Illuminate\Http\Request $instance */ return $instance->fullUrlIs(...$patterns); } - - /** + /** * Determine if the request is the result of an AJAX call. * - * @return bool - * @static + * @return bool + * @static */ public static function ajax() { /** @var \Illuminate\Http\Request $instance */ return $instance->ajax(); } - - /** - * Determine if the request is the result of an PJAX call. + /** + * Determine if the request is the result of a PJAX call. * - * @return bool - * @static + * @return bool + * @static */ public static function pjax() { /** @var \Illuminate\Http\Request $instance */ return $instance->pjax(); } - - /** - * Determine if the request is the result of an prefetch call. + /** + * Determine if the request is the result of a prefetch call. * - * @return bool - * @static + * @return bool + * @static */ public static function prefetch() { /** @var \Illuminate\Http\Request $instance */ return $instance->prefetch(); } - - /** + /** * Determine if the request is over HTTPS. * - * @return bool - * @static + * @return bool + * @static */ public static function secure() { /** @var \Illuminate\Http\Request $instance */ return $instance->secure(); } - - /** + /** * Get the client IP address. * - * @return string|null - * @static + * @return string|null + * @static */ public static function ip() { /** @var \Illuminate\Http\Request $instance */ return $instance->ip(); } - - /** + /** * Get the client IP addresses. * - * @return array - * @static + * @return array + * @static */ public static function ips() { /** @var \Illuminate\Http\Request $instance */ return $instance->ips(); } - - /** + /** * Get the client user agent. * - * @return string|null - * @static + * @return string|null + * @static */ public static function userAgent() { /** @var \Illuminate\Http\Request $instance */ return $instance->userAgent(); } - - /** + /** * Merge new input into the current request's input array. * * @param array $input - * @return \Illuminate\Http\Request - * @static + * @return \Illuminate\Http\Request + * @static */ public static function merge($input) { /** @var \Illuminate\Http\Request $instance */ return $instance->merge($input); } - - /** + /** + * Merge new input into the request's input, but only when that key is missing from the request. + * + * @param array $input + * @return \Illuminate\Http\Request + * @static + */ + public static function mergeIfMissing($input) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->mergeIfMissing($input); + } + /** * Replace the input for the current request. * * @param array $input - * @return \Illuminate\Http\Request - * @static + * @return \Illuminate\Http\Request + * @static */ public static function replace($input) { /** @var \Illuminate\Http\Request $instance */ return $instance->replace($input); } - - /** + /** * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel. - * + * * Instead, you may use the "input" method. * * @param string $key * @param mixed $default - * @return mixed - * @static + * @return mixed + * @static */ public static function get($key, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->get($key, $default); } - - /** + /** * Get the JSON payload for the request. * * @param string|null $key * @param mixed $default - * @return \Symfony\Component\HttpFoundation\ParameterBag|mixed - * @static + * @return \Symfony\Component\HttpFoundation\ParameterBag|mixed + * @static */ public static function json($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->json($key, $default); } - - /** + /** * Create a new request instance from the given Laravel request. * * @param \Illuminate\Http\Request $from * @param \Illuminate\Http\Request|null $to - * @return static - * @static + * @return static + * @static */ public static function createFrom($from, $to = null) { return \Illuminate\Http\Request::createFrom($from, $to); } - - /** + /** * Create an Illuminate request from a Symfony instance. * * @param \Symfony\Component\HttpFoundation\Request $request - * @return static - * @static + * @return static + * @static */ public static function createFromBase($request) { return \Illuminate\Http\Request::createFromBase($request); } - - /** + /** * Clones a request and overrides some of its parameters. * - * @param array $query The GET parameters - * @param array $request The POST parameters - * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...) - * @param array $cookies The COOKIE parameters - * @param array $files The FILES parameters - * @param array $server The SERVER parameters - * @return static - * @static + * @return static + * @param array|null $query The GET parameters + * @param array|null $request The POST parameters + * @param array|null $attributes The request attributes (parameters parsed from the PATH_INFO, ...) + * @param array|null $cookies The COOKIE parameters + * @param array|null $files The FILES parameters + * @param array|null $server The SERVER parameters + * @return static + * @static */ public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->duplicate($query, $request, $attributes, $cookies, $files, $server); } - - /** + /** * Get the session associated with the request. * - * @return \Illuminate\Session\Store + * @return \Illuminate\Session\Store * @throws \RuntimeException - * @static + * @static */ public static function session() { /** @var \Illuminate\Http\Request $instance */ return $instance->session(); } - - /** + /** * Get the session associated with the request. * - * @return \Illuminate\Session\Store|null - * @static + * @return \Illuminate\Session\Store|null + * @static */ public static function getSession() { /** @var \Illuminate\Http\Request $instance */ return $instance->getSession(); } - - /** + /** * Set the session instance on the request. * * @param \Illuminate\Contracts\Session\Session $session - * @return void - * @static + * @return void + * @static */ public static function setLaravelSession($session) { /** @var \Illuminate\Http\Request $instance */ $instance->setLaravelSession($session); } - - /** + /** * Get the user making the request. * * @param string|null $guard - * @return mixed - * @static + * @return mixed + * @static */ public static function user($guard = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->user($guard); } - - /** + /** * Get the route handling the request. * * @param string|null $param * @param mixed $default - * @return \Illuminate\Routing\Route|object|string|null - * @static + * @return \Illuminate\Routing\Route|object|string|null + * @static */ public static function route($param = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->route($param, $default); } - - /** + /** * Get a unique fingerprint for the request / route / IP address. * - * @return string + * @return string * @throws \RuntimeException - * @static + * @static */ public static function fingerprint() { /** @var \Illuminate\Http\Request $instance */ return $instance->fingerprint(); } - - /** + /** * Set the JSON payload for the request. * * @param \Symfony\Component\HttpFoundation\ParameterBag $json - * @return \Illuminate\Http\Request - * @static + * @return \Illuminate\Http\Request + * @static */ public static function setJson($json) { /** @var \Illuminate\Http\Request $instance */ return $instance->setJson($json); } - - /** + /** * Get the user resolver callback. * - * @return \Closure - * @static + * @return \Closure + * @static */ public static function getUserResolver() { /** @var \Illuminate\Http\Request $instance */ return $instance->getUserResolver(); } - - /** + /** * Set the user resolver callback. * * @param \Closure $callback - * @return \Illuminate\Http\Request - * @static + * @return \Illuminate\Http\Request + * @static */ public static function setUserResolver($callback) { /** @var \Illuminate\Http\Request $instance */ return $instance->setUserResolver($callback); } - - /** + /** * Get the route resolver callback. * - * @return \Closure - * @static + * @return \Closure + * @static */ public static function getRouteResolver() { /** @var \Illuminate\Http\Request $instance */ return $instance->getRouteResolver(); } - - /** + /** * Set the route resolver callback. * * @param \Closure $callback - * @return \Illuminate\Http\Request - * @static + * @return \Illuminate\Http\Request + * @static */ public static function setRouteResolver($callback) { /** @var \Illuminate\Http\Request $instance */ return $instance->setRouteResolver($callback); } - - /** + /** * Get all of the input and files for the request. * - * @return array - * @static + * @return array + * @static */ public static function toArray() { /** @var \Illuminate\Http\Request $instance */ return $instance->toArray(); } - - /** + /** * Determine if the given offset exists. * * @param string $offset - * @return bool - * @static + * @return bool + * @static */ public static function offsetExists($offset) { /** @var \Illuminate\Http\Request $instance */ return $instance->offsetExists($offset); } - - /** + /** * Get the value at the given offset. * * @param string $offset - * @return mixed - * @static + * @return mixed + * @static */ public static function offsetGet($offset) { /** @var \Illuminate\Http\Request $instance */ return $instance->offsetGet($offset); } - - /** + /** * Set the value at the given offset. * * @param string $offset * @param mixed $value - * @return void - * @static + * @return void + * @static */ public static function offsetSet($offset, $value) { /** @var \Illuminate\Http\Request $instance */ $instance->offsetSet($offset, $value); } - - /** + /** * Remove the value at the given offset. * * @param string $offset - * @return void - * @static + * @return void + * @static */ public static function offsetUnset($offset) { /** @var \Illuminate\Http\Request $instance */ $instance->offsetUnset($offset); } - - /** + /** * Sets the parameters for this request. - * + * * This method also re-initializes all properties. * * @param array $query The GET parameters @@ -15532,30 +15997,26 @@ namespace Illuminate\Support\Facades { * @param array $files The FILES parameters * @param array $server The SERVER parameters * @param string|resource|null $content The raw body data - * @static + * @static */ public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content); } - - /** + /** * Creates a new request with values from PHP's super globals. * - * @return static - * @static + * @return static + * @static */ public static function createFromGlobals() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::createFromGlobals(); } - - /** + /** * Creates a Request based on a given URI and configuration. - * + * * The information contained in the URI always take precedence * over the other information (server and parameters). * @@ -15566,483 +16027,417 @@ namespace Illuminate\Support\Facades { * @param array $files The request files ($_FILES) * @param array $server The server parameters ($_SERVER) * @param string|resource|null $content The raw body data - * @return static - * @static + * @return static + * @throws BadRequestException When the URI is invalid + * @static */ public static function create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::create($uri, $method, $parameters, $cookies, $files, $server, $content); } - - /** + /** * Sets a callable able to create a Request instance. - * + * * This is mainly useful when you need to override the Request class * to keep BC with an existing system. It should not be used for any * other purpose. * - * @param callable|null $callable A PHP callable - * @static + * @static */ public static function setFactory($callable) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::setFactory($callable); } - - /** + /** * Overrides the PHP global variables according to this request instance. - * + * * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE. * $_FILES is never overridden, see rfc1867 * - * @static + * @static */ public static function overrideGlobals() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->overrideGlobals(); } - - /** + /** * Sets a list of trusted proxies. - * + * * You should only list the reverse proxies that you manage directly. * * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR'] * @param int $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies - * @throws \InvalidArgumentException When $trustedHeaderSet is invalid - * @static + * @static */ public static function setTrustedProxies($proxies, $trustedHeaderSet) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::setTrustedProxies($proxies, $trustedHeaderSet); } - - /** + /** * Gets the list of trusted proxies. * - * @return array An array of trusted proxies - * @static + * @return array + * @static */ public static function getTrustedProxies() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::getTrustedProxies(); } - - /** + /** * Gets the set of trusted headers from trusted proxies. * * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies - * @static + * @static */ public static function getTrustedHeaderSet() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::getTrustedHeaderSet(); } - - /** + /** * Sets a list of trusted host patterns. - * + * * You should only list the hosts you manage using regexs. * * @param array $hostPatterns A list of trusted host patterns - * @static + * @static */ public static function setTrustedHosts($hostPatterns) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::setTrustedHosts($hostPatterns); } - - /** + /** * Gets the list of trusted host patterns. * - * @return array An array of trusted host patterns - * @static + * @return array + * @static */ public static function getTrustedHosts() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::getTrustedHosts(); } - - /** + /** * Normalizes a query string. - * + * * It builds a normalized query string, where keys/value pairs are alphabetized, * have consistent escaping and unneeded delimiters are removed. * - * @param string $qs Query string - * @return string A normalized query string for the Request - * @static + * @return string + * @static */ public static function normalizeQueryString($qs) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::normalizeQueryString($qs); } - - /** + /** * Enables support for the _method request parameter to determine the intended HTTP method. - * + * * Be warned that enabling this feature might lead to CSRF issues in your code. * Check that you are using CSRF tokens when required. * If the HTTP method parameter override is enabled, an html-form with method "POST" can be altered * and used to send a "PUT" or "DELETE" request via the _method request parameter. * If these methods are not protected against CSRF, this presents a possible vulnerability. - * + * * The HTTP method can only be overridden when the real HTTP method is POST. * - * @static + * @static */ public static function enableHttpMethodParameterOverride() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::enableHttpMethodParameterOverride(); } - - /** + /** * Checks whether support for the _method request parameter is enabled. * - * @return bool True when the _method request parameter is enabled, false otherwise - * @static + * @return bool + * @static */ public static function getHttpMethodParameterOverride() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::getHttpMethodParameterOverride(); } - - /** + /** * Whether the request contains a Session which was started in one of the * previous requests. * - * @return bool - * @static + * @return bool + * @static */ public static function hasPreviousSession() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->hasPreviousSession(); } - - /** + /** * Whether the request contains a Session object. - * + * * This method does not give any information about the state of the session object, * like whether the session is started or not. It is just a way to check if this Request * is associated with a Session instance. * - * @return bool true when the Request contains a Session object, false otherwise - * @static + * @param bool $skipIfUninitialized When true, ignores factories injected by `setSessionFactory` + * @return bool + * @static */ public static function hasSession() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->hasSession(); } - - /** - * - * - * @static + /** + * @static */ public static function setSession($session) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->setSession($session); } - - /** - * - * - * @internal - * @static + /** + * @internal + * @param callable(): SessionInterface $factory + * @static */ public static function setSessionFactory($factory) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->setSessionFactory($factory); } - - /** + /** * Returns the client IP addresses. - * + * * In the returned array the most trusted IP address is first, and the * least trusted one last. The "real" client IP address is the last one, * but this is also the least trusted one. Trusted proxies are stripped. - * + * * Use this method carefully; you should use getClientIp() instead. * - * @return array The client IP addresses + * @return array * @see getClientIp() - * @static + * @static */ public static function getClientIps() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getClientIps(); } - - /** + /** * Returns the client IP address. - * + * * This method can read the client IP address from the "X-Forwarded-For" header * when trusted proxies were set via "setTrustedProxies()". The "X-Forwarded-For" * header value is a comma+space separated list of IP addresses, the left-most * being the original client, and each successive proxy that passed the request * adding the IP address where it received the request from. - * + * * If your reverse proxy uses a different header name than "X-Forwarded-For", * ("Client-Ip" for instance), configure it via the $trustedHeaderSet * argument of the Request::setTrustedProxies() method instead. * - * @return string|null The client IP address + * @return string|null * @see getClientIps() * @see https://wikipedia.org/wiki/X-Forwarded-For - * @static + * @static */ public static function getClientIp() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getClientIp(); } - - /** + /** * Returns current script name. * - * @return string - * @static + * @return string + * @static */ public static function getScriptName() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getScriptName(); } - - /** + /** * Returns the path being requested relative to the executed script. - * + * * The path info always starts with a /. - * + * * Suppose this request is instantiated from /mysite on localhost: - * + * * * http://localhost/mysite returns an empty string * * http://localhost/mysite/about returns '/about' * * http://localhost/mysite/enco%20ded returns '/enco%20ded' * * http://localhost/mysite/about?var=1 returns '/about' * * @return string The raw path (i.e. not urldecoded) - * @static + * @static */ public static function getPathInfo() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getPathInfo(); } - - /** + /** * Returns the root path from which this request is executed. - * + * * Suppose that an index.php file instantiates this request object: - * + * * * http://localhost/index.php returns an empty string * * http://localhost/index.php/page returns an empty string * * http://localhost/web/index.php returns '/web' * * http://localhost/we%20b/index.php returns '/we%20b' * * @return string The raw path (i.e. not urldecoded) - * @static + * @static */ public static function getBasePath() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getBasePath(); } - - /** + /** * Returns the root URL from which this request is executed. - * + * * The base URL never ends with a /. - * + * * This is similar to getBasePath(), except that it also includes the * script filename (e.g. index.php) if one exists. * * @return string The raw URL (i.e. not urldecoded) - * @static + * @static */ public static function getBaseUrl() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getBaseUrl(); } - - /** + /** * Gets the request's scheme. * - * @return string - * @static + * @return string + * @static */ public static function getScheme() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getScheme(); } - - /** + /** * Returns the port on which the request is made. - * + * * This method can read the client port from the "X-Forwarded-Port" header * when trusted proxies were set via "setTrustedProxies()". - * + * * The "X-Forwarded-Port" header must contain the client port. * - * @return int|string can be a string if fetched from the server bag - * @static + * @return int|string|null Can be a string if fetched from the server bag + * @static */ public static function getPort() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getPort(); } - - /** + /** * Returns the user. * - * @return string|null - * @static + * @return string|null + * @static */ public static function getUser() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getUser(); } - - /** + /** * Returns the password. * - * @return string|null - * @static + * @return string|null + * @static */ public static function getPassword() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getPassword(); } - - /** + /** * Gets the user info. * - * @return string A user name and, optionally, scheme-specific information about how to gain authorization to access the server - * @static + * @return string|null A user name if any and, optionally, scheme-specific information about how to gain authorization to access the server + * @static */ public static function getUserInfo() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getUserInfo(); } - - /** + /** * Returns the HTTP host being requested. - * + * * The port name will be appended to the host if it's non-standard. * - * @return string - * @static + * @return string + * @static */ public static function getHttpHost() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getHttpHost(); } - - /** + /** * Returns the requested URI (path and query string). * * @return string The raw URI (i.e. not URI decoded) - * @static + * @static */ public static function getRequestUri() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getRequestUri(); } - - /** + /** * Gets the scheme and HTTP host. - * + * * If the URL was called with basic authentication, the user * and the password are not added to the generated string. * - * @return string The scheme and HTTP host - * @static + * @return string + * @static */ public static function getSchemeAndHttpHost() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getSchemeAndHttpHost(); } - - /** + /** * Generates a normalized URI (URL) for the Request. * - * @return string A normalized URI (URL) for the Request + * @return string * @see getQueryString() - * @static + * @static */ public static function getUri() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getUri(); } - - /** + /** * Generates a normalized URI for the given path. * * @param string $path A path to use instead of the current one - * @return string The normalized URI for the path - * @static + * @return string + * @static */ public static function getUriForPath($path) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getUriForPath($path); } - - /** + /** * Returns the path as relative reference from the current Request path. - * + * * Only the URIs path component (no schema, host etc.) is relevant and must be given. * Both paths must be absolute and not contain relative parts. * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives. * Furthermore, they can be used to reduce the link size in documents. - * + * * Example target paths, given a base path of "/a/b/c/d": * - "/a/b/c/d" -> "" * - "/a/b/c/" -> "./" @@ -16050,1447 +16445,1448 @@ namespace Illuminate\Support\Facades { * - "/a/b/c/other" -> "other" * - "/a/x/y" -> "../../x/y" * - * @param string $path The target path - * @return string The relative target path - * @static + * @return string + * @static */ public static function getRelativeUriForPath($path) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getRelativeUriForPath($path); } - - /** + /** * Generates the normalized query string for the Request. - * + * * It builds a normalized query string, where keys/value pairs are alphabetized * and have consistent escaping. * - * @return string|null A normalized query string for the Request - * @static + * @return string|null + * @static */ public static function getQueryString() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getQueryString(); } - - /** + /** * Checks whether the request is secure or not. - * + * * This method can read the client protocol from the "X-Forwarded-Proto" header * when trusted proxies were set via "setTrustedProxies()". - * + * * The "X-Forwarded-Proto" header must contain the protocol: "https" or "http". * - * @return bool - * @static + * @return bool + * @static */ public static function isSecure() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isSecure(); } - - /** + /** * Returns the host name. - * + * * This method can read the client host name from the "X-Forwarded-Host" header * when trusted proxies were set via "setTrustedProxies()". - * + * * The "X-Forwarded-Host" header must contain the client host name. * - * @return string + * @return string * @throws SuspiciousOperationException when the host name is invalid or not trusted - * @static + * @static */ public static function getHost() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getHost(); } - - /** + /** * Sets the request method. * - * @param string $method - * @static + * @static */ public static function setMethod($method) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->setMethod($method); } - - /** + /** * Gets the request "intended" method. - * + * * If the X-HTTP-Method-Override header is set, and if the method is a POST, * then it is used to determine the "real" intended HTTP method. - * + * * The _method request parameter can also be used to determine the HTTP method, * but only if enableHttpMethodParameterOverride() has been called. - * + * * The method is always an uppercased string. * - * @return string The request method + * @return string * @see getRealMethod() - * @static + * @static */ public static function getMethod() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getMethod(); } - - /** + /** * Gets the "real" request method. * - * @return string The request method + * @return string * @see getMethod() - * @static + * @static */ public static function getRealMethod() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getRealMethod(); } - - /** + /** * Gets the mime type associated with the format. * - * @param string $format The format - * @return string|null The associated mime type (null if not found) - * @static + * @return string|null + * @static */ public static function getMimeType($format) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getMimeType($format); } - - /** + /** * Gets the mime types associated with the format. * - * @param string $format The format - * @return array The associated mime types - * @static + * @return array + * @static */ public static function getMimeTypes($format) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request return \Illuminate\Http\Request::getMimeTypes($format); } - - /** + /** * Gets the format associated with the mime type. * - * @param string $mimeType The associated mime type - * @return string|null The format (null if not found) - * @static + * @return string|null + * @static */ public static function getFormat($mimeType) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getFormat($mimeType); } - - /** + /** * Associates a format with mime types. * - * @param string $format The format * @param string|array $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type) - * @static + * @static */ public static function setFormat($format, $mimeTypes) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->setFormat($format, $mimeTypes); } - - /** + /** * Gets the request format. - * + * * Here is the process to determine the format: - * + * * * format defined by the user (with setRequestFormat()) * * _format request attribute * * $default * * @see getPreferredFormat - * @param string|null $default The default format - * @return string|null The request format - * @static + * @return string|null + * @static */ public static function getRequestFormat($default = 'html') - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getRequestFormat($default); } - - /** + /** * Sets the request format. * - * @param string $format The request format - * @static + * @static */ public static function setRequestFormat($format) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->setRequestFormat($format); } - - /** + /** * Gets the format associated with the request. * - * @return string|null The format (null if no content type is present) - * @static + * @return string|null + * @static */ public static function getContentType() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getContentType(); } - - /** + /** * Sets the default locale. * - * @param string $locale - * @static + * @static */ public static function setDefaultLocale($locale) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->setDefaultLocale($locale); } - - /** + /** * Get the default locale. * - * @return string - * @static + * @return string + * @static */ public static function getDefaultLocale() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getDefaultLocale(); } - - /** + /** * Sets the locale. * - * @param string $locale - * @static + * @static */ public static function setLocale($locale) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->setLocale($locale); } - - /** + /** * Get the locale. * - * @return string - * @static + * @return string + * @static */ public static function getLocale() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getLocale(); } - - /** + /** * Checks if the request method is of specified type. * * @param string $method Uppercase request method (GET, POST etc) - * @return bool - * @static + * @return bool + * @static */ public static function isMethod($method) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isMethod($method); } - - /** + /** * Checks whether or not the method is safe. * * @see https://tools.ietf.org/html/rfc7231#section-4.2.1 - * @return bool - * @static + * @return bool + * @static */ public static function isMethodSafe() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isMethodSafe(); } - - /** + /** * Checks whether or not the method is idempotent. * - * @return bool - * @static + * @return bool + * @static */ public static function isMethodIdempotent() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isMethodIdempotent(); } - - /** + /** * Checks whether the method is cacheable or not. * * @see https://tools.ietf.org/html/rfc7231#section-4.2.3 - * @return bool True for GET and HEAD, false otherwise - * @static + * @return bool + * @static */ public static function isMethodCacheable() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isMethodCacheable(); } - - /** + /** * Returns the protocol version. - * + * * If the application is behind a proxy, the protocol version used in the * requests between the client and the proxy and between the proxy and the * server might be different. This returns the former (from the "Via" header) * if the proxy is trusted (see "setTrustedProxies()"), otherwise it returns * the latter (from the "SERVER_PROTOCOL" server parameter). * - * @return string - * @static + * @return string|null + * @static */ public static function getProtocolVersion() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getProtocolVersion(); } - - /** + /** * Returns the request body content. * * @param bool $asResource If true, a resource will be returned - * @return string|resource The request body content or a resource to read the body stream - * @throws \LogicException - * @static + * @return string|resource + * @static */ public static function getContent($asResource = false) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getContent($asResource); } - - /** + /** * Gets the Etags. * - * @return array The entity tags - * @static + * @return array + * @static */ public static function getETags() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getETags(); } - - /** - * - * - * @return bool - * @static + /** + * @return bool + * @static */ public static function isNoCache() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isNoCache(); } - - /** + /** * Gets the preferred format for the response by inspecting, in the following order: - * * the request format set using setRequestFormat - * * the values of the Accept HTTP header - * + * * the request format set using setRequestFormat; + * * the values of the Accept HTTP header. + * * Note that if you use this method, you should send the "Vary: Accept" header * in the response to prevent any issues with intermediary HTTP caches. * - * @static + * @static */ public static function getPreferredFormat($default = 'html') - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getPreferredFormat($default); } - - /** + /** * Returns the preferred language. * * @param string[] $locales An array of ordered available locales - * @return string|null The preferred locale - * @static + * @return string|null + * @static */ public static function getPreferredLanguage($locales = null) - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getPreferredLanguage($locales); } - - /** - * Gets a list of languages acceptable by the client browser. + /** + * Gets a list of languages acceptable by the client browser ordered in the user browser preferences. * - * @return array Languages ordered in the user browser preferences - * @static + * @return array + * @static */ public static function getLanguages() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getLanguages(); } - - /** - * Gets a list of charsets acceptable by the client browser. + /** + * Gets a list of charsets acceptable by the client browser in preferable order. * - * @return array List of charsets in preferable order - * @static + * @return array + * @static */ public static function getCharsets() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getCharsets(); } - - /** - * Gets a list of encodings acceptable by the client browser. + /** + * Gets a list of encodings acceptable by the client browser in preferable order. * - * @return array List of encodings in preferable order - * @static + * @return array + * @static */ public static function getEncodings() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getEncodings(); } - - /** - * Gets a list of content types acceptable by the client browser. + /** + * Gets a list of content types acceptable by the client browser in preferable order. * - * @return array List of content types in preferable order - * @static + * @return array + * @static */ public static function getAcceptableContentTypes() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->getAcceptableContentTypes(); } - - /** - * Returns true if the request is a XMLHttpRequest. - * + /** + * Returns true if the request is an XMLHttpRequest. + * * It works if your JavaScript library sets an X-Requested-With HTTP header. * It is known to work with common JavaScript frameworks: * * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript - * @return bool true if the request is an XMLHttpRequest, false otherwise - * @static + * @return bool + * @static */ public static function isXmlHttpRequest() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isXmlHttpRequest(); } - - /** + /** + * Checks whether the client browser prefers safe content or not according to RFC8674. + * + * @see https://tools.ietf.org/html/rfc8674 + * @static + */ + public static function preferSafeContent() + { //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->preferSafeContent(); + } + /** * Indicates whether this request originated from a trusted proxy. - * + * * This can be useful to determine whether or not to trust the * contents of a proxy-specific header. * - * @return bool true if the request came from a trusted proxy, false otherwise - * @static + * @return bool + * @static */ public static function isFromTrustedProxy() - { - //Method inherited from \Symfony\Component\HttpFoundation\Request + { //Method inherited from \Symfony\Component\HttpFoundation\Request /** @var \Illuminate\Http\Request $instance */ return $instance->isFromTrustedProxy(); } - - /** - * Determine if the given content types match. - * - * @param string $actual - * @param string $type - * @return bool - * @static - */ - public static function matchesType($actual, $type) - { - return \Illuminate\Http\Request::matchesType($actual, $type); - } - - /** + /** * Determine if the request is sending JSON. * - * @return bool - * @static + * @return bool + * @static */ public static function isJson() { /** @var \Illuminate\Http\Request $instance */ return $instance->isJson(); } - - /** + /** * Determine if the current request probably expects a JSON response. * - * @return bool - * @static + * @return bool + * @static */ public static function expectsJson() { /** @var \Illuminate\Http\Request $instance */ return $instance->expectsJson(); } - - /** + /** * Determine if the current request is asking for JSON. * - * @return bool - * @static + * @return bool + * @static */ public static function wantsJson() { /** @var \Illuminate\Http\Request $instance */ return $instance->wantsJson(); } - - /** + /** * Determines whether the current requests accepts a given content type. * * @param string|array $contentTypes - * @return bool - * @static + * @return bool + * @static */ public static function accepts($contentTypes) { /** @var \Illuminate\Http\Request $instance */ return $instance->accepts($contentTypes); } - - /** + /** * Return the most suitable content type from the given array based on content negotiation. * * @param string|array $contentTypes - * @return string|null - * @static + * @return string|null + * @static */ public static function prefers($contentTypes) { /** @var \Illuminate\Http\Request $instance */ return $instance->prefers($contentTypes); } - - /** + /** * Determine if the current request accepts any content type. * - * @return bool - * @static + * @return bool + * @static */ public static function acceptsAnyContentType() { /** @var \Illuminate\Http\Request $instance */ return $instance->acceptsAnyContentType(); } - - /** + /** * Determines whether a request accepts JSON. * - * @return bool - * @static + * @return bool + * @static */ public static function acceptsJson() { /** @var \Illuminate\Http\Request $instance */ return $instance->acceptsJson(); } - - /** + /** * Determines whether a request accepts HTML. * - * @return bool - * @static + * @return bool + * @static */ public static function acceptsHtml() { /** @var \Illuminate\Http\Request $instance */ return $instance->acceptsHtml(); } - - /** + /** + * Determine if the given content types match. + * + * @param string $actual + * @param string $type + * @return bool + * @static + */ + public static function matchesType($actual, $type) + { + return \Illuminate\Http\Request::matchesType($actual, $type); + } + /** * Get the data format expected in the response. * * @param string $default - * @return string - * @static + * @return string + * @static */ public static function format($default = 'html') { /** @var \Illuminate\Http\Request $instance */ return $instance->format($default); } - - /** + /** * Retrieve an old input item. * * @param string|null $key * @param string|array|null $default - * @return string|array - * @static + * @return string|array|null + * @static */ public static function old($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->old($key, $default); } - - /** + /** * Flash the input for the current request to the session. * - * @return void - * @static + * @return void + * @static */ public static function flash() { /** @var \Illuminate\Http\Request $instance */ $instance->flash(); } - - /** + /** * Flash only some of the input to the session. * * @param array|mixed $keys - * @return void - * @static + * @return void + * @static */ public static function flashOnly($keys) { /** @var \Illuminate\Http\Request $instance */ $instance->flashOnly($keys); } - - /** + /** * Flash only some of the input to the session. * * @param array|mixed $keys - * @return void - * @static + * @return void + * @static */ public static function flashExcept($keys) { /** @var \Illuminate\Http\Request $instance */ $instance->flashExcept($keys); } - - /** + /** * Flush all of the old input from the session. * - * @return void - * @static + * @return void + * @static */ public static function flush() { /** @var \Illuminate\Http\Request $instance */ $instance->flush(); } - - /** + /** * Retrieve a server variable from the request. * * @param string|null $key * @param string|array|null $default - * @return string|array|null - * @static + * @return string|array|null + * @static */ public static function server($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->server($key, $default); } - - /** + /** * Determine if a header is set on the request. * * @param string $key - * @return bool - * @static + * @return bool + * @static */ public static function hasHeader($key) { /** @var \Illuminate\Http\Request $instance */ return $instance->hasHeader($key); } - - /** + /** * Retrieve a header from the request. * * @param string|null $key * @param string|array|null $default - * @return string|array|null - * @static + * @return string|array|null + * @static */ public static function header($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->header($key, $default); } - - /** + /** * Get the bearer token from the request headers. * - * @return string|null - * @static + * @return string|null + * @static */ public static function bearerToken() { /** @var \Illuminate\Http\Request $instance */ return $instance->bearerToken(); } - - /** + /** * Determine if the request contains a given input item key. * * @param string|array $key - * @return bool - * @static + * @return bool + * @static */ public static function exists($key) { /** @var \Illuminate\Http\Request $instance */ return $instance->exists($key); } - - /** + /** * Determine if the request contains a given input item key. * * @param string|array $key - * @return bool - * @static + * @return bool + * @static */ public static function has($key) { /** @var \Illuminate\Http\Request $instance */ return $instance->has($key); } - - /** + /** * Determine if the request contains any of the given inputs. * * @param string|array $keys - * @return bool - * @static + * @return bool + * @static */ public static function hasAny($keys) { /** @var \Illuminate\Http\Request $instance */ return $instance->hasAny($keys); } - - /** + /** + * Apply the callback if the request contains the given input item key. + * + * @param string $key + * @param callable $callback + * @param callable|null $default + * @return $this|mixed + * @static + */ + public static function whenHas($key, $callback, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->whenHas($key, $callback, $default); + } + /** * Determine if the request contains a non-empty value for an input item. * * @param string|array $key - * @return bool - * @static + * @return bool + * @static */ public static function filled($key) { /** @var \Illuminate\Http\Request $instance */ return $instance->filled($key); } - - /** + /** + * Determine if the request contains an empty value for an input item. + * + * @param string|array $key + * @return bool + * @static + */ + public static function isNotFilled($key) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->isNotFilled($key); + } + /** * Determine if the request contains a non-empty value for any of the given inputs. * * @param string|array $keys - * @return bool - * @static + * @return bool + * @static */ public static function anyFilled($keys) { /** @var \Illuminate\Http\Request $instance */ return $instance->anyFilled($keys); } - - /** + /** + * Apply the callback if the request contains a non-empty value for the given input item key. + * + * @param string $key + * @param callable $callback + * @param callable|null $default + * @return $this|mixed + * @static + */ + public static function whenFilled($key, $callback, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->whenFilled($key, $callback, $default); + } + /** * Determine if the request is missing a given input item key. * * @param string|array $key - * @return bool - * @static + * @return bool + * @static */ public static function missing($key) { /** @var \Illuminate\Http\Request $instance */ return $instance->missing($key); } - - /** + /** * Get the keys for all of the input and files. * - * @return array - * @static + * @return array + * @static */ public static function keys() { /** @var \Illuminate\Http\Request $instance */ return $instance->keys(); } - - /** + /** * Get all of the input and files for the request. * * @param array|mixed|null $keys - * @return array - * @static + * @return array + * @static */ public static function all($keys = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->all($keys); } - - /** + /** * Retrieve an input item from the request. * * @param string|null $key * @param mixed $default - * @return mixed - * @static + * @return mixed + * @static */ public static function input($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->input($key, $default); } - - /** + /** * Retrieve input as a boolean value. - * + * * Returns true when value is "1", "true", "on", and "yes". Otherwise, returns false. * * @param string|null $key * @param bool $default - * @return bool - * @static + * @return bool + * @static */ 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 Carbon instance. + * + * @param string $key + * @param string|null $format + * @param string|null $tz + * @return \Illuminate\Support\Carbon|null + * @static + */ + public static function date($key, $format = null, $tz = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->date($key, $format, $tz); + } + /** + * Retrieve input from the request as a collection. + * + * @param array|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. * * @param array|mixed $keys - * @return array - * @static + * @return array + * @static */ public static function only($keys) { /** @var \Illuminate\Http\Request $instance */ return $instance->only($keys); } - - /** + /** * Get all of the input except for a specified array of items. * * @param array|mixed $keys - * @return array - * @static + * @return array + * @static */ public static function except($keys) { /** @var \Illuminate\Http\Request $instance */ return $instance->except($keys); } - - /** + /** * Retrieve a query string item from the request. * * @param string|null $key * @param string|array|null $default - * @return string|array|null - * @static + * @return string|array|null + * @static */ public static function query($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->query($key, $default); } - - /** + /** * Retrieve a request payload item from the request. * * @param string|null $key * @param string|array|null $default - * @return string|array|null - * @static + * @return string|array|null + * @static */ public static function post($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->post($key, $default); } - - /** + /** * Determine if a cookie is set on the request. * * @param string $key - * @return bool - * @static + * @return bool + * @static */ public static function hasCookie($key) { /** @var \Illuminate\Http\Request $instance */ return $instance->hasCookie($key); } - - /** + /** * Retrieve a cookie from the request. * * @param string|null $key * @param string|array|null $default - * @return string|array|null - * @static + * @return string|array|null + * @static */ public static function cookie($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->cookie($key, $default); } - - /** + /** * Get an array of all of the files on the request. * - * @return array - * @static + * @return array + * @static */ public static function allFiles() { /** @var \Illuminate\Http\Request $instance */ return $instance->allFiles(); } - - /** + /** * Determine if the uploaded data contains a file. * * @param string $key - * @return bool - * @static + * @return bool + * @static */ public static function hasFile($key) { /** @var \Illuminate\Http\Request $instance */ return $instance->hasFile($key); } - - /** + /** * Retrieve a file from the request. * * @param string|null $key * @param mixed $default - * @return \Illuminate\Http\UploadedFile|\Illuminate\Http\UploadedFile[]|array|null - * @static + * @return \Illuminate\Http\UploadedFile|\Illuminate\Http\UploadedFile[]|array|null + * @static */ public static function file($key = null, $default = null) { /** @var \Illuminate\Http\Request $instance */ return $instance->file($key, $default); } - - /** + /** + * Dump the request items and end the script. + * + * @param mixed $keys + * @return void + * @static + */ + public static function dd(...$keys) + { + /** @var \Illuminate\Http\Request $instance */ + $instance->dd(...$keys); + } + /** + * Dump the items. + * + * @param mixed $keys + * @return \Illuminate\Http\Request + * @static + */ + public static function dump($keys = []) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->dump($keys); + } + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Illuminate\Http\Request::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Illuminate\Http\Request::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Illuminate\Http\Request::hasMacro($name); } - - /** - * + /** + * Flush the existing macros. * - * @static + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\Http\Request::flushMacros(); + } + /** + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() + * @param array $rules + * @param mixed $params + * @static */ public static function validate($rules, ...$params) { return \Illuminate\Http\Request::validate($rules, ...$params); } - - /** - * - * - * @static + /** + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() + * @param string $errorBag + * @param array $rules + * @param mixed $params + * @static */ public static function validateWithBag($errorBag, $rules, ...$params) { return \Illuminate\Http\Request::validateWithBag($errorBag, $rules, ...$params); } - - /** - * - * - * @static + /** + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @param mixed $absolute + * @static */ public static function hasValidSignature($absolute = true) { return \Illuminate\Http\Request::hasValidSignature($absolute); + } + /** + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @static + */ + public static function hasValidRelativeSignature() + { + return \Illuminate\Http\Request::hasValidRelativeSignature(); } } - + } -namespace Illuminate\Support { - - /** - * - * + namespace Illuminate\Support { + /** */ - class Arr { + class Arr { } - - /** - * - * + /** */ - class Str { + class Str { } - + /** + */ + class Collection { + /** + * @see \Barryvdh\Debugbar\ServiceProvider::register() + * @static + */ + public static function debug() + { + return \Illuminate\Support\Collection::debug(); + } + /** + * @see \Maatwebsite\Excel\Mixins\DownloadCollectionMixin::downloadExcel() + * @param string $fileName + * @param string|null $writerType + * @param mixed $withHeadings + * @param array $responseHeaders + * @static + */ + public static function downloadExcel($fileName, $writerType = null, $withHeadings = false, $responseHeaders = []) + { + return \Illuminate\Support\Collection::downloadExcel($fileName, $writerType, $withHeadings, $responseHeaders); + } + /** + * @see \Maatwebsite\Excel\Mixins\StoreCollectionMixin::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); + } + + } + } -namespace Collective\Html { - - /** - * - * + namespace Collective\Html { + /** * @see \Collective\Html\FormBuilder */ - class FormFacade { - - /** + class FormFacade { + /** * Open up a new HTML form. * * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function open($options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->open($options); } - - /** + /** * Create a new model based form builder. * * @param mixed $model * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function model($model, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->model($model, $options); } - - /** + /** * Set the model instance on the form builder. * * @param mixed $model - * @return void - * @static + * @return void + * @static */ public static function setModel($model) { /** @var \Collective\Html\FormBuilder $instance */ $instance->setModel($model); } - - /** + /** * Get the current model instance on the form builder. * * @return mixed $model - * @static + * @static */ public static function getModel() { /** @var \Collective\Html\FormBuilder $instance */ return $instance->getModel(); } - - /** + /** * Close the current form. * - * @return string - * @static + * @return string + * @static */ public static function close() { /** @var \Collective\Html\FormBuilder $instance */ return $instance->close(); } - - /** + /** * Generate a hidden field with the current CSRF token. * - * @return string - * @static + * @return string + * @static */ public static function token() { /** @var \Collective\Html\FormBuilder $instance */ return $instance->token(); } - - /** + /** * Create a form label element. * * @param string $name * @param string $value * @param array $options * @param bool $escape_html - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function label($name, $value = null, $options = [], $escape_html = true) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->label($name, $value, $options, $escape_html); } - - /** + /** * Create a form input field. * * @param string $type * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function input($type, $name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->input($type, $name, $value, $options); } - - /** + /** * Create a text input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function text($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->text($name, $value, $options); } - - /** + /** * Create a password input field. * * @param string $name * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function password($name, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->password($name, $options); } - - /** + /** * Create a range input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function range($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->range($name, $value, $options); } - - /** + /** * Create a hidden input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function hidden($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->hidden($name, $value, $options); } - - /** + /** * Create a search input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function search($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->search($name, $value, $options); } - - /** + /** * Create an e-mail input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function email($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->email($name, $value, $options); } - - /** + /** * Create a tel input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function tel($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->tel($name, $value, $options); } - - /** + /** * Create a number input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function number($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->number($name, $value, $options); } - - /** + /** * Create a date input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function date($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->date($name, $value, $options); } - - /** + /** * Create a datetime input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function datetime($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->datetime($name, $value, $options); } - - /** + /** * Create a datetime-local input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function datetimeLocal($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->datetimeLocal($name, $value, $options); } - - /** + /** * Create a time input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function time($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->time($name, $value, $options); } - - /** + /** * Create a url input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function url($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->url($name, $value, $options); } - - /** + /** * Create a week input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function week($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->week($name, $value, $options); } - - /** + /** * Create a file input field. * * @param string $name * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function file($name, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->file($name, $options); } - - /** + /** * Create a textarea input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function textarea($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->textarea($name, $value, $options); } - - /** + /** * Create a select box field. * * @param string $name @@ -17499,16 +17895,15 @@ namespace Collective\Html { * @param array $selectAttributes * @param array $optionsAttributes * @param array $optgroupsAttributes - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function select($name, $list = [], $selected = null, $selectAttributes = [], $optionsAttributes = [], $optgroupsAttributes = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->select($name, $list, $selected, $selectAttributes, $optionsAttributes, $optgroupsAttributes); } - - /** + /** * Create a select range field. * * @param string $name @@ -17516,16 +17911,15 @@ namespace Collective\Html { * @param string $end * @param string $selected * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function selectRange($name, $begin, $end, $selected = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->selectRange($name, $begin, $end, $selected, $options); } - - /** + /** * Create a select year field. * * @param string $name @@ -17533,32 +17927,30 @@ namespace Collective\Html { * @param string $end * @param string $selected * @param array $options - * @return mixed - * @static + * @return mixed + * @static */ public static function selectYear() { /** @var \Collective\Html\FormBuilder $instance */ return $instance->selectYear(); } - - /** + /** * Create a select month field. * * @param string $name * @param string $selected * @param array $options * @param string $format - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function selectMonth($name, $selected = null, $options = [], $format = '%B') { /** @var \Collective\Html\FormBuilder $instance */ return $instance->selectMonth($name, $selected, $options, $format); } - - /** + /** * Get the select option for the given value. * * @param string $display @@ -17566,326 +17958,313 @@ namespace Collective\Html { * @param string $selected * @param array $attributes * @param array $optgroupAttributes - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function getSelectOption($display, $value, $selected, $attributes = [], $optgroupAttributes = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->getSelectOption($display, $value, $selected, $attributes, $optgroupAttributes); } - - /** + /** * Create a checkbox input field. * * @param string $name * @param mixed $value * @param bool $checked * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function checkbox($name, $value = 1, $checked = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->checkbox($name, $value, $checked, $options); } - - /** + /** * Create a radio button input field. * * @param string $name * @param mixed $value * @param bool $checked * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function radio($name, $value = null, $checked = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->radio($name, $value, $checked, $options); } - - /** + /** * Create a HTML reset input element. * * @param string $value * @param array $attributes - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function reset($value, $attributes = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->reset($value, $attributes); } - - /** + /** * Create a HTML image input element. * * @param string $url * @param string $name * @param array $attributes - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function image($url, $name = null, $attributes = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->image($url, $name, $attributes); } - - /** + /** * Create a month input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function month($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->month($name, $value, $options); } - - /** + /** * Create a color input field. * * @param string $name * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function color($name, $value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->color($name, $value, $options); } - - /** + /** * Create a submit button element. * * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function submit($value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->submit($value, $options); } - - /** + /** * Create a button element. * * @param string $value * @param array $options - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function button($value = null, $options = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->button($value, $options); } - - /** + /** * Create a datalist box field. * * @param string $id * @param array $list - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function datalist($id, $list = []) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->datalist($id, $list); } - - /** + /** * Get the ID attribute for a field name. * * @param string $name * @param array $attributes - * @return string - * @static + * @return string + * @static */ public static function getIdAttribute($name, $attributes) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->getIdAttribute($name, $attributes); } - - /** + /** * Get the value that should be assigned to the field. * * @param string $name * @param string $value - * @return mixed - * @static + * @return mixed + * @static */ public static function getValueAttribute($name, $value = null) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->getValueAttribute($name, $value); } - - /** + /** * Take Request in fill process * * @param bool $consider - * @static + * @static */ public static function considerRequest($consider = true) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->considerRequest($consider); } - - /** + /** * Get a value from the session's old input. * * @param string $name - * @return mixed - * @static + * @return mixed + * @static */ public static function old($name) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->old($name); } - - /** + /** * Determine if the old input is empty. * - * @return bool - * @static + * @return bool + * @static */ public static function oldInputIsEmpty() { /** @var \Collective\Html\FormBuilder $instance */ return $instance->oldInputIsEmpty(); } - - /** + /** * Get the session store implementation. * * @return \Illuminate\Contracts\Session\Session $session - * @static + * @static */ public static function getSessionStore() { /** @var \Collective\Html\FormBuilder $instance */ return $instance->getSessionStore(); } - - /** + /** * Set the session store implementation. * * @param \Illuminate\Contracts\Session\Session $session - * @return \Collective\Html\FormBuilder - * @static + * @return \Collective\Html\FormBuilder + * @static */ public static function setSessionStore($session) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->setSessionStore($session); } - - /** + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Collective\Html\FormBuilder::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Collective\Html\FormBuilder::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Collective\Html\FormBuilder::hasMacro($name); } - - /** + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Collective\Html\FormBuilder::flushMacros(); + } + /** * Dynamically handle calls to the class. * * @param string $method * @param array $parameters - * @return mixed + * @return mixed * @throws \BadMethodCallException - * @static + * @static */ public static function macroCall($method, $parameters) { /** @var \Collective\Html\FormBuilder $instance */ return $instance->macroCall($method, $parameters); } - - /** + /** * Register a custom component. * * @param $name * @param $view * @param array $signature - * @return void - * @static + * @return void + * @static */ public static function component($name, $view, $signature) { \Collective\Html\FormBuilder::component($name, $view, $signature); } - - /** + /** * Check if a component is registered. * * @param $name - * @return bool - * @static + * @return bool + * @static */ public static function hasComponent($name) { return \Collective\Html\FormBuilder::hasComponent($name); } - - /** + /** * Dynamically handle calls to the class. * * @param string $method * @param array $parameters - * @return \Illuminate\Contracts\View\View|mixed + * @return \Illuminate\Contracts\View\View|mixed * @throws \BadMethodCallException - * @static + * @static */ public static function componentCall($method, $parameters) { @@ -17894,102 +18273,92 @@ namespace Collective\Html { } } - - /** - * - * + /** * @see \Collective\Html\HtmlBuilder */ - class HtmlFacade { - - /** + class HtmlFacade { + /** * Convert an HTML string to entities. * * @param string $value - * @return string - * @static + * @return string + * @static */ public static function entities($value) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->entities($value); } - - /** + /** * Convert entities to HTML characters. * * @param string $value - * @return string - * @static + * @return string + * @static */ public static function decode($value) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->decode($value); } - - /** + /** * Generate a link to a JavaScript file. * * @param string $url * @param array $attributes * @param bool $secure - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function script($url, $attributes = [], $secure = null) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->script($url, $attributes, $secure); } - - /** + /** * Generate a link to a CSS file. * * @param string $url * @param array $attributes * @param bool $secure - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function style($url, $attributes = [], $secure = null) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->style($url, $attributes, $secure); } - - /** + /** * Generate an HTML image element. * * @param string $url * @param string $alt * @param array $attributes * @param bool $secure - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function image($url, $alt = null, $attributes = [], $secure = null) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->image($url, $alt, $attributes, $secure); } - - /** + /** * Generate a link to a Favicon file. * * @param string $url * @param array $attributes * @param bool $secure - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function favicon($url, $attributes = [], $secure = null) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->favicon($url, $attributes, $secure); } - - /** + /** * Generate a HTML link. * * @param string $url @@ -17997,321 +18366,316 @@ namespace Collective\Html { * @param array $attributes * @param bool $secure * @param bool $escape - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function link($url, $title = null, $attributes = [], $secure = null, $escape = true) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->link($url, $title, $attributes, $secure, $escape); } - - /** + /** * Generate a HTTPS HTML link. * * @param string $url * @param string $title * @param array $attributes - * @return \Illuminate\Support\HtmlString - * @static + * @param bool $escape + * @return \Illuminate\Support\HtmlString + * @static */ - public static function secureLink($url, $title = null, $attributes = []) + public static function secureLink($url, $title = null, $attributes = [], $escape = true) { /** @var \Collective\Html\HtmlBuilder $instance */ - return $instance->secureLink($url, $title, $attributes); + return $instance->secureLink($url, $title, $attributes, $escape); } - - /** + /** * Generate a HTML link to an asset. * * @param string $url * @param string $title * @param array $attributes * @param bool $secure - * @return \Illuminate\Support\HtmlString - * @static + * @param bool $escape + * @return \Illuminate\Support\HtmlString + * @static */ - public static function linkAsset($url, $title = null, $attributes = [], $secure = null) + public static function linkAsset($url, $title = null, $attributes = [], $secure = null, $escape = true) { /** @var \Collective\Html\HtmlBuilder $instance */ - return $instance->linkAsset($url, $title, $attributes, $secure); + return $instance->linkAsset($url, $title, $attributes, $secure, $escape); } - - /** + /** * Generate a HTTPS HTML link to an asset. * * @param string $url * @param string $title * @param array $attributes - * @return \Illuminate\Support\HtmlString - * @static + * @param bool $escape + * @return \Illuminate\Support\HtmlString + * @static */ - public static function linkSecureAsset($url, $title = null, $attributes = []) + public static function linkSecureAsset($url, $title = null, $attributes = [], $escape = true) { /** @var \Collective\Html\HtmlBuilder $instance */ - return $instance->linkSecureAsset($url, $title, $attributes); + return $instance->linkSecureAsset($url, $title, $attributes, $escape); } - - /** + /** * Generate a HTML link to a named route. * * @param string $name * @param string $title * @param array $parameters * @param array $attributes - * @return \Illuminate\Support\HtmlString - * @static + * @param bool $secure + * @param bool $escape + * @return \Illuminate\Support\HtmlString + * @static */ - public static function linkRoute($name, $title = null, $parameters = [], $attributes = []) + public static function linkRoute($name, $title = null, $parameters = [], $attributes = [], $secure = null, $escape = true) { /** @var \Collective\Html\HtmlBuilder $instance */ - return $instance->linkRoute($name, $title, $parameters, $attributes); + return $instance->linkRoute($name, $title, $parameters, $attributes, $secure, $escape); } - - /** + /** * Generate a HTML link to a controller action. * * @param string $action * @param string $title * @param array $parameters * @param array $attributes - * @return \Illuminate\Support\HtmlString - * @static + * @param bool $secure + * @param bool $escape + * @return \Illuminate\Support\HtmlString + * @static */ - public static function linkAction($action, $title = null, $parameters = [], $attributes = []) + public static function linkAction($action, $title = null, $parameters = [], $attributes = [], $secure = null, $escape = true) { /** @var \Collective\Html\HtmlBuilder $instance */ - return $instance->linkAction($action, $title, $parameters, $attributes); + return $instance->linkAction($action, $title, $parameters, $attributes, $secure, $escape); } - - /** + /** * Generate a HTML link to an email address. * * @param string $email * @param string $title * @param array $attributes * @param bool $escape - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function mailto($email, $title = null, $attributes = [], $escape = true) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->mailto($email, $title, $attributes, $escape); } - - /** + /** * Obfuscate an e-mail address to prevent spam-bots from sniffing it. * * @param string $email - * @return string - * @static + * @return string + * @static */ public static function email($email) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->email($email); } - - /** + /** * Generates non-breaking space entities based on number supplied. * * @param int $num - * @return string - * @static + * @return string + * @static */ public static function nbsp($num = 1) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->nbsp($num); } - - /** + /** * Generate an ordered list of items. * * @param array $list * @param array $attributes - * @return \Illuminate\Support\HtmlString|string - * @static + * @return \Illuminate\Support\HtmlString|string + * @static */ public static function ol($list, $attributes = []) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->ol($list, $attributes); } - - /** + /** * Generate an un-ordered list of items. * * @param array $list * @param array $attributes - * @return \Illuminate\Support\HtmlString|string - * @static + * @return \Illuminate\Support\HtmlString|string + * @static */ public static function ul($list, $attributes = []) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->ul($list, $attributes); } - - /** + /** * Generate a description list of items. * * @param array $list * @param array $attributes - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function dl($list, $attributes = []) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->dl($list, $attributes); } - - /** + /** * Build an HTML attribute string from an array. * * @param array $attributes - * @return string - * @static + * @return string + * @static */ public static function attributes($attributes) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->attributes($attributes); } - - /** + /** * Obfuscate a string to prevent spam-bots from sniffing it. * * @param string $value - * @return string - * @static + * @return string + * @static */ public static function obfuscate($value) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->obfuscate($value); } - - /** + /** * Generate a meta tag. * * @param string $name * @param string $content * @param array $attributes - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function meta($name, $content, $attributes = []) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->meta($name, $content, $attributes); } - - /** + /** * Generate an html tag. * * @param string $tag * @param mixed $content * @param array $attributes - * @return \Illuminate\Support\HtmlString - * @static + * @return \Illuminate\Support\HtmlString + * @static */ public static function tag($tag, $content, $attributes = []) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->tag($tag, $content, $attributes); } - - /** + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Collective\Html\HtmlBuilder::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Collective\Html\HtmlBuilder::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Collective\Html\HtmlBuilder::hasMacro($name); } - - /** + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Collective\Html\HtmlBuilder::flushMacros(); + } + /** * Dynamically handle calls to the class. * * @param string $method * @param array $parameters - * @return mixed + * @return mixed * @throws \BadMethodCallException - * @static + * @static */ public static function macroCall($method, $parameters) { /** @var \Collective\Html\HtmlBuilder $instance */ return $instance->macroCall($method, $parameters); } - - /** + /** * Register a custom component. * * @param $name * @param $view * @param array $signature - * @return void - * @static + * @return void + * @static */ public static function component($name, $view, $signature) { \Collective\Html\HtmlBuilder::component($name, $view, $signature); } - - /** + /** * Check if a component is registered. * * @param $name - * @return bool - * @static + * @return bool + * @static */ public static function hasComponent($name) { return \Collective\Html\HtmlBuilder::hasComponent($name); } - - /** + /** * Dynamically handle calls to the class. * * @param string $method * @param array $parameters - * @return \Illuminate\Contracts\View\View|mixed + * @return \Illuminate\Contracts\View\View|mixed * @throws \BadMethodCallException - * @static + * @static */ public static function componentCall($method, $parameters) { @@ -18320,67 +18684,60 @@ namespace Collective\Html { } } - + } -namespace Intervention\Image\Facades { - - /** - * - * + namespace Intervention\Image\Facades { + /** */ - class Image { - - /** + class Image { + /** * Overrides configuration settings * * @param array $config - * @return self - * @static + * @return self + * @static */ public static function configure($config = []) { /** @var \Intervention\Image\ImageManager $instance */ return $instance->configure($config); } - - /** + /** * Initiates an Image instance from different input types * * @param mixed $data - * @return \Intervention\Image\Image - * @static + * @return \Intervention\Image\Image + * @static */ public static function make($data) { /** @var \Intervention\Image\ImageManager $instance */ return $instance->make($data); } - - /** + /** * Creates an empty image canvas * * @param int $width * @param int $height * @param mixed $background - * @return \Intervention\Image\Image - * @static + * @return \Intervention\Image\Image + * @static */ public static function canvas($width, $height, $background = null) { /** @var \Intervention\Image\ImageManager $instance */ return $instance->canvas($width, $height, $background); } - - /** + /** * Create new cached image and run callback * (requires additional package intervention/imagecache) * * @param \Closure $callback * @param int $lifetime * @param boolean $returnObj - * @return \Image - * @static + * @return \Image + * @static */ public static function cache($callback, $lifetime = null, $returnObj = false) { @@ -18389,768 +18746,779 @@ namespace Intervention\Image\Facades { } } - + } -namespace Carbon { - - /** + namespace Carbon { + /** * A simple API extension for DateTime. - * - * * - * @property int $year - * @property int $yearIso - * @property int $month - * @property int $day - * @property int $hour - * @property int $minute - * @property int $second - * @property int $micro - * @property int $microsecond - * @property int $timestamp seconds since the Unix Epoch - * @property string $englishDayOfWeek the day of week in English - * @property string $shortEnglishDayOfWeek the abbreviated day of week in English - * @property string $englishMonth the month in English - * @property string $shortEnglishMonth the abbreviated month in English - * @property string $localeDayOfWeek the day of week in current locale LC_TIME - * @property string $shortLocaleDayOfWeek the abbreviated day of week in current locale LC_TIME - * @property string $localeMonth the month in current locale LC_TIME - * @property string $shortLocaleMonth the abbreviated month in current locale LC_TIME - * @property int $milliseconds - * @property int $millisecond - * @property int $milli - * @property int $week 1 through 53 - * @property int $isoWeek 1 through 53 - * @property int $weekYear year according to week format - * @property int $isoWeekYear year according to ISO week format - * @property int $dayOfYear 1 through 366 - * @property int $age does a diffInYears() with default parameters - * @property int $offset the timezone offset in seconds from UTC - * @property int $offsetMinutes the timezone offset in minutes from UTC - * @property int $offsetHours the timezone offset in hours from UTC - * @property CarbonTimeZone $timezone the current timezone - * @property CarbonTimeZone $tz alias of $timezone - * @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday) - * @property-read int $dayOfWeekIso 1 (for Monday) through 7 (for Sunday) - * @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday - * @property-read int $daysInMonth number of days in the given month - * @property-read string $latinMeridiem "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark) - * @property-read string $latinUpperMeridiem "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark) - * @property-read string $timezoneAbbreviatedName the current timezone abbreviated name - * @property-read string $tzAbbrName alias of $timezoneAbbreviatedName - * @property-read string $dayName long name of weekday translated according to Carbon locale, in english if no translation available for current language - * @property-read string $shortDayName short name of weekday translated according to Carbon locale, in english if no translation available for current language - * @property-read string $minDayName very short name of weekday translated according to Carbon locale, in english if no translation available for current language - * @property-read string $monthName long name of month translated according to Carbon locale, in english if no translation available for current language - * @property-read string $shortMonthName short name of month translated according to Carbon locale, in english if no translation available for current language - * @property-read string $meridiem lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language - * @property-read string $upperMeridiem uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language - * @property-read int $noZeroHour current hour from 1 to 24 - * @property-read int $weeksInYear 51 through 53 - * @property-read int $isoWeeksInYear 51 through 53 - * @property-read int $weekOfMonth 1 through 5 - * @property-read int $weekNumberInMonth 1 through 5 - * @property-read int $firstWeekDay 0 through 6 - * @property-read int $lastWeekDay 0 through 6 - * @property-read int $daysInYear 365 or 366 - * @property-read int $quarter the quarter of this instance, 1 - 4 - * @property-read int $decade the decade of this instance - * @property-read int $century the century of this instance - * @property-read int $millennium the millennium of this instance - * @property-read bool $dst daylight savings time indicator, true if DST, false otherwise - * @property-read bool $local checks if the timezone is local, true if local, false otherwise - * @property-read bool $utc checks if the timezone is UTC, true if UTC, false otherwise - * @property-read string $timezoneName the current timezone name - * @property-read string $tzName alias of $timezoneName - * @property-read string $locale locale of the current instance - * @method bool isUtc() Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.) - * @method bool isLocal() Check if the current instance has non-UTC timezone. - * @method bool isValid() Check if the current instance is a valid date. - * @method bool isDST() Check if the current instance is in a daylight saving time. - * @method bool isSunday() Checks if the instance day is sunday. - * @method bool isMonday() Checks if the instance day is monday. - * @method bool isTuesday() Checks if the instance day is tuesday. - * @method bool isWednesday() Checks if the instance day is wednesday. - * @method bool isThursday() Checks if the instance day is thursday. - * @method bool isFriday() Checks if the instance day is friday. - * @method bool isSaturday() Checks if the instance day is saturday. - * @method bool isSameYear(\Carbon\Carbon|\DateTimeInterface|string|null $date = null) Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentYear() Checks if the instance is in the same year as the current moment. - * @method bool isNextYear() Checks if the instance is in the same year as the current moment next year. - * @method bool isLastYear() Checks if the instance is in the same year as the current moment last year. - * @method bool isSameWeek(\Carbon\Carbon|\DateTimeInterface|string|null $date = null) Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentWeek() Checks if the instance is in the same week as the current moment. - * @method bool isNextWeek() Checks if the instance is in the same week as the current moment next week. - * @method bool isLastWeek() Checks if the instance is in the same week as the current moment last week. - * @method bool isSameDay(\Carbon\Carbon|\DateTimeInterface|string|null $date = null) Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentDay() Checks if the instance is in the same day as the current moment. - * @method bool isNextDay() Checks if the instance is in the same day as the current moment next day. - * @method bool isLastDay() Checks if the instance is in the same day as the current moment last day. - * @method bool isSameHour(\Carbon\Carbon|\DateTimeInterface|string|null $date = null) Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentHour() Checks if the instance is in the same hour as the current moment. - * @method bool isNextHour() Checks if the instance is in the same hour as the current moment next hour. - * @method bool isLastHour() Checks if the instance is in the same hour as the current moment last hour. - * @method bool isSameMinute(\Carbon\Carbon|\DateTimeInterface|string|null $date = null) Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMinute() Checks if the instance is in the same minute as the current moment. - * @method bool isNextMinute() Checks if the instance is in the same minute as the current moment next minute. - * @method bool isLastMinute() Checks if the instance is in the same minute as the current moment last minute. - * @method bool isSameSecond(\Carbon\Carbon|\DateTimeInterface|string|null $date = null) Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentSecond() Checks if the instance is in the same second as the current moment. - * @method bool isNextSecond() Checks if the instance is in the same second as the current moment next second. - * @method bool isLastSecond() Checks if the instance is in the same second as the current moment last second. - * @method bool isSameMicro(\Carbon\Carbon|\DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMicro() Checks if the instance is in the same microsecond as the current moment. - * @method bool isNextMicro() Checks if the instance is in the same microsecond as the current moment next microsecond. - * @method bool isLastMicro() Checks if the instance is in the same microsecond as the current moment last microsecond. - * @method bool isSameMicrosecond(\Carbon\Carbon|\DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMicrosecond() Checks if the instance is in the same microsecond as the current moment. - * @method bool isNextMicrosecond() Checks if the instance is in the same microsecond as the current moment next microsecond. - * @method bool isLastMicrosecond() Checks if the instance is in the same microsecond as the current moment last microsecond. - * @method bool isCurrentMonth() Checks if the instance is in the same month as the current moment. - * @method bool isNextMonth() Checks if the instance is in the same month as the current moment next month. - * @method bool isLastMonth() Checks if the instance is in the same month as the current moment last month. - * @method bool isCurrentQuarter() Checks if the instance is in the same quarter as the current moment. - * @method bool isNextQuarter() Checks if the instance is in the same quarter as the current moment next quarter. - * @method bool isLastQuarter() Checks if the instance is in the same quarter as the current moment last quarter. - * @method bool isSameDecade(\Carbon\Carbon|\DateTimeInterface|string|null $date = null) Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentDecade() Checks if the instance is in the same decade as the current moment. - * @method bool isNextDecade() Checks if the instance is in the same decade as the current moment next decade. - * @method bool isLastDecade() Checks if the instance is in the same decade as the current moment last decade. - * @method bool isSameCentury(\Carbon\Carbon|\DateTimeInterface|string|null $date = null) Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentCentury() Checks if the instance is in the same century as the current moment. - * @method bool isNextCentury() Checks if the instance is in the same century as the current moment next century. - * @method bool isLastCentury() Checks if the instance is in the same century as the current moment last century. - * @method bool isSameMillennium(\Carbon\Carbon|\DateTimeInterface|string|null $date = null) Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMillennium() Checks if the instance is in the same millennium as the current moment. - * @method bool isNextMillennium() Checks if the instance is in the same millennium as the current moment next millennium. - * @method bool isLastMillennium() Checks if the instance is in the same millennium as the current moment last millennium. - * @method Carbon years(int $value) Set current instance year to the given value. - * @method Carbon year(int $value) Set current instance year to the given value. - * @method Carbon setYears(int $value) Set current instance year to the given value. - * @method Carbon setYear(int $value) Set current instance year to the given value. - * @method Carbon months(int $value) Set current instance month to the given value. - * @method Carbon month(int $value) Set current instance month to the given value. - * @method Carbon setMonths(int $value) Set current instance month to the given value. - * @method Carbon setMonth(int $value) Set current instance month to the given value. - * @method Carbon days(int $value) Set current instance day to the given value. - * @method Carbon day(int $value) Set current instance day to the given value. - * @method Carbon setDays(int $value) Set current instance day to the given value. - * @method Carbon setDay(int $value) Set current instance day to the given value. - * @method Carbon hours(int $value) Set current instance hour to the given value. - * @method Carbon hour(int $value) Set current instance hour to the given value. - * @method Carbon setHours(int $value) Set current instance hour to the given value. - * @method Carbon setHour(int $value) Set current instance hour to the given value. - * @method Carbon minutes(int $value) Set current instance minute to the given value. - * @method Carbon minute(int $value) Set current instance minute to the given value. - * @method Carbon setMinutes(int $value) Set current instance minute to the given value. - * @method Carbon setMinute(int $value) Set current instance minute to the given value. - * @method Carbon seconds(int $value) Set current instance second to the given value. - * @method Carbon second(int $value) Set current instance second to the given value. - * @method Carbon setSeconds(int $value) Set current instance second to the given value. - * @method Carbon setSecond(int $value) Set current instance second to the given value. - * @method Carbon millis(int $value) Set current instance millisecond to the given value. - * @method Carbon milli(int $value) Set current instance millisecond to the given value. - * @method Carbon setMillis(int $value) Set current instance millisecond to the given value. - * @method Carbon setMilli(int $value) Set current instance millisecond to the given value. - * @method Carbon milliseconds(int $value) Set current instance millisecond to the given value. - * @method Carbon millisecond(int $value) Set current instance millisecond to the given value. - * @method Carbon setMilliseconds(int $value) Set current instance millisecond to the given value. - * @method Carbon setMillisecond(int $value) Set current instance millisecond to the given value. - * @method Carbon micros(int $value) Set current instance microsecond to the given value. - * @method Carbon micro(int $value) Set current instance microsecond to the given value. - * @method Carbon setMicros(int $value) Set current instance microsecond to the given value. - * @method Carbon setMicro(int $value) Set current instance microsecond to the given value. - * @method Carbon microseconds(int $value) Set current instance microsecond to the given value. - * @method Carbon microsecond(int $value) Set current instance microsecond to the given value. - * @method Carbon setMicroseconds(int $value) Set current instance microsecond to the given value. - * @method Carbon setMicrosecond(int $value) Set current instance microsecond to the given value. - * @method Carbon addYears(int $value = 1) Add years (the $value count passed in) to the instance (using date interval). - * @method Carbon addYear() Add one year to the instance (using date interval). - * @method Carbon subYears(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval). - * @method Carbon subYear() Sub one year to the instance (using date interval). - * @method Carbon addYearsWithOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon addYearWithOverflow() Add one year to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon subYearsWithOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon subYearWithOverflow() Sub one year to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon addYearsWithoutOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addYearWithoutOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subYearsWithoutOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subYearWithoutOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addYearsWithNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addYearWithNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subYearsWithNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subYearWithNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addYearsNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addYearNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subYearsNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subYearNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addMonths(int $value = 1) Add months (the $value count passed in) to the instance (using date interval). - * @method Carbon addMonth() Add one month to the instance (using date interval). - * @method Carbon subMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval). - * @method Carbon subMonth() Sub one month to the instance (using date interval). - * @method Carbon addMonthsWithOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon addMonthWithOverflow() Add one month to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon subMonthsWithOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon subMonthWithOverflow() Sub one month to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon addMonthsWithoutOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addMonthWithoutOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subMonthsWithoutOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subMonthWithoutOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addMonthsWithNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addMonthWithNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subMonthsWithNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subMonthWithNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addMonthsNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addMonthNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subMonthsNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subMonthNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addDays(int $value = 1) Add days (the $value count passed in) to the instance (using date interval). - * @method Carbon addDay() Add one day to the instance (using date interval). - * @method Carbon subDays(int $value = 1) Sub days (the $value count passed in) to the instance (using date interval). - * @method Carbon subDay() Sub one day to the instance (using date interval). - * @method Carbon addHours(int $value = 1) Add hours (the $value count passed in) to the instance (using date interval). - * @method Carbon addHour() Add one hour to the instance (using date interval). - * @method Carbon subHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using date interval). - * @method Carbon subHour() Sub one hour to the instance (using date interval). - * @method Carbon addMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using date interval). - * @method Carbon addMinute() Add one minute to the instance (using date interval). - * @method Carbon subMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using date interval). - * @method Carbon subMinute() Sub one minute to the instance (using date interval). - * @method Carbon addSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using date interval). - * @method Carbon addSecond() Add one second to the instance (using date interval). - * @method Carbon subSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using date interval). - * @method Carbon subSecond() Sub one second to the instance (using date interval). - * @method Carbon addMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). - * @method Carbon addMilli() Add one millisecond to the instance (using date interval). - * @method Carbon subMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). - * @method Carbon subMilli() Sub one millisecond to the instance (using date interval). - * @method Carbon addMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). - * @method Carbon addMillisecond() Add one millisecond to the instance (using date interval). - * @method Carbon subMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). - * @method Carbon subMillisecond() Sub one millisecond to the instance (using date interval). - * @method Carbon addMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). - * @method Carbon addMicro() Add one microsecond to the instance (using date interval). - * @method Carbon subMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). - * @method Carbon subMicro() Sub one microsecond to the instance (using date interval). - * @method Carbon addMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). - * @method Carbon addMicrosecond() Add one microsecond to the instance (using date interval). - * @method Carbon subMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). - * @method Carbon subMicrosecond() Sub one microsecond to the instance (using date interval). - * @method Carbon addMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval). - * @method Carbon addMillennium() Add one millennium to the instance (using date interval). - * @method Carbon subMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval). - * @method Carbon subMillennium() Sub one millennium to the instance (using date interval). - * @method Carbon addMillenniaWithOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon addMillenniumWithOverflow() Add one millennium to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon subMillenniaWithOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon subMillenniumWithOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon addMillenniaWithoutOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addMillenniumWithoutOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subMillenniaWithoutOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subMillenniumWithoutOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addMillenniaWithNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addMillenniumWithNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subMillenniaWithNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subMillenniumWithNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addMillenniaNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addMillenniumNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subMillenniaNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subMillenniumNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval). - * @method Carbon addCentury() Add one century to the instance (using date interval). - * @method Carbon subCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval). - * @method Carbon subCentury() Sub one century to the instance (using date interval). - * @method Carbon addCenturiesWithOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon addCenturyWithOverflow() Add one century to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon subCenturiesWithOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon subCenturyWithOverflow() Sub one century to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon addCenturiesWithoutOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addCenturyWithoutOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subCenturiesWithoutOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subCenturyWithoutOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addCenturiesWithNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addCenturyWithNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subCenturiesWithNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subCenturyWithNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addCenturiesNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addCenturyNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subCenturiesNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subCenturyNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval). - * @method Carbon addDecade() Add one decade to the instance (using date interval). - * @method Carbon subDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval). - * @method Carbon subDecade() Sub one decade to the instance (using date interval). - * @method Carbon addDecadesWithOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon addDecadeWithOverflow() Add one decade to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon subDecadesWithOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon subDecadeWithOverflow() Sub one decade to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon addDecadesWithoutOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addDecadeWithoutOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subDecadesWithoutOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subDecadeWithoutOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addDecadesWithNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addDecadeWithNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subDecadesWithNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subDecadeWithNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addDecadesNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addDecadeNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subDecadesNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subDecadeNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval). - * @method Carbon addQuarter() Add one quarter to the instance (using date interval). - * @method Carbon subQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval). - * @method Carbon subQuarter() Sub one quarter to the instance (using date interval). - * @method Carbon addQuartersWithOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon addQuarterWithOverflow() Add one quarter to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon subQuartersWithOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon subQuarterWithOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly allowed. - * @method Carbon addQuartersWithoutOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addQuarterWithoutOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subQuartersWithoutOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subQuarterWithoutOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addQuartersWithNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addQuarterWithNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subQuartersWithNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subQuarterWithNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addQuartersNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addQuarterNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subQuartersNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon subQuarterNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method Carbon addWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using date interval). - * @method Carbon addWeek() Add one week to the instance (using date interval). - * @method Carbon subWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using date interval). - * @method Carbon subWeek() Sub one week to the instance (using date interval). - * @method Carbon addWeekdays(int $value = 1) Add weekdays (the $value count passed in) to the instance (using date interval). - * @method Carbon addWeekday() Add one weekday to the instance (using date interval). - * @method Carbon subWeekdays(int $value = 1) Sub weekdays (the $value count passed in) to the instance (using date interval). - * @method Carbon subWeekday() Sub one weekday to the instance (using date interval). - * @method Carbon addRealMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). - * @method Carbon addRealMicro() Add one microsecond to the instance (using timestamp). - * @method Carbon subRealMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). - * @method Carbon subRealMicro() Sub one microsecond to the instance (using timestamp). - * @method CarbonPeriod microsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. - * @method Carbon addRealMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). - * @method Carbon addRealMicrosecond() Add one microsecond to the instance (using timestamp). - * @method Carbon subRealMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). - * @method Carbon subRealMicrosecond() Sub one microsecond to the instance (using timestamp). - * @method CarbonPeriod microsecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. - * @method Carbon addRealMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). - * @method Carbon addRealMilli() Add one millisecond to the instance (using timestamp). - * @method Carbon subRealMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). - * @method Carbon subRealMilli() Sub one millisecond to the instance (using timestamp). - * @method CarbonPeriod millisUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. - * @method Carbon addRealMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). - * @method Carbon addRealMillisecond() Add one millisecond to the instance (using timestamp). - * @method Carbon subRealMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). - * @method Carbon subRealMillisecond() Sub one millisecond to the instance (using timestamp). - * @method CarbonPeriod millisecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. - * @method Carbon addRealSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using timestamp). - * @method Carbon addRealSecond() Add one second to the instance (using timestamp). - * @method Carbon subRealSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using timestamp). - * @method Carbon subRealSecond() Sub one second to the instance (using timestamp). - * @method CarbonPeriod secondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given. - * @method Carbon addRealMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using timestamp). - * @method Carbon addRealMinute() Add one minute to the instance (using timestamp). - * @method Carbon subRealMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using timestamp). - * @method Carbon subRealMinute() Sub one minute to the instance (using timestamp). - * @method CarbonPeriod minutesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given. - * @method Carbon addRealHours(int $value = 1) Add hours (the $value count passed in) to the instance (using timestamp). - * @method Carbon addRealHour() Add one hour to the instance (using timestamp). - * @method Carbon subRealHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using timestamp). - * @method Carbon subRealHour() Sub one hour to the instance (using timestamp). - * @method CarbonPeriod hoursUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given. - * @method Carbon addRealDays(int $value = 1) Add days (the $value count passed in) to the instance (using timestamp). - * @method Carbon addRealDay() Add one day to the instance (using timestamp). - * @method Carbon subRealDays(int $value = 1) Sub days (the $value count passed in) to the instance (using timestamp). - * @method Carbon subRealDay() Sub one day to the instance (using timestamp). - * @method CarbonPeriod daysUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given. - * @method Carbon addRealWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using timestamp). - * @method Carbon addRealWeek() Add one week to the instance (using timestamp). - * @method Carbon subRealWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using timestamp). - * @method Carbon subRealWeek() Sub one week to the instance (using timestamp). - * @method CarbonPeriod weeksUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given. - * @method Carbon addRealMonths(int $value = 1) Add months (the $value count passed in) to the instance (using timestamp). - * @method Carbon addRealMonth() Add one month to the instance (using timestamp). - * @method Carbon subRealMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using timestamp). - * @method Carbon subRealMonth() Sub one month to the instance (using timestamp). - * @method CarbonPeriod monthsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given. - * @method Carbon addRealQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using timestamp). - * @method Carbon addRealQuarter() Add one quarter to the instance (using timestamp). - * @method Carbon subRealQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using timestamp). - * @method Carbon subRealQuarter() Sub one quarter to the instance (using timestamp). - * @method CarbonPeriod quartersUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given. - * @method Carbon addRealYears(int $value = 1) Add years (the $value count passed in) to the instance (using timestamp). - * @method Carbon addRealYear() Add one year to the instance (using timestamp). - * @method Carbon subRealYears(int $value = 1) Sub years (the $value count passed in) to the instance (using timestamp). - * @method Carbon subRealYear() Sub one year to the instance (using timestamp). - * @method CarbonPeriod yearsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given. - * @method Carbon addRealDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using timestamp). - * @method Carbon addRealDecade() Add one decade to the instance (using timestamp). - * @method Carbon subRealDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using timestamp). - * @method Carbon subRealDecade() Sub one decade to the instance (using timestamp). - * @method CarbonPeriod decadesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given. - * @method Carbon addRealCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using timestamp). - * @method Carbon addRealCentury() Add one century to the instance (using timestamp). - * @method Carbon subRealCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using timestamp). - * @method Carbon subRealCentury() Sub one century to the instance (using timestamp). - * @method CarbonPeriod centuriesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given. - * @method Carbon addRealMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using timestamp). - * @method Carbon addRealMillennium() Add one millennium to the instance (using timestamp). - * @method Carbon subRealMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using timestamp). - * @method Carbon subRealMillennium() Sub one millennium to the instance (using timestamp). - * @method CarbonPeriod millenniaUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given. - * @method Carbon roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. - * @method Carbon roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. - * @method Carbon floorYear(float $precision = 1) Truncate the current instance year with given precision. - * @method Carbon floorYears(float $precision = 1) Truncate the current instance year with given precision. - * @method Carbon ceilYear(float $precision = 1) Ceil the current instance year with given precision. - * @method Carbon ceilYears(float $precision = 1) Ceil the current instance year with given precision. - * @method Carbon roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. - * @method Carbon roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. - * @method Carbon floorMonth(float $precision = 1) Truncate the current instance month with given precision. - * @method Carbon floorMonths(float $precision = 1) Truncate the current instance month with given precision. - * @method Carbon ceilMonth(float $precision = 1) Ceil the current instance month with given precision. - * @method Carbon ceilMonths(float $precision = 1) Ceil the current instance month with given precision. - * @method Carbon roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method Carbon roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method Carbon floorDay(float $precision = 1) Truncate the current instance day with given precision. - * @method Carbon floorDays(float $precision = 1) Truncate the current instance day with given precision. - * @method Carbon ceilDay(float $precision = 1) Ceil the current instance day with given precision. - * @method Carbon ceilDays(float $precision = 1) Ceil the current instance day with given precision. - * @method Carbon roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. - * @method Carbon roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. - * @method Carbon floorHour(float $precision = 1) Truncate the current instance hour with given precision. - * @method Carbon floorHours(float $precision = 1) Truncate the current instance hour with given precision. - * @method Carbon ceilHour(float $precision = 1) Ceil the current instance hour with given precision. - * @method Carbon ceilHours(float $precision = 1) Ceil the current instance hour with given precision. - * @method Carbon roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. - * @method Carbon roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. - * @method Carbon floorMinute(float $precision = 1) Truncate the current instance minute with given precision. - * @method Carbon floorMinutes(float $precision = 1) Truncate the current instance minute with given precision. - * @method Carbon ceilMinute(float $precision = 1) Ceil the current instance minute with given precision. - * @method Carbon ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision. - * @method Carbon roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. - * @method Carbon roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. - * @method Carbon floorSecond(float $precision = 1) Truncate the current instance second with given precision. - * @method Carbon floorSeconds(float $precision = 1) Truncate the current instance second with given precision. - * @method Carbon ceilSecond(float $precision = 1) Ceil the current instance second with given precision. - * @method Carbon ceilSeconds(float $precision = 1) Ceil the current instance second with given precision. - * @method Carbon roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. - * @method Carbon roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. - * @method Carbon floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision. - * @method Carbon floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision. - * @method Carbon ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision. - * @method Carbon ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision. - * @method Carbon roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. - * @method Carbon roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. - * @method Carbon floorCentury(float $precision = 1) Truncate the current instance century with given precision. - * @method Carbon floorCenturies(float $precision = 1) Truncate the current instance century with given precision. - * @method Carbon ceilCentury(float $precision = 1) Ceil the current instance century with given precision. - * @method Carbon ceilCenturies(float $precision = 1) Ceil the current instance century with given precision. - * @method Carbon roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. - * @method Carbon roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. - * @method Carbon floorDecade(float $precision = 1) Truncate the current instance decade with given precision. - * @method Carbon floorDecades(float $precision = 1) Truncate the current instance decade with given precision. - * @method Carbon ceilDecade(float $precision = 1) Ceil the current instance decade with given precision. - * @method Carbon ceilDecades(float $precision = 1) Ceil the current instance decade with given precision. - * @method Carbon roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. - * @method Carbon roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. - * @method Carbon floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision. - * @method Carbon floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision. - * @method Carbon ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision. - * @method Carbon ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision. - * @method Carbon roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. - * @method Carbon roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. - * @method Carbon floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision. - * @method Carbon floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision. - * @method Carbon ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision. - * @method Carbon ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision. - * @method Carbon roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. - * @method Carbon roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. - * @method Carbon floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision. - * @method Carbon floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision. - * @method Carbon ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision. - * @method Carbon ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision. - * @method string shortAbsoluteDiffForHumans(\DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longAbsoluteDiffForHumans(\DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string shortRelativeDiffForHumans(\DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longRelativeDiffForHumans(\DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string shortRelativeToNowDiffForHumans(\DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longRelativeToNowDiffForHumans(\DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string shortRelativeToOtherDiffForHumans(\DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longRelativeToOtherDiffForHumans(\DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method static Carbon createFromImmutable(\DateTimeImmutable $dateTime) Create a new Carbon object from an immutable date. - * @method static Carbon createFromFormat(string $format, string $time, string|\DateTimeZone $timezone = null) Parse a string into a new Carbon object according to the specified format. - * @method static Carbon __set_state(array $array) https://php.net/manual/en/datetime.set-state.php - * + * @mixin DeprecatedProperties + * + * + * @property int $year + * @property int $yearIso + * @property int $month + * @property int $day + * @property int $hour + * @property int $minute + * @property int $second + * @property int $micro + * @property int $microsecond + * @property int|float|string $timestamp seconds since the Unix Epoch + * @property string $englishDayOfWeek the day of week in English + * @property string $shortEnglishDayOfWeek the abbreviated day of week in English + * @property string $englishMonth the month in English + * @property string $shortEnglishMonth the abbreviated month in English + * @property int $milliseconds + * @property int $millisecond + * @property int $milli + * @property int $week 1 through 53 + * @property int $isoWeek 1 through 53 + * @property int $weekYear year according to week format + * @property int $isoWeekYear year according to ISO week format + * @property int $dayOfYear 1 through 366 + * @property int $age does a diffInYears() with default parameters + * @property int $offset the timezone offset in seconds from UTC + * @property int $offsetMinutes the timezone offset in minutes from UTC + * @property int $offsetHours the timezone offset in hours from UTC + * @property CarbonTimeZone $timezone the current timezone + * @property CarbonTimeZone $tz alias of $timezone + * @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday) + * @property-read int $dayOfWeekIso 1 (for Monday) through 7 (for Sunday) + * @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday + * @property-read int $daysInMonth number of days in the given month + * @property-read string $latinMeridiem "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark) + * @property-read string $latinUpperMeridiem "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark) + * @property-read string $timezoneAbbreviatedName the current timezone abbreviated name + * @property-read string $tzAbbrName alias of $timezoneAbbreviatedName + * @property-read string $dayName long name of weekday translated according to Carbon locale, in english if no translation available for current language + * @property-read string $shortDayName short name of weekday translated according to Carbon locale, in english if no translation available for current language + * @property-read string $minDayName very short name of weekday translated according to Carbon locale, in english if no translation available for current language + * @property-read string $monthName long name of month translated according to Carbon locale, in english if no translation available for current language + * @property-read string $shortMonthName short name of month translated according to Carbon locale, in english if no translation available for current language + * @property-read string $meridiem lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language + * @property-read string $upperMeridiem uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language + * @property-read int $noZeroHour current hour from 1 to 24 + * @property-read int $weeksInYear 51 through 53 + * @property-read int $isoWeeksInYear 51 through 53 + * @property-read int $weekOfMonth 1 through 5 + * @property-read int $weekNumberInMonth 1 through 5 + * @property-read int $firstWeekDay 0 through 6 + * @property-read int $lastWeekDay 0 through 6 + * @property-read int $daysInYear 365 or 366 + * @property-read int $quarter the quarter of this instance, 1 - 4 + * @property-read int $decade the decade of this instance + * @property-read int $century the century of this instance + * @property-read int $millennium the millennium of this instance + * @property-read bool $dst daylight savings time indicator, true if DST, false otherwise + * @property-read bool $local checks if the timezone is local, true if local, false otherwise + * @property-read bool $utc checks if the timezone is UTC, true if UTC, false otherwise + * @property-read string $timezoneName the current timezone name + * @property-read string $tzName alias of $timezoneName + * @property-read string $locale locale of the current instance + * @method bool isUtc() Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.) + * @method bool isLocal() Check if the current instance has non-UTC timezone. + * @method bool isValid() Check if the current instance is a valid date. + * @method bool isDST() Check if the current instance is in a daylight saving time. + * @method bool isSunday() Checks if the instance day is sunday. + * @method bool isMonday() Checks if the instance day is monday. + * @method bool isTuesday() Checks if the instance day is tuesday. + * @method bool isWednesday() Checks if the instance day is wednesday. + * @method bool isThursday() Checks if the instance day is thursday. + * @method bool isFriday() Checks if the instance day is friday. + * @method bool isSaturday() Checks if the instance day is saturday. + * @method bool isSameYear(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentYear() Checks if the instance is in the same year as the current moment. + * @method bool isNextYear() Checks if the instance is in the same year as the current moment next year. + * @method bool isLastYear() Checks if the instance is in the same year as the current moment last year. + * @method bool isSameWeek(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentWeek() Checks if the instance is in the same week as the current moment. + * @method bool isNextWeek() Checks if the instance is in the same week as the current moment next week. + * @method bool isLastWeek() Checks if the instance is in the same week as the current moment last week. + * @method bool isSameDay(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentDay() Checks if the instance is in the same day as the current moment. + * @method bool isNextDay() Checks if the instance is in the same day as the current moment next day. + * @method bool isLastDay() Checks if the instance is in the same day as the current moment last day. + * @method bool isSameHour(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentHour() Checks if the instance is in the same hour as the current moment. + * @method bool isNextHour() Checks if the instance is in the same hour as the current moment next hour. + * @method bool isLastHour() Checks if the instance is in the same hour as the current moment last hour. + * @method bool isSameMinute(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMinute() Checks if the instance is in the same minute as the current moment. + * @method bool isNextMinute() Checks if the instance is in the same minute as the current moment next minute. + * @method bool isLastMinute() Checks if the instance is in the same minute as the current moment last minute. + * @method bool isSameSecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentSecond() Checks if the instance is in the same second as the current moment. + * @method bool isNextSecond() Checks if the instance is in the same second as the current moment next second. + * @method bool isLastSecond() Checks if the instance is in the same second as the current moment last second. + * @method bool isSameMicro(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMicro() Checks if the instance is in the same microsecond as the current moment. + * @method bool isNextMicro() Checks if the instance is in the same microsecond as the current moment next microsecond. + * @method bool isLastMicro() Checks if the instance is in the same microsecond as the current moment last microsecond. + * @method bool isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMicrosecond() Checks if the instance is in the same microsecond as the current moment. + * @method bool isNextMicrosecond() Checks if the instance is in the same microsecond as the current moment next microsecond. + * @method bool isLastMicrosecond() Checks if the instance is in the same microsecond as the current moment last microsecond. + * @method bool isCurrentMonth() Checks if the instance is in the same month as the current moment. + * @method bool isNextMonth() Checks if the instance is in the same month as the current moment next month. + * @method bool isLastMonth() Checks if the instance is in the same month as the current moment last month. + * @method bool isCurrentQuarter() Checks if the instance is in the same quarter as the current moment. + * @method bool isNextQuarter() Checks if the instance is in the same quarter as the current moment next quarter. + * @method bool isLastQuarter() Checks if the instance is in the same quarter as the current moment last quarter. + * @method bool isSameDecade(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentDecade() Checks if the instance is in the same decade as the current moment. + * @method bool isNextDecade() Checks if the instance is in the same decade as the current moment next decade. + * @method bool isLastDecade() Checks if the instance is in the same decade as the current moment last decade. + * @method bool isSameCentury(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentCentury() Checks if the instance is in the same century as the current moment. + * @method bool isNextCentury() Checks if the instance is in the same century as the current moment next century. + * @method bool isLastCentury() Checks if the instance is in the same century as the current moment last century. + * @method bool isSameMillennium(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMillennium() Checks if the instance is in the same millennium as the current moment. + * @method bool isNextMillennium() Checks if the instance is in the same millennium as the current moment next millennium. + * @method bool isLastMillennium() Checks if the instance is in the same millennium as the current moment last millennium. + * @method $this years(int $value) Set current instance year to the given value. + * @method $this year(int $value) Set current instance year to the given value. + * @method $this setYears(int $value) Set current instance year to the given value. + * @method $this setYear(int $value) Set current instance year to the given value. + * @method $this months(int $value) Set current instance month to the given value. + * @method $this month(int $value) Set current instance month to the given value. + * @method $this setMonths(int $value) Set current instance month to the given value. + * @method $this setMonth(int $value) Set current instance month to the given value. + * @method $this days(int $value) Set current instance day to the given value. + * @method $this day(int $value) Set current instance day to the given value. + * @method $this setDays(int $value) Set current instance day to the given value. + * @method $this setDay(int $value) Set current instance day to the given value. + * @method $this hours(int $value) Set current instance hour to the given value. + * @method $this hour(int $value) Set current instance hour to the given value. + * @method $this setHours(int $value) Set current instance hour to the given value. + * @method $this setHour(int $value) Set current instance hour to the given value. + * @method $this minutes(int $value) Set current instance minute to the given value. + * @method $this minute(int $value) Set current instance minute to the given value. + * @method $this setMinutes(int $value) Set current instance minute to the given value. + * @method $this setMinute(int $value) Set current instance minute to the given value. + * @method $this seconds(int $value) Set current instance second to the given value. + * @method $this second(int $value) Set current instance second to the given value. + * @method $this setSeconds(int $value) Set current instance second to the given value. + * @method $this setSecond(int $value) Set current instance second to the given value. + * @method $this millis(int $value) Set current instance millisecond to the given value. + * @method $this milli(int $value) Set current instance millisecond to the given value. + * @method $this setMillis(int $value) Set current instance millisecond to the given value. + * @method $this setMilli(int $value) Set current instance millisecond to the given value. + * @method $this milliseconds(int $value) Set current instance millisecond to the given value. + * @method $this millisecond(int $value) Set current instance millisecond to the given value. + * @method $this setMilliseconds(int $value) Set current instance millisecond to the given value. + * @method $this setMillisecond(int $value) Set current instance millisecond to the given value. + * @method $this micros(int $value) Set current instance microsecond to the given value. + * @method $this micro(int $value) Set current instance microsecond to the given value. + * @method $this setMicros(int $value) Set current instance microsecond to the given value. + * @method $this setMicro(int $value) Set current instance microsecond to the given value. + * @method $this microseconds(int $value) Set current instance microsecond to the given value. + * @method $this microsecond(int $value) Set current instance microsecond to the given value. + * @method $this setMicroseconds(int $value) Set current instance microsecond to the given value. + * @method $this setMicrosecond(int $value) Set current instance microsecond to the given value. + * @method $this addYears(int $value = 1) Add years (the $value count passed in) to the instance (using date interval). + * @method $this addYear() Add one year to the instance (using date interval). + * @method $this subYears(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval). + * @method $this subYear() Sub one year to the instance (using date interval). + * @method $this addYearsWithOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this addYearWithOverflow() Add one year to the instance (using date interval) with overflow explicitly allowed. + * @method $this subYearsWithOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this subYearWithOverflow() Sub one year to the instance (using date interval) with overflow explicitly allowed. + * @method $this addYearsWithoutOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addYearWithoutOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subYearsWithoutOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subYearWithoutOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addYearsWithNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addYearWithNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subYearsWithNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subYearWithNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addYearsNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addYearNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subYearsNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subYearNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMonths(int $value = 1) Add months (the $value count passed in) to the instance (using date interval). + * @method $this addMonth() Add one month to the instance (using date interval). + * @method $this subMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval). + * @method $this subMonth() Sub one month to the instance (using date interval). + * @method $this addMonthsWithOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this addMonthWithOverflow() Add one month to the instance (using date interval) with overflow explicitly allowed. + * @method $this subMonthsWithOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this subMonthWithOverflow() Sub one month to the instance (using date interval) with overflow explicitly allowed. + * @method $this addMonthsWithoutOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMonthWithoutOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMonthsWithoutOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMonthWithoutOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMonthsWithNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMonthWithNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMonthsWithNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMonthWithNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMonthsNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMonthNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMonthsNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMonthNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addDays(int $value = 1) Add days (the $value count passed in) to the instance (using date interval). + * @method $this addDay() Add one day to the instance (using date interval). + * @method $this subDays(int $value = 1) Sub days (the $value count passed in) to the instance (using date interval). + * @method $this subDay() Sub one day to the instance (using date interval). + * @method $this addHours(int $value = 1) Add hours (the $value count passed in) to the instance (using date interval). + * @method $this addHour() Add one hour to the instance (using date interval). + * @method $this subHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using date interval). + * @method $this subHour() Sub one hour to the instance (using date interval). + * @method $this addMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using date interval). + * @method $this addMinute() Add one minute to the instance (using date interval). + * @method $this subMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using date interval). + * @method $this subMinute() Sub one minute to the instance (using date interval). + * @method $this addSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using date interval). + * @method $this addSecond() Add one second to the instance (using date interval). + * @method $this subSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using date interval). + * @method $this subSecond() Sub one second to the instance (using date interval). + * @method $this addMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). + * @method $this addMilli() Add one millisecond to the instance (using date interval). + * @method $this subMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). + * @method $this subMilli() Sub one millisecond to the instance (using date interval). + * @method $this addMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). + * @method $this addMillisecond() Add one millisecond to the instance (using date interval). + * @method $this subMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). + * @method $this subMillisecond() Sub one millisecond to the instance (using date interval). + * @method $this addMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). + * @method $this addMicro() Add one microsecond to the instance (using date interval). + * @method $this subMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). + * @method $this subMicro() Sub one microsecond to the instance (using date interval). + * @method $this addMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). + * @method $this addMicrosecond() Add one microsecond to the instance (using date interval). + * @method $this subMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). + * @method $this subMicrosecond() Sub one microsecond to the instance (using date interval). + * @method $this addMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval). + * @method $this addMillennium() Add one millennium to the instance (using date interval). + * @method $this subMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval). + * @method $this subMillennium() Sub one millennium to the instance (using date interval). + * @method $this addMillenniaWithOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this addMillenniumWithOverflow() Add one millennium to the instance (using date interval) with overflow explicitly allowed. + * @method $this subMillenniaWithOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this subMillenniumWithOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly allowed. + * @method $this addMillenniaWithoutOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMillenniumWithoutOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMillenniaWithoutOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMillenniumWithoutOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMillenniaWithNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMillenniumWithNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMillenniaWithNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMillenniumWithNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMillenniaNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMillenniumNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMillenniaNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMillenniumNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval). + * @method $this addCentury() Add one century to the instance (using date interval). + * @method $this subCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval). + * @method $this subCentury() Sub one century to the instance (using date interval). + * @method $this addCenturiesWithOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this addCenturyWithOverflow() Add one century to the instance (using date interval) with overflow explicitly allowed. + * @method $this subCenturiesWithOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this subCenturyWithOverflow() Sub one century to the instance (using date interval) with overflow explicitly allowed. + * @method $this addCenturiesWithoutOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addCenturyWithoutOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subCenturiesWithoutOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subCenturyWithoutOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addCenturiesWithNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addCenturyWithNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subCenturiesWithNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subCenturyWithNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addCenturiesNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addCenturyNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subCenturiesNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subCenturyNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval). + * @method $this addDecade() Add one decade to the instance (using date interval). + * @method $this subDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval). + * @method $this subDecade() Sub one decade to the instance (using date interval). + * @method $this addDecadesWithOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this addDecadeWithOverflow() Add one decade to the instance (using date interval) with overflow explicitly allowed. + * @method $this subDecadesWithOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this subDecadeWithOverflow() Sub one decade to the instance (using date interval) with overflow explicitly allowed. + * @method $this addDecadesWithoutOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addDecadeWithoutOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subDecadesWithoutOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subDecadeWithoutOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addDecadesWithNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addDecadeWithNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subDecadesWithNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subDecadeWithNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addDecadesNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addDecadeNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subDecadesNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subDecadeNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval). + * @method $this addQuarter() Add one quarter to the instance (using date interval). + * @method $this subQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval). + * @method $this subQuarter() Sub one quarter to the instance (using date interval). + * @method $this addQuartersWithOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this addQuarterWithOverflow() Add one quarter to the instance (using date interval) with overflow explicitly allowed. + * @method $this subQuartersWithOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this subQuarterWithOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly allowed. + * @method $this addQuartersWithoutOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addQuarterWithoutOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subQuartersWithoutOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subQuarterWithoutOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addQuartersWithNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addQuarterWithNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subQuartersWithNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subQuarterWithNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addQuartersNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addQuarterNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subQuartersNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subQuarterNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using date interval). + * @method $this addWeek() Add one week to the instance (using date interval). + * @method $this subWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using date interval). + * @method $this subWeek() Sub one week to the instance (using date interval). + * @method $this addWeekdays(int $value = 1) Add weekdays (the $value count passed in) to the instance (using date interval). + * @method $this addWeekday() Add one weekday to the instance (using date interval). + * @method $this subWeekdays(int $value = 1) Sub weekdays (the $value count passed in) to the instance (using date interval). + * @method $this subWeekday() Sub one weekday to the instance (using date interval). + * @method $this addRealMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). + * @method $this addRealMicro() Add one microsecond to the instance (using timestamp). + * @method $this subRealMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). + * @method $this subRealMicro() Sub one microsecond to the instance (using timestamp). + * @method CarbonPeriod microsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. + * @method $this addRealMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). + * @method $this addRealMicrosecond() Add one microsecond to the instance (using timestamp). + * @method $this subRealMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). + * @method $this subRealMicrosecond() Sub one microsecond to the instance (using timestamp). + * @method CarbonPeriod microsecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. + * @method $this addRealMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). + * @method $this addRealMilli() Add one millisecond to the instance (using timestamp). + * @method $this subRealMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). + * @method $this subRealMilli() Sub one millisecond to the instance (using timestamp). + * @method CarbonPeriod millisUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. + * @method $this addRealMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). + * @method $this addRealMillisecond() Add one millisecond to the instance (using timestamp). + * @method $this subRealMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). + * @method $this subRealMillisecond() Sub one millisecond to the instance (using timestamp). + * @method CarbonPeriod millisecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. + * @method $this addRealSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using timestamp). + * @method $this addRealSecond() Add one second to the instance (using timestamp). + * @method $this subRealSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using timestamp). + * @method $this subRealSecond() Sub one second to the instance (using timestamp). + * @method CarbonPeriod secondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given. + * @method $this addRealMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using timestamp). + * @method $this addRealMinute() Add one minute to the instance (using timestamp). + * @method $this subRealMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using timestamp). + * @method $this subRealMinute() Sub one minute to the instance (using timestamp). + * @method CarbonPeriod minutesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given. + * @method $this addRealHours(int $value = 1) Add hours (the $value count passed in) to the instance (using timestamp). + * @method $this addRealHour() Add one hour to the instance (using timestamp). + * @method $this subRealHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using timestamp). + * @method $this subRealHour() Sub one hour to the instance (using timestamp). + * @method CarbonPeriod hoursUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given. + * @method $this addRealDays(int $value = 1) Add days (the $value count passed in) to the instance (using timestamp). + * @method $this addRealDay() Add one day to the instance (using timestamp). + * @method $this subRealDays(int $value = 1) Sub days (the $value count passed in) to the instance (using timestamp). + * @method $this subRealDay() Sub one day to the instance (using timestamp). + * @method CarbonPeriod daysUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given. + * @method $this addRealWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using timestamp). + * @method $this addRealWeek() Add one week to the instance (using timestamp). + * @method $this subRealWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using timestamp). + * @method $this subRealWeek() Sub one week to the instance (using timestamp). + * @method CarbonPeriod weeksUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given. + * @method $this addRealMonths(int $value = 1) Add months (the $value count passed in) to the instance (using timestamp). + * @method $this addRealMonth() Add one month to the instance (using timestamp). + * @method $this subRealMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using timestamp). + * @method $this subRealMonth() Sub one month to the instance (using timestamp). + * @method CarbonPeriod monthsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given. + * @method $this addRealQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using timestamp). + * @method $this addRealQuarter() Add one quarter to the instance (using timestamp). + * @method $this subRealQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using timestamp). + * @method $this subRealQuarter() Sub one quarter to the instance (using timestamp). + * @method CarbonPeriod quartersUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given. + * @method $this addRealYears(int $value = 1) Add years (the $value count passed in) to the instance (using timestamp). + * @method $this addRealYear() Add one year to the instance (using timestamp). + * @method $this subRealYears(int $value = 1) Sub years (the $value count passed in) to the instance (using timestamp). + * @method $this subRealYear() Sub one year to the instance (using timestamp). + * @method CarbonPeriod yearsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given. + * @method $this addRealDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using timestamp). + * @method $this addRealDecade() Add one decade to the instance (using timestamp). + * @method $this subRealDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using timestamp). + * @method $this subRealDecade() Sub one decade to the instance (using timestamp). + * @method CarbonPeriod decadesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given. + * @method $this addRealCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using timestamp). + * @method $this addRealCentury() Add one century to the instance (using timestamp). + * @method $this subRealCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using timestamp). + * @method $this subRealCentury() Sub one century to the instance (using timestamp). + * @method CarbonPeriod centuriesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given. + * @method $this addRealMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using timestamp). + * @method $this addRealMillennium() Add one millennium to the instance (using timestamp). + * @method $this subRealMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using timestamp). + * @method $this subRealMillennium() Sub one millennium to the instance (using timestamp). + * @method CarbonPeriod millenniaUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given. + * @method $this roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. + * @method $this roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. + * @method $this floorYear(float $precision = 1) Truncate the current instance year with given precision. + * @method $this floorYears(float $precision = 1) Truncate the current instance year with given precision. + * @method $this ceilYear(float $precision = 1) Ceil the current instance year with given precision. + * @method $this ceilYears(float $precision = 1) Ceil the current instance year with given precision. + * @method $this roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. + * @method $this roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. + * @method $this floorMonth(float $precision = 1) Truncate the current instance month with given precision. + * @method $this floorMonths(float $precision = 1) Truncate the current instance month with given precision. + * @method $this ceilMonth(float $precision = 1) Ceil the current instance month with given precision. + * @method $this ceilMonths(float $precision = 1) Ceil the current instance month with given precision. + * @method $this roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method $this roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method $this floorDay(float $precision = 1) Truncate the current instance day with given precision. + * @method $this floorDays(float $precision = 1) Truncate the current instance day with given precision. + * @method $this ceilDay(float $precision = 1) Ceil the current instance day with given precision. + * @method $this ceilDays(float $precision = 1) Ceil the current instance day with given precision. + * @method $this roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. + * @method $this roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. + * @method $this floorHour(float $precision = 1) Truncate the current instance hour with given precision. + * @method $this floorHours(float $precision = 1) Truncate the current instance hour with given precision. + * @method $this ceilHour(float $precision = 1) Ceil the current instance hour with given precision. + * @method $this ceilHours(float $precision = 1) Ceil the current instance hour with given precision. + * @method $this roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. + * @method $this roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. + * @method $this floorMinute(float $precision = 1) Truncate the current instance minute with given precision. + * @method $this floorMinutes(float $precision = 1) Truncate the current instance minute with given precision. + * @method $this ceilMinute(float $precision = 1) Ceil the current instance minute with given precision. + * @method $this ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision. + * @method $this roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. + * @method $this roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. + * @method $this floorSecond(float $precision = 1) Truncate the current instance second with given precision. + * @method $this floorSeconds(float $precision = 1) Truncate the current instance second with given precision. + * @method $this ceilSecond(float $precision = 1) Ceil the current instance second with given precision. + * @method $this ceilSeconds(float $precision = 1) Ceil the current instance second with given precision. + * @method $this roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. + * @method $this roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. + * @method $this floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision. + * @method $this floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision. + * @method $this ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision. + * @method $this ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision. + * @method $this roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. + * @method $this roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. + * @method $this floorCentury(float $precision = 1) Truncate the current instance century with given precision. + * @method $this floorCenturies(float $precision = 1) Truncate the current instance century with given precision. + * @method $this ceilCentury(float $precision = 1) Ceil the current instance century with given precision. + * @method $this ceilCenturies(float $precision = 1) Ceil the current instance century with given precision. + * @method $this roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. + * @method $this roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. + * @method $this floorDecade(float $precision = 1) Truncate the current instance decade with given precision. + * @method $this floorDecades(float $precision = 1) Truncate the current instance decade with given precision. + * @method $this ceilDecade(float $precision = 1) Ceil the current instance decade with given precision. + * @method $this ceilDecades(float $precision = 1) Ceil the current instance decade with given precision. + * @method $this roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. + * @method $this roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. + * @method $this floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision. + * @method $this floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision. + * @method $this ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision. + * @method $this ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision. + * @method $this roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. + * @method $this roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. + * @method $this floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision. + * @method $this floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision. + * @method $this ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision. + * @method $this ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision. + * @method $this roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. + * @method $this roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. + * @method $this floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision. + * @method $this floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision. + * @method $this ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision. + * @method $this ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision. + * @method string shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method static static|false createFromFormat(string $format, string $time, DateTimeZone|string|false|null $timezone = null) Parse a string into a new Carbon object according to the specified format. + * @method static static __set_state(array $array) https://php.net/manual/en/datetime.set-state.php + * * */ - class Carbon { + class Carbon { } - + } -namespace Jenssegers\Date { - - /** - * - * + namespace Jenssegers\Date { + /** */ - class Date { + class Date { } - + } -namespace App\Services { - - /** - * - * + namespace App\Helper { + /** */ - class HTMLHelper { + class HTMLHelper { } - - /** - * - * - */ - class Util { - - } - + } -namespace Maatwebsite\Excel\Facades { - - /** - * - * + namespace App\Services { + /** */ - class Excel { - - /** - * - * + class Util { + + } + +} + + namespace Maatwebsite\Excel\Facades { + /** + */ + class Excel { + /** * @param object $export * @param string|null $fileName * @param string $writerType * @param array $headers + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse * @throws \PhpOffice\PhpSpreadsheet\Exception * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception - * @return \Maatwebsite\Excel\BinaryFileResponse - * @static + * @static */ public static function download($export, $fileName, $writerType = null, $headers = []) { /** @var \Maatwebsite\Excel\Excel $instance */ return $instance->download($export, $fileName, $writerType, $headers); } - - /** - * - * + /** + * @param string|null $disk Fallback for usage with named properties * @param object $export * @param string $filePath - * @param string|null $disk + * @param string|null $diskName * @param string $writerType * @param mixed $diskOptions + * @return bool * @throws \PhpOffice\PhpSpreadsheet\Exception * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception - * @return bool - * @static + * @static */ - public static function store($export, $filePath, $diskName = null, $writerType = null, $diskOptions = []) + public static function store($export, $filePath, $diskName = null, $writerType = null, $diskOptions = [], $disk = null) { /** @var \Maatwebsite\Excel\Excel $instance */ - return $instance->store($export, $filePath, $diskName, $writerType, $diskOptions); + return $instance->store($export, $filePath, $diskName, $writerType, $diskOptions, $disk); } - - /** - * - * + /** * @param object $export * @param string $filePath * @param string|null $disk * @param string $writerType * @param mixed $diskOptions - * @return \Maatwebsite\Excel\PendingDispatch - * @static + * @return \Illuminate\Foundation\Bus\PendingDispatch + * @static */ public static function queue($export, $filePath, $disk = null, $writerType = null, $diskOptions = []) { /** @var \Maatwebsite\Excel\Excel $instance */ return $instance->queue($export, $filePath, $disk, $writerType, $diskOptions); } - - /** - * - * + /** * @param object $export * @param string $writerType - * @return string - * @static + * @return string + * @static */ public static function raw($export, $writerType) { /** @var \Maatwebsite\Excel\Excel $instance */ return $instance->raw($export, $writerType); } - - /** - * - * + /** * @param object $import - * @param string|\Maatwebsite\Excel\UploadedFile $filePath + * @param string|\Symfony\Component\HttpFoundation\File\UploadedFile $filePath * @param string|null $disk * @param string|null $readerType - * @return \Maatwebsite\Excel\Reader|\Maatwebsite\Excel\PendingDispatch - * @static + * @return \Maatwebsite\Excel\Reader|\Illuminate\Foundation\Bus\PendingDispatch + * @static */ public static function import($import, $filePath, $disk = null, $readerType = null) { /** @var \Maatwebsite\Excel\Excel $instance */ return $instance->import($import, $filePath, $disk, $readerType); } - - /** - * - * + /** * @param object $import - * @param string|\Maatwebsite\Excel\UploadedFile $filePath + * @param string|\Symfony\Component\HttpFoundation\File\UploadedFile $filePath * @param string|null $disk * @param string|null $readerType - * @return array - * @static + * @return array + * @static */ public static function toArray($import, $filePath, $disk = null, $readerType = null) { /** @var \Maatwebsite\Excel\Excel $instance */ return $instance->toArray($import, $filePath, $disk, $readerType); } - - /** - * - * + /** * @param object $import - * @param string|\Maatwebsite\Excel\UploadedFile $filePath + * @param string|\Symfony\Component\HttpFoundation\File\UploadedFile $filePath * @param string|null $disk * @param string|null $readerType - * @return \Maatwebsite\Excel\Collection - * @static + * @return \Illuminate\Support\Collection + * @static */ public static function toCollection($import, $filePath, $disk = null, $readerType = null) { /** @var \Maatwebsite\Excel\Excel $instance */ return $instance->toCollection($import, $filePath, $disk, $readerType); } - - /** - * - * - * @param \Maatwebsite\Excel\ShouldQueue $import - * @param string|\Maatwebsite\Excel\UploadedFile $filePath + /** + * @param \Illuminate\Contracts\Queue\ShouldQueue $import + * @param string|\Symfony\Component\HttpFoundation\File\UploadedFile $filePath * @param string|null $disk * @param string $readerType - * @return \Maatwebsite\Excel\PendingDispatch - * @static + * @return \Illuminate\Foundation\Bus\PendingDispatch + * @static */ public static function queueImport($import, $filePath, $disk = null, $readerType = null) { /** @var \Maatwebsite\Excel\Excel $instance */ return $instance->queueImport($import, $filePath, $disk, $readerType); } - - /** - * + /** + * Register a custom macro. * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Maatwebsite\Excel\Excel::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) + { + \Maatwebsite\Excel\Excel::mixin($mixin, $replace); + } + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Maatwebsite\Excel\Excel::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Maatwebsite\Excel\Excel::flushMacros(); + } + /** * @param string $concern * @param callable $handler * @param string $event - * @static + * @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 + * @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 + * @return void + * @static */ public static function doNotMatchByRegex() { /** @var \Maatwebsite\Excel\Fakes\ExcelFake $instance */ $instance->doNotMatchByRegex(); } - - /** - * - * + /** * @param string $fileName * @param callable|null $callback - * @static + * @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 + * @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 + * @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 + * @static */ public static function assertImported($filePath, $disk = null, $callback = null) { @@ -19159,441 +19527,587 @@ namespace Maatwebsite\Excel\Facades { } } - + } -namespace Yajra\DataTables\Facades { - - /** - * - * + namespace Yajra\DataTables\Facades { + /** * @mixin \Yajra\DataTables\DataTables * @see \Yajra\DataTables\DataTables */ - class DataTables { - - /** + class DataTables { + /** * Make a DataTable instance from source. - * + * * Alias of make for backward compatibility. * * @param mixed $source - * @return mixed + * @return mixed * @throws \Exception - * @static + * @static */ public static function of($source) { return \Yajra\DataTables\DataTables::of($source); } - - /** + /** * Make a DataTable instance from source. * * @param mixed $source - * @return mixed + * @return mixed * @throws \Exception - * @static + * @static */ public static function make($source) { return \Yajra\DataTables\DataTables::make($source); } - - /** + /** * Get request object. * - * @return \Yajra\DataTables\Utilities\Request - * @static + * @return \Yajra\DataTables\Utilities\Request + * @static */ public static function getRequest() { /** @var \Yajra\DataTables\DataTables $instance */ return $instance->getRequest(); } - - /** + /** * Get config instance. * - * @return \Yajra\DataTables\Utilities\Config - * @static + * @return \Yajra\DataTables\Utilities\Config + * @static */ public static function getConfig() { /** @var \Yajra\DataTables\DataTables $instance */ return $instance->getConfig(); } - - /** - * - * + /** * @deprecated Please use query() instead, this method will be removed in a next version. * @param $builder - * @return \Yajra\DataTables\QueryDataTable - * @static + * @return \Yajra\DataTables\QueryDataTable + * @static */ public static function queryBuilder($builder) { /** @var \Yajra\DataTables\DataTables $instance */ return $instance->queryBuilder($builder); } - - /** + /** * DataTables using Query. * * @param \Illuminate\Database\Query\Builder|mixed $builder - * @return \Yajra\DataTables\DataTableAbstract|\Yajra\DataTables\QueryDataTable - * @static + * @return \Yajra\DataTables\QueryDataTable|\Yajra\DataTables\DataTableAbstract + * @static */ public static function query($builder) { /** @var \Yajra\DataTables\DataTables $instance */ return $instance->query($builder); } - - /** + /** * DataTables using Eloquent Builder. * * @param \Illuminate\Database\Eloquent\Builder|mixed $builder - * @return \Yajra\DataTables\DataTableAbstract|\Yajra\DataTables\EloquentDataTable - * @static + * @return \Yajra\DataTables\EloquentDataTable|\Yajra\DataTables\DataTableAbstract + * @static */ public static function eloquent($builder) { /** @var \Yajra\DataTables\DataTables $instance */ return $instance->eloquent($builder); } - - /** + /** * DataTables using Collection. * * @param \Illuminate\Support\Collection|array $collection - * @return \Yajra\DataTables\DataTableAbstract|\Yajra\DataTables\CollectionDataTable - * @static + * @return \Yajra\DataTables\CollectionDataTable|\Yajra\DataTables\DataTableAbstract + * @static */ public static function collection($collection) { /** @var \Yajra\DataTables\DataTables $instance */ return $instance->collection($collection); } - - /** + /** * DataTables using Collection. * * @param \Illuminate\Http\Resources\Json\AnonymousResourceCollection|array $collection - * @return \Yajra\DataTables\DataTableAbstract|\Yajra\DataTables\ApiResourceDataTable - * @static + * @return \Yajra\DataTables\ApiResourceDataTable|\Yajra\DataTables\DataTableAbstract + * @static */ public static function resource($resource) { /** @var \Yajra\DataTables\DataTables $instance */ return $instance->resource($resource); } - - /** + /** * Get html builder instance. * - * @return \Yajra\DataTables\Html\Builder + * @return \Yajra\DataTables\Html\Builder * @throws \Exception - * @static + * @static */ public static function getHtmlBuilder() { /** @var \Yajra\DataTables\DataTables $instance */ return $instance->getHtmlBuilder(); } - - /** + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Yajra\DataTables\DataTables::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Yajra\DataTables\DataTables::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Yajra\DataTables\DataTables::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Yajra\DataTables\DataTables::flushMacros(); } } - + } -namespace Barryvdh\DomPDF { - - /** - * - * + namespace Barryvdh\DomPDF\Facade { + /** + * @method static BasePDF setBaseHost(string $baseHost) + * @method static BasePDF setBasePath(string $basePath) + * @method static BasePDF setCanvas(\Dompdf\Canvas $canvas) + * @method static BasePDF setCallbacks(array $callbacks) + * @method static BasePDF setCss(\Dompdf\Css\Stylesheet $css) + * @method static BasePDF setDefaultView(string $defaultView, array $options) + * @method static BasePDF setDom(\DOMDocument $dom) + * @method static BasePDF setFontMetrics(\Dompdf\FontMetrics $fontMetrics) + * @method static BasePDF setHttpContext(resource|array $httpContext) + * @method static BasePDF setPaper(string|float[] $paper, string $orientation = 'portrait') + * @method static BasePDF setProtocol(string $protocol) + * @method static BasePDF setTree(\Dompdf\Frame\FrameTree $tree) */ - class Facade { - - /** + class Pdf { + /** * Get the DomPDF instance * - * @return \Barryvdh\DomPDF\Dompdf - * @static + * @static */ public static function getDomPDF() { /** @var \Barryvdh\DomPDF\PDF $instance */ return $instance->getDomPDF(); } - - /** - * Set the paper size (default A4) - * - * @param string $paper - * @param string $orientation - * @return \Barryvdh\DomPDF\PDF - * @static - */ - public static function setPaper($paper, $orientation = 'portrait') - { - /** @var \Barryvdh\DomPDF\PDF $instance */ - return $instance->setPaper($paper, $orientation); - } - - /** + /** * Show or hide warnings * - * @param bool $warnings - * @return \Barryvdh\DomPDF\PDF - * @static + * @static */ public static function setWarnings($warnings) { /** @var \Barryvdh\DomPDF\PDF $instance */ return $instance->setWarnings($warnings); } - - /** + /** * Load a HTML string * - * @param string $string - * @param string $encoding Not used yet - * @return static - * @static + * @param string|null $encoding Not used yet + * @static */ public static function loadHTML($string, $encoding = null) { /** @var \Barryvdh\DomPDF\PDF $instance */ return $instance->loadHTML($string, $encoding); } - - /** + /** * Load a HTML file * - * @param string $file - * @return static - * @static + * @static */ public static function loadFile($file) { /** @var \Barryvdh\DomPDF\PDF $instance */ return $instance->loadFile($file); } - - /** + /** * Add metadata info * - * @param array $info - * @return static - * @static + * @param array $info + * @static */ public static function addInfo($info) { /** @var \Barryvdh\DomPDF\PDF $instance */ return $instance->addInfo($info); } - - /** + /** * Load a View and convert to HTML * - * @param string $view - * @param array $data - * @param array $mergeData - * @param string $encoding Not used yet - * @return static - * @static + * @param array $data + * @param array $mergeData + * @param string|null $encoding Not used yet + * @static */ public static function loadView($view, $data = [], $mergeData = [], $encoding = null) { /** @var \Barryvdh\DomPDF\PDF $instance */ return $instance->loadView($view, $data, $mergeData, $encoding); } - - /** - * Set/Change an option in DomPdf + /** + * Set/Change an option (or array of options) in Dompdf * - * @param array $options - * @return static - * @static + * @param array|string $attribute + * @param null|mixed $value + * @static */ - public static function setOptions($options) + public static function setOption($attribute, $value = null) { /** @var \Barryvdh\DomPDF\PDF $instance */ - return $instance->setOptions($options); + return $instance->setOption($attribute, $value); } - - /** + /** + * Replace all the Options from DomPDF + * + * @param array $options + * @static + */ + public static function setOptions($options, $mergeWithDefaults = false) + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->setOptions($options, $mergeWithDefaults); + } + /** * Output the PDF as a string. * + * The options parameter controls the output. Accepted options are: + * + * 'compress' = > 1 or 0 - apply content stream compression, this is + * on (1) by default + * + * @param array $options * @return string The rendered PDF as string - * @static + * @static */ - public static function output() + public static function output($options = []) { /** @var \Barryvdh\DomPDF\PDF $instance */ - return $instance->output(); + return $instance->output($options); } - - /** + /** * Save the PDF to a file * - * @param $filename - * @return static - * @static + * @static */ - public static function save($filename) + public static function save($filename, $disk = null) { /** @var \Barryvdh\DomPDF\PDF $instance */ - return $instance->save($filename); + return $instance->save($filename, $disk); } - - /** + /** * Make the PDF downloadable by the user * - * @param string $filename - * @return \Illuminate\Http\Response - * @static + * @static */ public static function download($filename = 'document.pdf') { /** @var \Barryvdh\DomPDF\PDF $instance */ return $instance->download($filename); } - - /** + /** * Return a response with the PDF to show in the browser * - * @param string $filename - * @return \Illuminate\Http\Response - * @static + * @static */ public static function stream($filename = 'document.pdf') { /** @var \Barryvdh\DomPDF\PDF $instance */ return $instance->stream($filename); } - - /** - * + /** + * Render the PDF * - * @static + * @static */ - public static function setEncryption($password) + public static function render() { /** @var \Barryvdh\DomPDF\PDF $instance */ - return $instance->setEncryption($password); + return $instance->render(); + } + /** + * @param array $pc + * @static + */ + public static function setEncryption($password, $ownerpassword = '', $pc = []) + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->setEncryption($password, $ownerpassword, $pc); } } - + /** + * @method static BasePDF setBaseHost(string $baseHost) + * @method static BasePDF setBasePath(string $basePath) + * @method static BasePDF setCanvas(\Dompdf\Canvas $canvas) + * @method static BasePDF setCallbacks(array $callbacks) + * @method static BasePDF setCss(\Dompdf\Css\Stylesheet $css) + * @method static BasePDF setDefaultView(string $defaultView, array $options) + * @method static BasePDF setDom(\DOMDocument $dom) + * @method static BasePDF setFontMetrics(\Dompdf\FontMetrics $fontMetrics) + * @method static BasePDF setHttpContext(resource|array $httpContext) + * @method static BasePDF setPaper(string|float[] $paper, string $orientation = 'portrait') + * @method static BasePDF setProtocol(string $protocol) + * @method static BasePDF setTree(\Dompdf\Frame\FrameTree $tree) + */ + class Pdf { + /** + * Get the DomPDF instance + * + * @static + */ + public static function getDomPDF() + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->getDomPDF(); + } + /** + * Show or hide warnings + * + * @static + */ + public static function setWarnings($warnings) + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->setWarnings($warnings); + } + /** + * Load a HTML string + * + * @param string|null $encoding Not used yet + * @static + */ + public static function loadHTML($string, $encoding = null) + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->loadHTML($string, $encoding); + } + /** + * Load a HTML file + * + * @static + */ + public static function loadFile($file) + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->loadFile($file); + } + /** + * Add metadata info + * + * @param array $info + * @static + */ + public static function addInfo($info) + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->addInfo($info); + } + /** + * Load a View and convert to HTML + * + * @param array $data + * @param array $mergeData + * @param string|null $encoding Not used yet + * @static + */ + public static function loadView($view, $data = [], $mergeData = [], $encoding = null) + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->loadView($view, $data, $mergeData, $encoding); + } + /** + * Set/Change an option (or array of options) in Dompdf + * + * @param array|string $attribute + * @param null|mixed $value + * @static + */ + public static function setOption($attribute, $value = null) + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->setOption($attribute, $value); + } + /** + * Replace all the Options from DomPDF + * + * @param array $options + * @static + */ + public static function setOptions($options, $mergeWithDefaults = false) + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->setOptions($options, $mergeWithDefaults); + } + /** + * Output the PDF as a string. + * + * The options parameter controls the output. Accepted options are: + * + * 'compress' = > 1 or 0 - apply content stream compression, this is + * on (1) by default + * + * @param array $options + * @return string The rendered PDF as string + * @static + */ + public static function output($options = []) + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->output($options); + } + /** + * Save the PDF to a file + * + * @static + */ + public static function save($filename, $disk = null) + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->save($filename, $disk); + } + /** + * Make the PDF downloadable by the user + * + * @static + */ + public static function download($filename = 'document.pdf') + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->download($filename); + } + /** + * Return a response with the PDF to show in the browser + * + * @static + */ + public static function stream($filename = 'document.pdf') + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->stream($filename); + } + /** + * Render the PDF + * + * @static + */ + public static function render() + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->render(); + } + /** + * @param array $pc + * @static + */ + public static function setEncryption($password, $ownerpassword = '', $pc = []) + { + /** @var \Barryvdh\DomPDF\PDF $instance */ + return $instance->setEncryption($password, $ownerpassword, $pc); + } + + } + } -namespace Barryvdh\Debugbar { - - /** - * - * - * @method static void alert(string $message) - * @method static void critical(string $message) - * @method static void debug(string $message) - * @method static void emergency(string $message) - * @method static void error(string $message) - * @method static void info(string $message) - * @method static void log(string $message) - * @method static void notice(string $message) - * @method static void warning(string $message) + namespace Barryvdh\Debugbar\Facades { + /** + * @method static void alert(mixed $message) + * @method static void critical(mixed $message) + * @method static void debug(mixed $message) + * @method static void emergency(mixed $message) + * @method static void error(mixed $message) + * @method static void info(mixed $message) + * @method static void log(mixed $message) + * @method static void notice(mixed $message) + * @method static void warning(mixed $message) * @see \Barryvdh\Debugbar\LaravelDebugbar */ - class Facade { - - /** + class Debugbar { + /** * Enable the Debugbar and boot, if not already booted. * - * @static + * @static */ public static function enable() { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->enable(); } - - /** + /** * Boot the debugbar (add collectors, renderer and listener) * - * @static + * @static */ public static function boot() { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->boot(); } - - /** - * - * - * @static + /** + * @static */ public static function shouldCollect($name, $default = false) { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->shouldCollect($name, $default); } - - /** + /** * Adds a data collector * - * @param \Barryvdh\Debugbar\DataCollectorInterface $collector + * @param \DebugBar\DataCollector\DataCollectorInterface $collector * @throws DebugBarException - * @return \Barryvdh\Debugbar\LaravelDebugbar - * @static + * @return \Barryvdh\Debugbar\LaravelDebugbar + * @static */ public static function addCollector($collector) { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->addCollector($collector); } - - /** + /** * Handle silenced errors * * @param $level @@ -19602,1494 +20116,2607 @@ namespace Barryvdh\Debugbar { * @param int $line * @param array $context * @throws \ErrorException - * @static + * @static */ public static function handleError($level, $message, $file = '', $line = 0, $context = []) { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->handleError($level, $message, $file, $line, $context); } - - /** + /** * Starts a measure * * @param string $name Internal name, used to stop the measure * @param string $label Public name - * @static + * @static */ public static function startMeasure($name, $label = null) { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->startMeasure($name, $label); } - - /** + /** * Stops a measure * * @param string $name - * @static + * @static */ public static function stopMeasure($name) { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->stopMeasure($name); } - - /** + /** * Adds an exception to be profiled in the debug bar * * @param \Exception $e * @deprecated in favor of addThrowable - * @static + * @static */ public static function addException($e) { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->addException($e); } - - /** + /** * Adds an exception to be profiled in the debug bar * * @param \Exception $e - * @static + * @static */ public static function addThrowable($e) { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->addThrowable($e); } - - /** + /** * Returns a JavascriptRenderer for this instance * * @param string $baseUrl * @param string $basePathng - * @return \Barryvdh\Debugbar\JavascriptRenderer - * @static + * @return \Barryvdh\Debugbar\JavascriptRenderer + * @static */ public static function getJavascriptRenderer($baseUrl = null, $basePath = null) { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->getJavascriptRenderer($baseUrl, $basePath); } - - /** + /** * Modify the response and inject the debugbar (or data in headers) * * @param \Symfony\Component\HttpFoundation\Request $request * @param \Symfony\Component\HttpFoundation\Response $response - * @return \Symfony\Component\HttpFoundation\Response - * @static + * @return \Symfony\Component\HttpFoundation\Response + * @static */ public static function modifyResponse($request, $response) { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->modifyResponse($request, $response); } - - /** + /** * Check if the Debugbar is enabled * - * @return boolean - * @static + * @return boolean + * @static */ public static function isEnabled() { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->isEnabled(); } - - /** + /** * Collects the data from the collectors * - * @return array - * @static + * @return array + * @static */ public static function collect() { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->collect(); } - - /** + /** * Injects the web debug toolbar into the given Response. * * @param \Symfony\Component\HttpFoundation\Response $response A Response instance * Based on https://github.com/symfony/WebProfilerBundle/blob/master/EventListener/WebDebugToolbarListener.php - * @static + * @static */ public static function injectDebugbar($response) { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->injectDebugbar($response); } - - /** + /** * Disable the Debugbar * - * @static + * @static */ public static function disable() { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->disable(); } - - /** + /** * Adds a measure * * @param string $label * @param float $start * @param float $end - * @static + * @static */ public static function addMeasure($label, $start, $end) { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->addMeasure($label, $start, $end); } - - /** + /** * Utility function to measure the execution of a Closure * * @param string $label * @param \Closure $closure - * @static + * @return mixed + * @static */ public static function measure($label, $closure) { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->measure($label, $closure); } - - /** + /** * Collect data in a CLI request * - * @return array - * @static + * @return array + * @static */ public static function collectConsole() { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->collectConsole(); } - - /** + /** * Adds a message to the MessagesCollector - * + * * A message can be anything from an object to a string * * @param mixed $message * @param string $label - * @static + * @static */ public static function addMessage($message, $label = 'info') { /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->addMessage($message, $label); } - - /** + /** * Checks if a data collector has been added * * @param string $name - * @return boolean - * @static + * @return boolean + * @static */ public static function hasCollector($name) - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->hasCollector($name); } - - /** + /** * Returns a data collector * * @param string $name - * @return \DebugBar\DataCollectorInterface + * @return \DebugBar\DataCollector\DataCollectorInterface * @throws DebugBarException - * @static + * @static */ public static function getCollector($name) - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->getCollector($name); } - - /** + /** * Returns an array of all data collectors * - * @return \DebugBar\array[DataCollectorInterface] - * @static + * @return array[DataCollectorInterface] + * @static */ public static function getCollectors() - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->getCollectors(); } - - /** + /** * Sets the request id generator * * @param \DebugBar\RequestIdGeneratorInterface $generator - * @return \Barryvdh\Debugbar\LaravelDebugbar - * @static + * @return \Barryvdh\Debugbar\LaravelDebugbar + * @static */ public static function setRequestIdGenerator($generator) - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->setRequestIdGenerator($generator); } - - /** - * - * - * @return \DebugBar\RequestIdGeneratorInterface - * @static + /** + * @return \DebugBar\RequestIdGeneratorInterface + * @static */ public static function getRequestIdGenerator() - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->getRequestIdGenerator(); } - - /** + /** * Returns the id of the current request * - * @return string - * @static + * @return string + * @static */ public static function getCurrentRequestId() - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->getCurrentRequestId(); } - - /** + /** * Sets the storage backend to use to store the collected data * * @param \DebugBar\StorageInterface $storage - * @return \Barryvdh\Debugbar\LaravelDebugbar - * @static + * @return \Barryvdh\Debugbar\LaravelDebugbar + * @static */ public static function setStorage($storage = null) - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->setStorage($storage); } - - /** - * - * - * @return \DebugBar\StorageInterface - * @static + /** + * @return \DebugBar\StorageInterface + * @static */ public static function getStorage() - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->getStorage(); } - - /** + /** * Checks if the data will be persisted * - * @return boolean - * @static + * @return boolean + * @static */ public static function isDataPersisted() - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->isDataPersisted(); } - - /** + /** * Sets the HTTP driver * * @param \DebugBar\HttpDriverInterface $driver - * @return \Barryvdh\Debugbar\LaravelDebugbar - * @static + * @return \Barryvdh\Debugbar\LaravelDebugbar + * @static */ public static function setHttpDriver($driver) - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->setHttpDriver($driver); } - - /** + /** * Returns the HTTP driver - * + * * If no http driver where defined, a PhpHttpDriver is automatically created * - * @return \DebugBar\HttpDriverInterface - * @static + * @return \DebugBar\HttpDriverInterface + * @static */ public static function getHttpDriver() - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->getHttpDriver(); } - - /** + /** * Returns collected data - * + * * Will collect the data if none have been collected yet * - * @return array - * @static + * @return array + * @static */ public static function getData() - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->getData(); } - - /** + /** * Returns an array of HTTP headers containing the data * * @param string $headerName * @param integer $maxHeaderLength - * @return array - * @static + * @return array + * @static */ public static function getDataAsHeaders($headerName = 'phpdebugbar', $maxHeaderLength = 4096, $maxTotalHeaderLength = 250000) - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->getDataAsHeaders($headerName, $maxHeaderLength, $maxTotalHeaderLength); } - - /** + /** * Sends the data through the HTTP headers * * @param bool $useOpenHandler * @param string $headerName * @param integer $maxHeaderLength - * @return \Barryvdh\Debugbar\LaravelDebugbar - * @static + * @return \Barryvdh\Debugbar\LaravelDebugbar + * @static */ public static function sendDataInHeaders($useOpenHandler = null, $headerName = 'phpdebugbar', $maxHeaderLength = 4096) - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->sendDataInHeaders($useOpenHandler, $headerName, $maxHeaderLength); } - - /** + /** * Stacks the data in the session for later rendering * - * @static + * @static */ public static function stackData() - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->stackData(); } - - /** + /** * Checks if there is stacked data in the session * - * @return boolean - * @static + * @return boolean + * @static */ public static function hasStackedData() - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->hasStackedData(); } - - /** + /** * Returns the data stacked in the session * * @param boolean $delete Whether to delete the data in the session - * @return array - * @static + * @return array + * @static */ public static function getStackedData($delete = true) - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->getStackedData($delete); } - - /** + /** * Sets the key to use in the $_SESSION array * * @param string $ns - * @return \Barryvdh\Debugbar\LaravelDebugbar - * @static + * @return \Barryvdh\Debugbar\LaravelDebugbar + * @static */ public static function setStackDataSessionNamespace($ns) - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->setStackDataSessionNamespace($ns); } - - /** + /** * Returns the key used in the $_SESSION array * - * @return string - * @static + * @return string + * @static */ public static function getStackDataSessionNamespace() - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->getStackDataSessionNamespace(); } - - /** + /** * Sets whether to only use the session to store stacked data even * if a storage is enabled * * @param boolean $enabled - * @return \Barryvdh\Debugbar\LaravelDebugbar - * @static + * @return \Barryvdh\Debugbar\LaravelDebugbar + * @static */ public static function setStackAlwaysUseSessionStorage($enabled = true) - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->setStackAlwaysUseSessionStorage($enabled); } - - /** + /** * Checks if the session is always used to store stacked data * even if a storage is enabled * - * @return boolean - * @static + * @return boolean + * @static */ public static function isStackAlwaysUseSessionStorage() - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->isStackAlwaysUseSessionStorage(); } - - /** - * - * - * @static + /** + * @static */ public static function offsetSet($key, $value) - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->offsetSet($key, $value); } - - /** - * - * - * @static + /** + * @static */ public static function offsetGet($key) - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->offsetGet($key); } - - /** - * - * - * @static + /** + * @static */ public static function offsetExists($key) - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->offsetExists($key); } - - /** - * - * - * @static + /** + * @static */ public static function offsetUnset($key) - { - //Method inherited from \DebugBar\DebugBar + { //Method inherited from \DebugBar\DebugBar /** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */ return $instance->offsetUnset($key); } } - + } -namespace Laracasts\Flash { - - /** - * - * + namespace Gloudemans\Shoppingcart\Facades { + /** */ - class Flash { - - /** + class Cart { + /** + * Set the current cart instance. + * + * @param string|null $instance + * @return \Gloudemans\Shoppingcart\Cart + * @static + */ + public static function instance($instance = null) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->instance($instance); + } + /** + * Get the current cart instance. + * + * @return string + * @static + */ + public static function currentInstance() + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->currentInstance(); + } + /** + * Add an item to the cart. + * + * @param mixed $id + * @param mixed $name + * @param int|float $qty + * @param float $price + * @param array $options + * @return \Gloudemans\Shoppingcart\CartItem + * @static + */ + public static function add($id, $name = null, $qty = null, $price = null, $taxRate = null, $options = []) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->add($id, $name, $qty, $price, $taxRate, $options); + } + /** + * Update the cart item with the given rowId. + * + * @param string $rowId + * @param mixed $qty + * @return \Gloudemans\Shoppingcart\CartItem + * @static + */ + public static function update($rowId, $qty) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->update($rowId, $qty); + } + /** + * Remove the cart item with the given rowId from the cart. + * + * @param string $rowId + * @return void + * @static + */ + public static function remove($rowId) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + $instance->remove($rowId); + } + /** + * Get a cart item from the cart by its rowId. + * + * @param string $rowId + * @return \Gloudemans\Shoppingcart\CartItem + * @static + */ + public static function get($rowId) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->get($rowId); + } + /** + * Destroy the current cart instance. + * + * @return void + * @static + */ + public static function destroy() + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + $instance->destroy(); + } + /** + * Get the content of the cart. + * + * @return \Illuminate\Support\Collection + * @static + */ + public static function content() + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->content(); + } + /** + * Get the number of items in the cart. + * + * @return int|float + * @static + */ + public static function count() + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->count(); + } + /** + * Get the total price of the items in the cart. + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return string + * @static + */ + public static function total($decimals = null, $decimalPoint = null, $thousandSeperator = null, $withFees = true) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->total($decimals, $decimalPoint, $thousandSeperator, $withFees); + } + /** + * Get the total tax of the items in the cart. + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return float + * @static + */ + public static function tax($decimals = null, $decimalPoint = null, $thousandSeperator = null, $withFees = true) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->tax($decimals, $decimalPoint, $thousandSeperator, $withFees); + } + /** + * Get the total tax of the items in the cart. + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return float + * @static + */ + public static function feeTax($decimals = null, $decimalPoint = null, $thousandSeperator = null) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->feeTax($decimals, $decimalPoint, $thousandSeperator); + } + /** + * Get the subtotal (total - tax) of the items in the cart. + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return float + * @static + */ + public static function subtotal($decimals = null, $decimalPoint = null, $thousandSeperator = null) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->subtotal($decimals, $decimalPoint, $thousandSeperator); + } + /** + * Get the subtotal (total - tax) of the items in the cart. + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return float + * @static + */ + public static function subtotalTax($decimals = null, $decimalPoint = null, $thousandSeperator = null) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->subtotalTax($decimals, $decimalPoint, $thousandSeperator); + } + /** + * Search the cart content for a cart item matching the given search closure. + * + * @param \Closure $search + * @return \Illuminate\Support\Collection + * @static + */ + public static function search($search) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->search($search); + } + /** + * Associate the cart item with the given rowId with the given model. + * + * @param string $rowId + * @param mixed $model + * @return void + * @static + */ + public static function associate($rowId, $model) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + $instance->associate($rowId, $model); + } + /** + * Set the tax rate for the cart item with the given rowId. + * + * @param string $rowId + * @param int|float $taxRate + * @return void + * @static + */ + public static function setTax($rowId, $taxRate) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + $instance->setTax($rowId, $taxRate); + } + /** + * Store an the current instance of the cart. + * + * @param mixed $identifier + * @return void + * @static + */ + public static function store($identifier) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + $instance->store($identifier); + } + /** + * Restore the cart with the given identifier. + * + * @param mixed $identifier + * @return void + * @static + */ + public static function restore($identifier) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + $instance->restore($identifier); + } + /** + * Gets a specific fee from the fees array. + * + * @param $name + * @return mixed + * @static + */ + public static function getFee($name) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->getFee($name); + } + /** + * Allows to charge for additional fees that may or may not be taxable + * ex - service fee , delivery fee, tips. + * + * Because it uses ->put, the name must be unique otherwise will be overwritten. + * + * @param $name + * @param $amount + * @param $taxRate + * @param array $options + * @static + */ + public static function addFee($name, $amount, $taxRate = null, $options = []) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->addFee($name, $amount, $taxRate, $options); + } + /** + * Removes a fee from the fee array. + * + * @todo test to see if i need to restore this + * @param $name + * @static + */ + public static function removeFee($name) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->removeFee($name); + } + /** + * Removes all the fees set in the cart. + * + * @static + */ + public static function removeFees() + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->removeFees(); + } + /** + * Gets all the fee totals. + * + * @param bool $format + * @param bool $withTax + * @return string + * @static + */ + public static function feeTotal($decimals = null, $decimalPoint = null, $thousandSeperator = null, $withTax = true) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->feeTotal($decimals, $decimalPoint, $thousandSeperator, $withTax); + } + /** + * Gets all the fees on the cart object. + * + * @return mixed + * @static + */ + public static function getFees() + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->getFees(); + } + /** + * @return array + * @static + */ + public static function toArray() + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->toArray(); + } + /** + * @param $array + * @return \Gloudemans\Shoppingcart\Cart + * @static + */ + public static function fromArray($array) + { + /** @var \Gloudemans\Shoppingcart\Cart $instance */ + return $instance->fromArray($array); + } + + } + +} + + namespace Facade\Ignition\Facades { + /** + * Class Flare. + * + * @see \Facade\FlareClient\Flare + */ + class Flare { + /** + * @static + */ + public static function register($apiKey, $apiSecret = null, $contextDetector = null, $container = null) + { + return \Facade\FlareClient\Flare::register($apiKey, $apiSecret, $contextDetector, $container); + } + /** + * @static + */ + 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); + } + /** + * @static + */ + public static function filterReportsUsing($filterReportsCallable) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->filterReportsUsing($filterReportsCallable); + } + /** + * @return null|string + * @static + */ + public static function version() + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->version(); + } + /** + * @static + */ + public static function getMiddleware() + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->getMiddleware(); + } + /** + * @static + */ + public static function registerFlareHandlers() + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->registerFlareHandlers(); + } + /** + * @static + */ + public static function registerExceptionHandler() + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->registerExceptionHandler(); + } + /** + * @static + */ + public static function registerErrorHandler() + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->registerErrorHandler(); + } + /** + * @static + */ + public static function registerMiddleware($callable) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->registerMiddleware($callable); + } + /** + * @static + */ + public static function getMiddlewares() + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->getMiddlewares(); + } + /** + * @static + */ + public static function glow($name, $messageLevel = 'info', $metaData = []) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->glow($name, $messageLevel, $metaData); + } + /** + * @static + */ + public static function handleException($throwable) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->handleException($throwable); + } + /** + * @static + */ + public static function handleError($code, $message, $file = '', $line = 0) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->handleError($code, $message, $file, $line); + } + /** + * @static + */ + public static function applicationPath($applicationPath) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->applicationPath($applicationPath); + } + /** + * @static + */ + public static function report($throwable, $callback = null) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->report($throwable, $callback); + } + /** + * @static + */ + public static function reportMessage($message, $logLevel, $callback = null) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->reportMessage($message, $logLevel, $callback); + } + /** + * @static + */ + public static function sendTestReport($throwable) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->sendTestReport($throwable); + } + /** + * @static + */ + public static function reset() + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->reset(); + } + /** + * @static + */ + public static function anonymizeIp() + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->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 */ + return $instance->createReport($throwable); + } + /** + * @static + */ + public static function createReportFromMessage($message, $logLevel) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->createReportFromMessage($message, $logLevel); + } + /** + * @static + */ + public static function stage($stage) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->stage($stage); + } + /** + * @static + */ + public static function messageLevel($messageLevel) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->messageLevel($messageLevel); + } + /** + * @static + */ + public static function getGroup($groupName = 'context', $default = []) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->getGroup($groupName, $default); + } + /** + * @static + */ + public static function context($key, $value) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->context($key, $value); + } + /** + * @static + */ + public static function group($groupName, $properties) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->group($groupName, $properties); + } + + } + +} + + namespace Laracasts\Flash { + /** + */ + class Flash { + /** * Flash an information message. * * @param string|null $message - * @return \Laracasts\Flash\FlashNotifier - * @static + * @return \Laracasts\Flash\FlashNotifier + * @static */ public static function info($message = null) { /** @var \Laracasts\Flash\FlashNotifier $instance */ return $instance->info($message); } - - /** + /** * Flash a success message. * * @param string|null $message - * @return \Laracasts\Flash\FlashNotifier - * @static + * @return \Laracasts\Flash\FlashNotifier + * @static */ public static function success($message = null) { /** @var \Laracasts\Flash\FlashNotifier $instance */ return $instance->success($message); } - - /** + /** * Flash an error message. * * @param string|null $message - * @return \Laracasts\Flash\FlashNotifier - * @static + * @return \Laracasts\Flash\FlashNotifier + * @static */ public static function error($message = null) { /** @var \Laracasts\Flash\FlashNotifier $instance */ return $instance->error($message); } - - /** + /** * Flash a warning message. * * @param string|null $message - * @return \Laracasts\Flash\FlashNotifier - * @static + * @return \Laracasts\Flash\FlashNotifier + * @static */ public static function warning($message = null) { /** @var \Laracasts\Flash\FlashNotifier $instance */ return $instance->warning($message); } - - /** + /** * Flash a general message. * * @param string|null $message * @param string|null $level - * @return \Laracasts\Flash\FlashNotifier - * @static + * @return \Laracasts\Flash\FlashNotifier + * @static */ public static function message($message = null, $level = null) { /** @var \Laracasts\Flash\FlashNotifier $instance */ return $instance->message($message, $level); } - - /** + /** * Flash an overlay modal. * * @param string|null $message * @param string $title - * @return \Laracasts\Flash\FlashNotifier - * @static + * @return \Laracasts\Flash\FlashNotifier + * @static */ public static function overlay($message = null, $title = 'Notice') { /** @var \Laracasts\Flash\FlashNotifier $instance */ return $instance->overlay($message, $title); } - - /** + /** * Add an "important" flash to the session. * - * @return \Laracasts\Flash\FlashNotifier - * @static + * @return \Laracasts\Flash\FlashNotifier + * @static */ public static function important() { /** @var \Laracasts\Flash\FlashNotifier $instance */ return $instance->important(); } - - /** + /** * Clear all registered messages. * - * @return \Laracasts\Flash\FlashNotifier - * @static + * @return \Laracasts\Flash\FlashNotifier + * @static */ public static function clear() { /** @var \Laracasts\Flash\FlashNotifier $instance */ return $instance->clear(); } - - /** + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Laracasts\Flash\FlashNotifier::macro($name, $macro); } - - /** + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Laracasts\Flash\FlashNotifier::mixin($mixin, $replace); } - - /** + /** * Checks if macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { return \Laracasts\Flash\FlashNotifier::hasMacro($name); + } + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Laracasts\Flash\FlashNotifier::flushMacros(); } } - + +} + + namespace PragmaRX\Google2FALaravel { + /** + */ + class Facade { + /** + * Set the QRCode Backend. + * + * @param string $qrCodeBackend + * @return self + * @static + */ + public static function setQrCodeBackend($qrCodeBackend) + { + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->setQrCodeBackend($qrCodeBackend); + } + /** + * Authenticator boot. + * + * @param $request + * @return \Google2FA + * @static + */ + public static function boot($request) + { + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->boot($request); + } + /** + * The QRCode Backend. + * + * @return mixed + * @static + */ + public static function getQRCodeBackend() + { + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->getQRCodeBackend(); + } + /** + * Check if the 2FA is activated for the user. + * + * @return bool + * @static + */ + public static function isActivated() + { + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->isActivated(); + } + /** + * Set current auth as valid. + * + * @static + */ + public static function login() + { + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->login(); + } + /** + * OTP logout. + * + * @static + */ + public static function logout() + { + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->logout(); + } + /** + * Verify the OTP. + * + * @param $secret + * @param $one_time_password + * @return mixed + * @static + */ + public static function verifyGoogle2FA($secret, $one_time_password) + { + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->verifyGoogle2FA($secret, $one_time_password); + } + /** + * Generates a QR code data url to display inline. + * + * @param string $company + * @param string $holder + * @param string $secret + * @param int $size + * @param string $encoding Default to UTF-8 + * @return string + * @static + */ + public static function getQRCodeInline($company, $holder, $secret, $size = 200, $encoding = 'utf-8') + { //Method inherited from \PragmaRX\Google2FAQRCode\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->getQRCodeInline($company, $holder, $secret, $size, $encoding); + } + /** + * Service setter + * + * @return \PragmaRX\Google2FAQRCode\QRCode\QRCodeServiceContract + * @static + */ + public static function getQrCodeService() + { //Method inherited from \PragmaRX\Google2FAQRCode\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->getQrCodeService(); + } + /** + * Service setter + * + * @return self + * @static + */ + public static function setQrCodeService($service) + { //Method inherited from \PragmaRX\Google2FAQRCode\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->setQrCodeService($service); + } + /** + * Create the QR Code service instance + * + * @return \PragmaRX\Google2FAQRCode\QRCode\QRCodeServiceContract + * @static + */ + public static function qrCodeServiceFactory($imageBackEnd = null) + { //Method inherited from \PragmaRX\Google2FAQRCode\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->qrCodeServiceFactory($imageBackEnd); + } + /** + * Find a valid One Time Password. + * + * @param string $secret + * @param string $key + * @param int|null $window + * @param int $startingTimestamp + * @param int $timestamp + * @param int|null $oldTimestamp + * @throws \PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException + * @throws \PragmaRX\Google2FA\Exceptions\InvalidCharactersException + * @throws \PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException + * @return bool|int + * @static + */ + public static function findValidOTP($secret, $key, $window, $startingTimestamp, $timestamp, $oldTimestamp = null) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->findValidOTP($secret, $key, $window, $startingTimestamp, $timestamp, $oldTimestamp); + } + /** + * Generate a digit secret key in base32 format. + * + * @param int $length + * @param string $prefix + * @throws \PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException + * @throws \PragmaRX\Google2FA\Exceptions\InvalidCharactersException + * @throws \PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException + * @return string + * @static + */ + public static function generateSecretKey($length = 16, $prefix = '') + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->generateSecretKey($length, $prefix); + } + /** + * Get the current one time password for a key. + * + * @param string $secret + * @throws \PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException + * @throws \PragmaRX\Google2FA\Exceptions\InvalidCharactersException + * @throws \PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException + * @return string + * @static + */ + public static function getCurrentOtp($secret) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->getCurrentOtp($secret); + } + /** + * Get the HMAC algorithm. + * + * @return string + * @static + */ + public static function getAlgorithm() + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->getAlgorithm(); + } + /** + * Get key regeneration. + * + * @return int + * @static + */ + public static function getKeyRegeneration() + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->getKeyRegeneration(); + } + /** + * Get OTP length. + * + * @return int + * @static + */ + public static function getOneTimePasswordLength() + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->getOneTimePasswordLength(); + } + /** + * Get secret. + * + * @param string|null $secret + * @return string + * @static + */ + public static function getSecret($secret = null) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->getSecret($secret); + } + /** + * Returns the current Unix Timestamp divided by the $keyRegeneration + * period. + * + * @return int + * @static + */ + public static function getTimestamp() + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->getTimestamp(); + } + /** + * Get the OTP window. + * + * @param null|int $window + * @return int + * @static + */ + public static function getWindow($window = null) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->getWindow($window); + } + /** + * Takes the secret key and the timestamp and returns the one time + * password. + * + * @param string $secret Secret key in binary form. + * @param int $counter Timestamp as returned by getTimestamp. + * @throws \PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException + * @throws \PragmaRX\Google2FA\Exceptions\InvalidCharactersException + * @throws Exceptions\IncompatibleWithGoogleAuthenticatorException + * @return string + * @static + */ + public static function oathTotp($secret, $counter) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->oathTotp($secret, $counter); + } + /** + * Extracts the OTP from the SHA1 hash. + * + * @param string $hash + * @return string + * @static + */ + public static function oathTruncate($hash) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->oathTruncate($hash); + } + /** + * Remove invalid chars from a base 32 string. + * + * @param string $string + * @return string|null + * @static + */ + public static function removeInvalidChars($string) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->removeInvalidChars($string); + } + /** + * Setter for the enforce Google Authenticator compatibility property. + * + * @param mixed $enforceGoogleAuthenticatorCompatibility + * @return \PragmaRX\Google2FALaravel\Google2FA + * @static + */ + public static function setEnforceGoogleAuthenticatorCompatibility($enforceGoogleAuthenticatorCompatibility) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->setEnforceGoogleAuthenticatorCompatibility($enforceGoogleAuthenticatorCompatibility); + } + /** + * Set the HMAC hashing algorithm. + * + * @param mixed $algorithm + * @throws \PragmaRX\Google2FA\Exceptions\InvalidAlgorithmException + * @return \PragmaRX\Google2FA\Google2FA + * @static + */ + public static function setAlgorithm($algorithm) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->setAlgorithm($algorithm); + } + /** + * Set key regeneration. + * + * @param mixed $keyRegeneration + * @static + */ + public static function setKeyRegeneration($keyRegeneration) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->setKeyRegeneration($keyRegeneration); + } + /** + * Set OTP length. + * + * @param mixed $oneTimePasswordLength + * @static + */ + public static function setOneTimePasswordLength($oneTimePasswordLength) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->setOneTimePasswordLength($oneTimePasswordLength); + } + /** + * Set secret. + * + * @param mixed $secret + * @static + */ + public static function setSecret($secret) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->setSecret($secret); + } + /** + * Set the OTP window. + * + * @param mixed $window + * @static + */ + public static function setWindow($window) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->setWindow($window); + } + /** + * Verifies a user inputted key against the current timestamp. Checks $window + * keys either side of the timestamp. + * + * @param string $key User specified key + * @param string $secret + * @param null|int $window + * @param null|int $timestamp + * @param null|int $oldTimestamp + * @throws \PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException + * @throws \PragmaRX\Google2FA\Exceptions\InvalidCharactersException + * @throws \PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException + * @return bool|int + * @static + */ + public static function verify($key, $secret, $window = null, $timestamp = null, $oldTimestamp = null) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->verify($key, $secret, $window, $timestamp, $oldTimestamp); + } + /** + * Verifies a user inputted key against the current timestamp. Checks $window + * keys either side of the timestamp. + * + * @param string $secret + * @param string $key User specified key + * @param int|null $window + * @param null|int $timestamp + * @param null|int $oldTimestamp + * @throws \PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException + * @throws \PragmaRX\Google2FA\Exceptions\InvalidCharactersException + * @throws \PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException + * @return bool|int + * @static + */ + public static function verifyKey($secret, $key, $window = null, $timestamp = null, $oldTimestamp = null) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->verifyKey($secret, $key, $window, $timestamp, $oldTimestamp); + } + /** + * Verifies a user inputted key against the current timestamp. Checks $window + * keys either side of the timestamp, but ensures that the given key is newer than + * the given oldTimestamp. Useful if you need to ensure that a single key cannot + * be used twice. + * + * @param string $secret + * @param string $key User specified key + * @param int|null $oldTimestamp The timestamp from the last verified key + * @param int|null $window + * @param int|null $timestamp + * @throws \PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException + * @throws \PragmaRX\Google2FA\Exceptions\InvalidCharactersException + * @throws \PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException + * @return bool|int + * @static + */ + public static function verifyKeyNewer($secret, $key, $oldTimestamp, $window = null, $timestamp = null) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->verifyKeyNewer($secret, $key, $oldTimestamp, $window, $timestamp); + } + /** + * Creates a QR code url. + * + * @param string $company + * @param string $holder + * @param string $secret + * @return string + * @static + */ + public static function getQRCodeUrl($company, $holder, $secret) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->getQRCodeUrl($company, $holder, $secret); + } + /** + * Generate a digit secret key in base32 format. + * + * @param int $length + * @param string $prefix + * @throws \Exception + * @throws \PragmaRX\Google2FA\Exceptions\InvalidCharactersException + * @throws \PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException + * @throws \PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException + * @return string + * @static + */ + public static function generateBase32RandomKey($length = 16, $prefix = '') + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->generateBase32RandomKey($length, $prefix); + } + /** + * Decodes a base32 string into a binary string. + * + * @param string $b32 + * @throws \PragmaRX\Google2FA\Exceptions\InvalidCharactersException + * @throws \PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException + * @throws \PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException + * @return string + * @static + */ + public static function base32Decode($b32) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->base32Decode($b32); + } + /** + * Encode a string to Base32. + * + * @param string $string + * @return string + * @static + */ + public static function toBase32($string) + { //Method inherited from \PragmaRX\Google2FA\Google2FA + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->toBase32($string); + } + /** + * Get a config value. + * + * @param $string + * @throws \Exception + * @return mixed + * @static + */ + public static function config($string, $default = null) + { + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->config($string, $default); + } + /** + * Get the request property. + * + * @return mixed + * @static + */ + public static function getRequest() + { + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->getRequest(); + } + /** + * Set the request property. + * + * @param mixed $request + * @return \PragmaRX\Google2FALaravel\Google2FA + * @static + */ + public static function setRequest($request) + { + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->setRequest($request); + } + /** + * Get a session var value. + * + * @param null $var + * @return mixed + * @static + */ + public static function sessionGet($var = null, $default = null) + { + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->sessionGet($var, $default); + } + /** + * @param mixed $stateless + * @return \PragmaRX\Google2FALaravel\Authenticator + * @static + */ + public static function setStateless($stateless = true) + { + /** @var \PragmaRX\Google2FALaravel\Google2FA $instance */ + return $instance->setStateless($stateless); + } + + } + +} + + namespace Illuminate\Http { + /** + */ + class Request { + /** + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() + * @param array $rules + * @param mixed $params + * @static + */ + public static function validate($rules, ...$params) + { + return \Illuminate\Http\Request::validate($rules, ...$params); + } + /** + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestValidation() + * @param string $errorBag + * @param array $rules + * @param mixed $params + * @static + */ + public static function validateWithBag($errorBag, $rules, ...$params) + { + return \Illuminate\Http\Request::validateWithBag($errorBag, $rules, ...$params); + } + /** + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @param mixed $absolute + * @static + */ + public static function hasValidSignature($absolute = true) + { + return \Illuminate\Http\Request::hasValidSignature($absolute); + } + /** + * @see \Illuminate\Foundation\Providers\FoundationServiceProvider::registerRequestSignatureValidation() + * @static + */ + public static function hasValidRelativeSignature() + { + return \Illuminate\Http\Request::hasValidRelativeSignature(); + } + + } + +} + + namespace Illuminate\Routing { + /** + * @mixin \Illuminate\Routing\RouteRegistrar + */ + class Router { + /** + * @see \Laravel\Ui\AuthRouteMethods::auth() + * @param mixed $options + * @static + */ + public static function auth($options = []) + { + return \Illuminate\Routing\Router::auth($options); + } + /** + * @see \Laravel\Ui\AuthRouteMethods::resetPassword() + * @static + */ + public static function resetPassword() + { + return \Illuminate\Routing\Router::resetPassword(); + } + /** + * @see \Laravel\Ui\AuthRouteMethods::confirmPassword() + * @static + */ + public static function confirmPassword() + { + return \Illuminate\Routing\Router::confirmPassword(); + } + /** + * @see \Laravel\Ui\AuthRouteMethods::emailVerification() + * @static + */ + public static function emailVerification() + { + return \Illuminate\Routing\Router::emailVerification(); + } + + } + } namespace { - - class App extends \Illuminate\Support\Facades\App {} - - class Arr extends \Illuminate\Support\Arr {} - - class Artisan extends \Illuminate\Support\Facades\Artisan {} - - class Auth extends \Illuminate\Support\Facades\Auth {} - - class Blade extends \Illuminate\Support\Facades\Blade {} - - class Broadcast extends \Illuminate\Support\Facades\Broadcast {} - - class Bus extends \Illuminate\Support\Facades\Bus {} - - class Cache extends \Illuminate\Support\Facades\Cache {} - - class Config extends \Illuminate\Support\Facades\Config {} - - class Cookie extends \Illuminate\Support\Facades\Cookie {} - - class Crypt extends \Illuminate\Support\Facades\Crypt {} - - class DB extends \Illuminate\Support\Facades\DB {} - - class Eloquent extends \Illuminate\Database\Eloquent\Model { - /** + class App extends \Illuminate\Support\Facades\App {} + class Arr extends \Illuminate\Support\Arr {} + class Artisan extends \Illuminate\Support\Facades\Artisan {} + class Auth extends \Illuminate\Support\Facades\Auth {} + class Blade extends \Illuminate\Support\Facades\Blade {} + class Broadcast extends \Illuminate\Support\Facades\Broadcast {} + class Bus extends \Illuminate\Support\Facades\Bus {} + class Cache extends \Illuminate\Support\Facades\Cache {} + class Config extends \Illuminate\Support\Facades\Config {} + class Cookie extends \Illuminate\Support\Facades\Cookie {} + class Crypt extends \Illuminate\Support\Facades\Crypt {} + class DB extends \Illuminate\Support\Facades\DB {} + class Eloquent extends \Illuminate\Database\Eloquent\Model { + /** * Create and return an un-saved model instance. * * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|static - * @static + * @return \Illuminate\Database\Eloquent\Model|static + * @static */ public static function make($attributes = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->make($attributes); } - - /** + + /** * Register a new global scope. * * @param string $identifier * @param \Illuminate\Database\Eloquent\Scope|\Closure $scope - * @return \Illuminate\Database\Eloquent\Builder - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function withGlobalScope($identifier, $scope) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withGlobalScope($identifier, $scope); } - - /** + + /** * Remove a registered global scope. * * @param \Illuminate\Database\Eloquent\Scope|string $scope - * @return \Illuminate\Database\Eloquent\Builder - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function withoutGlobalScope($scope) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withoutGlobalScope($scope); } - - /** + + /** * Remove all or passed registered global scopes. * * @param array|null $scopes - * @return \Illuminate\Database\Eloquent\Builder - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function withoutGlobalScopes($scopes = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withoutGlobalScopes($scopes); } - - /** + + /** * Get an array of global scopes that were removed from the query. * - * @return array - * @static + * @return array + * @static */ public static function removedScopes() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->removedScopes(); } - - /** + + /** * Add a where clause on the primary key to the query. * * @param mixed $id - * @return \Illuminate\Database\Eloquent\Builder - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function whereKey($id) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereKey($id); } - - /** + + /** * Add a where clause on the primary key to the query. * * @param mixed $id - * @return \Illuminate\Database\Eloquent\Builder - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function whereKeyNot($id) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereKeyNot($id); } - - /** + + /** * Add a basic where clause to the query. * - * @param \Closure|string|array $column + * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @param string $boolean - * @return \Illuminate\Database\Eloquent\Builder - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function where($column, $operator = null, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->where($column, $operator, $value, $boolean); } - - /** + + /** * Add a basic where clause to the query, and return the first result. * - * @param \Closure|string|array $column + * @param \Closure|string|array|\Illuminate\Database\Query\Expression $column * @param mixed $operator * @param mixed $value * @param string $boolean - * @return \Illuminate\Database\Eloquent\Model|static - * @static + * @return \Illuminate\Database\Eloquent\Model|static|null + * @static */ public static function firstWhere($column, $operator = null, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->firstWhere($column, $operator, $value, $boolean); } - - /** + + /** * Add an "or where" clause to the query. * - * @param \Closure|array|string $column + * @param \Closure|array|string|\Illuminate\Database\Query\Expression $column * @param mixed $operator * @param mixed $value - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function orWhere($column, $operator = null, $value = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orWhere($column, $operator, $value); } - - /** + + /** * Add an "order by" clause for a timestamp to the query. * - * @param string $column - * @return \Illuminate\Database\Eloquent\Builder - * @static + * @param string|\Illuminate\Database\Query\Expression $column + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function latest($column = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->latest($column); } - - /** + + /** * Add an "order by" clause for a timestamp to the query. * - * @param string $column - * @return \Illuminate\Database\Eloquent\Builder - * @static + * @param string|\Illuminate\Database\Query\Expression $column + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function oldest($column = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->oldest($column); } - - /** + + /** * Create a collection of models from plain arrays. * * @param array $items - * @return \Illuminate\Database\Eloquent\Collection - * @static + * @return \Illuminate\Database\Eloquent\Collection + * @static */ public static function hydrate($items) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->hydrate($items); } - - /** + + /** * Create a collection of models from a raw query. * * @param string $query * @param array $bindings - * @return \Illuminate\Database\Eloquent\Collection - * @static + * @return \Illuminate\Database\Eloquent\Collection + * @static */ public static function fromQuery($query, $bindings = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->fromQuery($query, $bindings); } - - /** + + /** * Find a model by its primary key. * * @param mixed $id * @param array $columns - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|null - * @static + * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|null + * @static */ public static function find($id, $columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->find($id, $columns); } - - /** + + /** * Find multiple models by their primary keys. * * @param \Illuminate\Contracts\Support\Arrayable|array $ids * @param array $columns - * @return \Illuminate\Database\Eloquent\Collection - * @static + * @return \Illuminate\Database\Eloquent\Collection + * @static */ public static function findMany($ids, $columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->findMany($ids, $columns); } - - /** + + /** * Find a model by its primary key or throw an exception. * * @param mixed $id * @param array $columns - * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static|static[] + * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static|static[] * @throws \Illuminate\Database\Eloquent\ModelNotFoundException - * @static + * @static */ public static function findOrFail($id, $columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->findOrFail($id, $columns); } - - /** + + /** * Find a model by its primary key or return fresh model instance. * * @param mixed $id * @param array $columns - * @return \Illuminate\Database\Eloquent\Model|static - * @static + * @return \Illuminate\Database\Eloquent\Model|static + * @static */ public static function findOrNew($id, $columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->findOrNew($id, $columns); } - - /** + + /** * Get the first record matching the attributes or instantiate it. * * @param array $attributes * @param array $values - * @return \Illuminate\Database\Eloquent\Model|static - * @static + * @return \Illuminate\Database\Eloquent\Model|static + * @static */ - public static function firstOrNew($attributes, $values = []) + public static function firstOrNew($attributes = [], $values = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->firstOrNew($attributes, $values); } - - /** + + /** * Get the first record matching the attributes or create it. * * @param array $attributes * @param array $values - * @return \Illuminate\Database\Eloquent\Model|static - * @static + * @return \Illuminate\Database\Eloquent\Model|static + * @static */ - public static function firstOrCreate($attributes, $values = []) + public static function firstOrCreate($attributes = [], $values = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->firstOrCreate($attributes, $values); } - - /** + + /** * Create or update a record matching the attributes, and fill it with values. * * @param array $attributes * @param array $values - * @return \Illuminate\Database\Eloquent\Model|static - * @static + * @return \Illuminate\Database\Eloquent\Model|static + * @static */ public static function updateOrCreate($attributes, $values = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->updateOrCreate($attributes, $values); } - - /** + + /** * Execute the query and get the first result or throw an exception. * * @param array $columns - * @return \Illuminate\Database\Eloquent\Model|static + * @return \Illuminate\Database\Eloquent\Model|static * @throws \Illuminate\Database\Eloquent\ModelNotFoundException - * @static + * @static */ public static function firstOrFail($columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->firstOrFail($columns); } - - /** + + /** * Execute the query and get the first result or call a callback. * * @param \Closure|array $columns * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Model|static|mixed - * @static + * @return \Illuminate\Database\Eloquent\Model|static|mixed + * @static */ public static function firstOr($columns = [], $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->firstOr($columns, $callback); } - - /** + + /** + * Execute the query and get the first result if it's the sole matching record. + * + * @param array|string $columns + * @return \Illuminate\Database\Eloquent\Model + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException + * @throws \Illuminate\Database\MultipleRecordsFoundException + * @static + */ + public static function sole($columns = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->sole($columns); + } + + /** * Get a single column's value from the first result of a query. * - * @param string $column - * @return mixed - * @static + * @param string|\Illuminate\Database\Query\Expression $column + * @return mixed + * @static */ public static function value($column) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ 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. * * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Collection|static[] - * @static + * @return \Illuminate\Database\Eloquent\Collection|static[] + * @static */ public static function get($columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->get($columns); } - - /** + + /** * Get the hydrated models without eager loading. * * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model[]|static[] - * @static + * @return \Illuminate\Database\Eloquent\Model[]|static[] + * @static */ public static function getModels($columns = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->getModels($columns); } - - /** + + /** * Eager load the relationships for the models. * * @param array $models - * @return array - * @static + * @return array + * @static */ public static function eagerLoadRelations($models) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->eagerLoadRelations($models); } - - /** + + /** * Get a lazy collection for the given query. * - * @return \Illuminate\Support\LazyCollection - * @static + * @return \Illuminate\Support\LazyCollection + * @static */ public static function cursor() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->cursor(); } - - /** + + /** * Get an array with the values of a given column. * - * @param string $column + * @param string|\Illuminate\Database\Query\Expression $column * @param string|null $key - * @return \Illuminate\Support\Collection - * @static + * @return \Illuminate\Support\Collection + * @static */ public static function pluck($column, $key = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->pluck($column, $key); } - - /** + + /** * Paginate the given query. * * @param int|null $perPage * @param array $columns * @param string $pageName * @param int|null $page - * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator + * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator * @throws \InvalidArgumentException - * @static + * @static */ public static function paginate($perPage = null, $columns = [], $pageName = 'page', $page = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->paginate($perPage, $columns, $pageName, $page); } - - /** + + /** * Paginate the given query into a simple paginator. * * @param int|null $perPage * @param array $columns * @param string $pageName * @param int|null $page - * @return \Illuminate\Contracts\Pagination\Paginator - * @static + * @return \Illuminate\Contracts\Pagination\Paginator + * @static */ public static function simplePaginate($perPage = null, $columns = [], $pageName = 'page', $page = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ 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. * * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|$this - * @static + * @return \Illuminate\Database\Eloquent\Model|$this + * @static */ public static function create($attributes = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->create($attributes); } - - /** + + /** * Save a new model and return the instance. Allow mass-assignment. * * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|$this - * @static + * @return \Illuminate\Database\Eloquent\Model|$this + * @static */ public static function forceCreate($attributes) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->forceCreate($attributes); } - - /** + + /** + * Insert new records or update the existing ones. + * + * @param array $values + * @param array|string $uniqueBy + * @param array|null $update + * @return int + * @static + */ + public static function upsert($values, $uniqueBy, $update = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->upsert($values, $uniqueBy, $update); + } + + /** * Register a replacement for the default delete function. * * @param \Closure $callback - * @return void - * @static + * @return void + * @static */ public static function onDelete($callback) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ $instance->onDelete($callback); } - - /** + + /** * Call the given local model scopes. * * @param array|string $scopes - * @return static|mixed - * @static + * @return static|mixed + * @static */ public static function scopes($scopes) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->scopes($scopes); } - - /** + + /** * Apply the scopes to the Eloquent builder instance and return it. * - * @return static - * @static + * @return static + * @static */ public static function applyScopes() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->applyScopes(); } - - /** + + /** * Prevent the specified relations from being eager loaded. * * @param mixed $relations - * @return \Illuminate\Database\Eloquent\Builder - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function without($relations) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ 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. * * @param array $attributes - * @return \Illuminate\Database\Eloquent\Model|static - * @static + * @return \Illuminate\Database\Eloquent\Model|static + * @static */ public static function newModelInstance($attributes = []) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->newModelInstance($attributes); } - - /** + + /** + * Apply query-time casts to the model instance. + * + * @param array $casts + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function withCasts($casts) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->withCasts($casts); + } + + /** * Get the underlying query builder instance. * - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function getQuery() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->getQuery(); } - - /** + + /** * Set the underlying query builder instance. * * @param \Illuminate\Database\Query\Builder $query - * @return \Illuminate\Database\Eloquent\Builder - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function setQuery($query) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->setQuery($query); } - - /** + + /** * Get a base query builder instance. * - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function toBase() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->toBase(); } - - /** + + /** * Get the relationships being eagerly loaded. * - * @return array - * @static + * @return array + * @static */ public static function getEagerLoads() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->getEagerLoads(); } - - /** + + /** * Set the relationships being eagerly loaded. * * @param array $eagerLoad - * @return \Illuminate\Database\Eloquent\Builder - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function setEagerLoads($eagerLoad) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->setEagerLoads($eagerLoad); } - - /** + + /** * Get the model instance being queried. * - * @return \Illuminate\Database\Eloquent\Model|static - * @static + * @return \Illuminate\Database\Eloquent\Model|static + * @static */ public static function getModel() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->getModel(); } - - /** + + /** * Set a model instance for the model being queried. * * @param \Illuminate\Database\Eloquent\Model $model - * @return \Illuminate\Database\Eloquent\Builder - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function setModel($model) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->setModel($model); } - - /** + + /** * Get the given macro by name. * * @param string $name - * @return \Closure - * @static + * @return \Closure + * @static */ public static function getMacro($name) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->getMacro($name); } - - /** + + /** * Checks if a macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasMacro($name) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->hasMacro($name); } - - /** + + /** * Get the given global macro by name. * * @param string $name - * @return \Closure - * @static + * @return \Closure + * @static */ public static function getGlobalMacro($name) { return \Illuminate\Database\Eloquent\Builder::getGlobalMacro($name); } - - /** + + /** * Checks if a global macro is registered. * * @param string $name - * @return bool - * @static + * @return bool + * @static */ public static function hasGlobalMacro($name) { return \Illuminate\Database\Eloquent\Builder::hasGlobalMacro($name); } - - /** - * Chunk the results of the query. + + /** + * Clone the Eloquent query builder. * - * @param int $count - * @param callable $callback - * @return bool - * @static + * @return static + * @static */ - public static function chunk($count, $callback) + public static function clone() { /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->chunk($count, $callback); + return $instance->clone(); } - - /** - * Execute a callback over each item while chunking. - * - * @param callable $callback - * @param int $count - * @return bool - * @static - */ - public static function each($callback, $count = 1000) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->each($callback, $count); - } - - /** - * Chunk the results of a query by comparing IDs. - * - * @param int $count - * @param callable $callback - * @param string|null $column - * @param string|null $alias - * @return bool - * @static - */ - public static function chunkById($count, $callback, $column = null, $alias = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->chunkById($count, $callback, $column, $alias); - } - - /** - * Execute a callback over each item while chunking by id. - * - * @param callable $callback - * @param int $count - * @param string|null $column - * @param string|null $alias - * @return bool - * @static - */ - public static function eachById($callback, $count = 1000, $column = null, $alias = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->eachById($callback, $count, $column, $alias); - } - - /** - * Execute the query and get the first result. - * - * @param array|string $columns - * @return \Illuminate\Database\Eloquent\Model|object|static|null - * @static - */ - public static function first($columns = []) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->first($columns); - } - - /** - * Apply the callback's query changes if the given "value" is true. - * - * @param mixed $value - * @param callable $callback - * @param callable|null $default - * @return mixed|$this - * @static - */ - public static function when($value, $callback, $default = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->when($value, $callback, $default); - } - - /** - * Pass the query to a given callback. - * - * @param callable $callback - * @return \Illuminate\Database\Query\Builder - * @static - */ - public static function tap($callback) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->tap($callback); - } - - /** - * Apply the callback's query changes if the given "value" is false. - * - * @param mixed $value - * @param callable $callback - * @param callable|null $default - * @return mixed|$this - * @static - */ - public static function unless($value, $callback, $default = null) - { - /** @var \Illuminate\Database\Eloquent\Builder $instance */ - return $instance->unless($value, $callback, $default); - } - - /** + + /** * Add a relationship count / exists condition to the query. * * @param \Illuminate\Database\Eloquent\Relations\Relation|string $relation @@ -21097,384 +22724,836 @@ namespace { * @param int $count * @param string $boolean * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static + * @return \Illuminate\Database\Eloquent\Builder|static * @throws \RuntimeException - * @static + * @static */ public static function has($relation, $operator = '>=', $count = 1, $boolean = 'and', $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->has($relation, $operator, $count, $boolean, $callback); } - - /** + + /** * Add a relationship count / exists condition to the query with an "or". * * @param string $relation * @param string $operator * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function orHas($relation, $operator = '>=', $count = 1) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orHas($relation, $operator, $count); } - - /** + + /** * Add a relationship count / exists condition to the query. * * @param string $relation * @param string $boolean * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function doesntHave($relation, $boolean = 'and', $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->doesntHave($relation, $boolean, $callback); } - - /** + + /** * Add a relationship count / exists condition to the query with an "or". * * @param string $relation - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function orDoesntHave($relation) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orDoesntHave($relation); } - - /** + + /** * Add a relationship count / exists condition to the query with where clauses. * * @param string $relation * @param \Closure|null $callback * @param string $operator * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function whereHas($relation, $callback = null, $operator = '>=', $count = 1) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereHas($relation, $callback, $operator, $count); } - - /** + + /** * Add a relationship count / exists condition to the query with where clauses and an "or". * * @param string $relation - * @param \Closure $callback + * @param \Closure|null $callback * @param string $operator * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function orWhereHas($relation, $callback = null, $operator = '>=', $count = 1) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orWhereHas($relation, $callback, $operator, $count); } - - /** + + /** * Add a relationship count / exists condition to the query with where clauses. * * @param string $relation * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function whereDoesntHave($relation, $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereDoesntHave($relation, $callback); } - - /** + + /** * Add a relationship count / exists condition to the query with where clauses and an "or". * * @param string $relation - * @param \Closure $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @param \Closure|null $callback + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function orWhereDoesntHave($relation, $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orWhereDoesntHave($relation, $callback); } - - /** + + /** * Add a polymorphic relationship count / exists condition to the query. * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation * @param string|array $types * @param string $operator * @param int $count * @param string $boolean * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function hasMorph($relation, $types, $operator = '>=', $count = 1, $boolean = 'and', $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->hasMorph($relation, $types, $operator, $count, $boolean, $callback); } - - /** + + /** * Add a polymorphic relationship count / exists condition to the query with an "or". * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation * @param string|array $types * @param string $operator * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function orHasMorph($relation, $types, $operator = '>=', $count = 1) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orHasMorph($relation, $types, $operator, $count); } - - /** + + /** * Add a polymorphic relationship count / exists condition to the query. * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation * @param string|array $types * @param string $boolean * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function doesntHaveMorph($relation, $types, $boolean = 'and', $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->doesntHaveMorph($relation, $types, $boolean, $callback); } - - /** + + /** * Add a polymorphic relationship count / exists condition to the query with an "or". * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation * @param string|array $types - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function orDoesntHaveMorph($relation, $types) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orDoesntHaveMorph($relation, $types); } - - /** + + /** * Add a polymorphic relationship count / exists condition to the query with where clauses. * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation * @param string|array $types * @param \Closure|null $callback * @param string $operator * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function whereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereHasMorph($relation, $types, $callback, $operator, $count); } - - /** + + /** * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation * @param string|array $types - * @param \Closure $callback + * @param \Closure|null $callback * @param string $operator * @param int $count - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function orWhereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->orWhereHasMorph($relation, $types, $callback, $operator, $count); } - - /** + + /** * Add a polymorphic relationship count / exists condition to the query with where clauses. * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation * @param string|array $types * @param \Closure|null $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function whereDoesntHaveMorph($relation, $types, $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->whereDoesntHaveMorph($relation, $types, $callback); } - - /** + + /** * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". * - * @param string $relation + * @param \Illuminate\Database\Eloquent\Relations\MorphTo|string $relation * @param string|array $types - * @param \Closure $callback - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @param \Closure|null $callback + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function orWhereDoesntHaveMorph($relation, $types, $callback = null) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ 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 \RuntimeException + * @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 \RuntimeException + * @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. + * + * @param mixed $relations + * @param string $column + * @param string $function + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function withAggregate($relations, $column, $function = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->withAggregate($relations, $column, $function); + } + + /** * Add subselect queries to count the relations. * * @param mixed $relations - * @return \Illuminate\Database\Eloquent\Builder - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function withCount($relations) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->withCount($relations); } - - /** + + /** + * Add subselect queries to include the max of the relation's column. + * + * @param string|array $relation + * @param string $column + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function withMax($relation, $column) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->withMax($relation, $column); + } + + /** + * Add subselect queries to include the min of the relation's column. + * + * @param string|array $relation + * @param string $column + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function withMin($relation, $column) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->withMin($relation, $column); + } + + /** + * Add subselect queries to include the sum of the relation's column. + * + * @param string|array $relation + * @param string $column + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function withSum($relation, $column) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->withSum($relation, $column); + } + + /** + * Add subselect queries to include the average of the relation's column. + * + * @param string|array $relation + * @param string $column + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function withAvg($relation, $column) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + 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. * * @param \Illuminate\Database\Eloquent\Builder $from - * @return \Illuminate\Database\Eloquent\Builder|static - * @static + * @return \Illuminate\Database\Eloquent\Builder|static + * @static */ public static function mergeConstraintsFrom($from) { /** @var \Illuminate\Database\Eloquent\Builder $instance */ return $instance->mergeConstraintsFrom($from); } - - /** + + /** + * Chunk the results of the query. + * + * @param int $count + * @param callable $callback + * @return bool + * @static + */ + public static function chunk($count, $callback) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->chunk($count, $callback); + } + + /** + * Run a map over each item while chunking. + * + * @param callable $callback + * @param int $count + * @return \Illuminate\Support\Collection + * @static + */ + public static function chunkMap($callback, $count = 1000) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->chunkMap($callback, $count); + } + + /** + * Execute a callback over each item while chunking. + * + * @param callable $callback + * @param int $count + * @return bool + * @throws \RuntimeException + * @static + */ + public static function each($callback, $count = 1000) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->each($callback, $count); + } + + /** + * Chunk the results of a query by comparing IDs. + * + * @param int $count + * @param callable $callback + * @param string|null $column + * @param string|null $alias + * @return bool + * @static + */ + public static function chunkById($count, $callback, $column = null, $alias = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->chunkById($count, $callback, $column, $alias); + } + + /** + * Execute a callback over each item while chunking by ID. + * + * @param callable $callback + * @param int $count + * @param string|null $column + * @param string|null $alias + * @return bool + * @static + */ + public static function eachById($callback, $count = 1000, $column = null, $alias = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->eachById($callback, $count, $column, $alias); + } + + /** + * Query lazily, by chunks of the given size. + * + * @param int $chunkSize + * @return \Illuminate\Support\LazyCollection + * @throws \InvalidArgumentException + * @static + */ + public static function lazy($chunkSize = 1000) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->lazy($chunkSize); + } + + /** + * Query lazily, by chunking the results of a query by comparing IDs. + * + * @param int $chunkSize + * @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) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->lazyById($chunkSize, $column, $alias); + } + + /** + * Query lazily, by chunking the results of a query by comparing IDs in descending order. + * + * @param int $chunkSize + * @param string|null $column + * @param string|null $alias + * @return \Illuminate\Support\LazyCollection + * @throws \InvalidArgumentException + * @static + */ + public static function lazyByIdDesc($chunkSize = 1000, $column = null, $alias = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->lazyByIdDesc($chunkSize, $column, $alias); + } + + /** + * Execute the query and get the first result. + * + * @param array|string $columns + * @return \Illuminate\Database\Eloquent\Model|object|static|null + * @static + */ + public static function first($columns = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->first($columns); + } + + /** + * Execute the query and get the first result if it's the sole matching record. + * + * @param array|string $columns + * @return \Illuminate\Database\Eloquent\Model|object|static|null + * @throws \Illuminate\Database\RecordsNotFoundException + * @throws \Illuminate\Database\MultipleRecordsFoundException + * @static + */ + public static function baseSole($columns = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->baseSole($columns); + } + + /** + * Pass the query to a given callback. + * + * @param callable $callback + * @return $this|mixed + * @static + */ + public static function tap($callback) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->tap($callback); + } + + /** + * Apply the callback if the given "value" is truthy. + * + * @param mixed $value + * @param callable $callback + * @param callable|null $default + * @return $this|mixed + * @static + */ + public static function when($value, $callback, $default = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->when($value, $callback, $default); + } + + /** + * Apply the callback if the given "value" is falsy. + * + * @param mixed $value + * @param callable $callback + * @param callable|null $default + * @return $this|mixed + * @static + */ + public static function unless($value, $callback, $default = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->unless($value, $callback, $default); + } + + /** + * @see \Maatwebsite\Excel\Mixins\DownloadQueryMacro::__invoke() + * @param string $fileName + * @param string|null $writerType + * @param mixed $withHeadings + * @static + */ + public static function downloadExcel($fileName, $writerType = null, $withHeadings = false) + { + return \Illuminate\Database\Eloquent\Builder::downloadExcel($fileName, $writerType, $withHeadings); + } + + /** + * @see \Maatwebsite\Excel\Mixins\StoreQueryMacro::__invoke() + * @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\Database\Eloquent\Builder::storeExcel($filePath, $disk, $writerType, $withHeadings); + } + + /** + * @see \Maatwebsite\Excel\Mixins\ImportMacro::__invoke() + * @param string $filename + * @param string|null $disk + * @param string|null $readerType + * @static + */ + public static function import($filename, $disk = null, $readerType = null) + { + return \Illuminate\Database\Eloquent\Builder::import($filename, $disk, $readerType); + } + + /** + * @see \Maatwebsite\Excel\Mixins\ImportAsMacro::__invoke() + * @param string $filename + * @param callable $mapping + * @param string|null $disk + * @param string|null $readerType + * @static + */ + public static function importAs($filename, $mapping, $disk = null, $readerType = null) + { + return \Illuminate\Database\Eloquent\Builder::importAs($filename, $mapping, $disk, $readerType); + } + + /** * Set the columns to be selected. * * @param array|mixed $columns - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function select($columns = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->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|static + * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException - * @static + * @static */ public static function selectSub($query, $as) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->selectSub($query, $as); } - - /** + + /** * Add a new "raw" select expression to the query. * * @param string $expression * @param array $bindings - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function selectRaw($expression, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->selectRaw($expression, $bindings); } - - /** + + /** * Makes "from" fetch from a subquery. * * @param \Closure|\Illuminate\Database\Query\Builder|string $query * @param string $as - * @return \Illuminate\Database\Query\Builder|static + * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException - * @static + * @static */ public static function fromSub($query, $as) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->fromSub($query, $as); } - - /** + + /** * Add a raw from clause to the query. * * @param string $expression * @param mixed $bindings - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function fromRaw($expression, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->fromRaw($expression, $bindings); } - - /** + + /** * Add a new select column to the query. * * @param array|mixed $column - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function addSelect($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->addSelect($column); } - - /** + + /** * Force the query to only return distinct results. * - * @return \Illuminate\Database\Query\Builder - * @static + * @param mixed $distinct + * @return \Illuminate\Database\Query\Builder + * @static */ public static function distinct() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->distinct(); } - - /** + + /** * Set the table which the query is targeting. * * @param \Closure|\Illuminate\Database\Query\Builder|string $table * @param string|null $as - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function from($table, $as = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->from($table, $as); } - - /** + + /** * Add a join clause to the query. * * @param string $table @@ -21483,16 +23562,16 @@ namespace { * @param string|null $second * @param string $type * @param bool $where - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function join($table, $first, $operator = null, $second = null, $type = 'inner', $where = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->join($table, $first, $operator, $second, $type, $where); } - - /** + + /** * Add a "join where" clause to the query. * * @param string $table @@ -21500,1715 +23579,1916 @@ namespace { * @param string $operator * @param string $second * @param string $type - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function joinWhere($table, $first, $operator, $second, $type = 'inner') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->joinWhere($table, $first, $operator, $second, $type); } - - /** + + /** * Add a subquery join clause 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 * @param \Closure|string $first * @param string|null $operator * @param string|null $second * @param string $type * @param bool $where - * @return \Illuminate\Database\Query\Builder|static + * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException - * @static + * @static */ public static function joinSub($query, $as, $first, $operator = null, $second = null, $type = 'inner', $where = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->joinSub($query, $as, $first, $operator, $second, $type, $where); } - - /** + + /** * Add a left join to the query. * * @param string $table * @param \Closure|string $first * @param string|null $operator * @param string|null $second - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function leftJoin($table, $first, $operator = null, $second = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->leftJoin($table, $first, $operator, $second); } - - /** + + /** * Add a "join where" clause to the query. * * @param string $table * @param \Closure|string $first * @param string $operator * @param string $second - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function leftJoinWhere($table, $first, $operator, $second) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->leftJoinWhere($table, $first, $operator, $second); } - - /** + + /** * Add a subquery left join 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 * @param \Closure|string $first * @param string|null $operator * @param string|null $second - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function leftJoinSub($query, $as, $first, $operator = null, $second = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->leftJoinSub($query, $as, $first, $operator, $second); } - - /** + + /** * Add a right join to the query. * * @param string $table * @param \Closure|string $first * @param string|null $operator * @param string|null $second - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function rightJoin($table, $first, $operator = null, $second = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->rightJoin($table, $first, $operator, $second); } - - /** + + /** * Add a "right join where" clause to the query. * * @param string $table * @param \Closure|string $first * @param string $operator * @param string $second - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function rightJoinWhere($table, $first, $operator, $second) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->rightJoinWhere($table, $first, $operator, $second); } - - /** + + /** * Add a subquery right join 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 * @param \Closure|string $first * @param string|null $operator * @param string|null $second - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function rightJoinSub($query, $as, $first, $operator = null, $second = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->rightJoinSub($query, $as, $first, $operator, $second); } - - /** + + /** * Add a "cross join" clause to the query. * * @param string $table * @param \Closure|string|null $first * @param string|null $operator * @param string|null $second - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function crossJoin($table, $first = null, $operator = null, $second = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->crossJoin($table, $first, $operator, $second); } - - /** + + /** + * Add a subquery cross join to the query. + * + * @param \Closure|\Illuminate\Database\Query\Builder|string $query + * @param string $as + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function crossJoinSub($query, $as) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->crossJoinSub($query, $as); + } + + /** * Merge an array of where clauses and bindings. * * @param array $wheres * @param array $bindings - * @return void - * @static + * @return void + * @static */ public static function mergeWheres($wheres, $bindings) { /** @var \Illuminate\Database\Query\Builder $instance */ $instance->mergeWheres($wheres, $bindings); } - - /** + + /** * Prepare the value and operator for a where clause. * * @param string $value * @param string $operator * @param bool $useDefault - * @return array + * @return array * @throws \InvalidArgumentException - * @static + * @static */ public static function prepareValueAndOperator($value, $operator, $useDefault = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->prepareValueAndOperator($value, $operator, $useDefault); } - - /** + + /** * Add a "where" clause comparing two columns to the query. * * @param string|array $first * @param string|null $operator * @param string|null $second * @param string|null $boolean - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereColumn($first, $operator = null, $second = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereColumn($first, $operator, $second, $boolean); } - - /** + + /** * Add an "or where" clause comparing two columns to the query. * * @param string|array $first * @param string|null $operator * @param string|null $second - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereColumn($first, $operator = null, $second = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereColumn($first, $operator, $second); } - - /** + + /** * Add a raw where clause to the query. * * @param string $sql * @param mixed $bindings * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereRaw($sql, $bindings = [], $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereRaw($sql, $bindings, $boolean); } - - /** + + /** * Add a raw or where clause to the query. * * @param string $sql * @param mixed $bindings - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereRaw($sql, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereRaw($sql, $bindings); } - - /** + + /** * Add a "where in" clause to the query. * * @param string $column * @param mixed $values * @param string $boolean * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereIn($column, $values, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereIn($column, $values, $boolean, $not); } - - /** + + /** * Add an "or where in" clause to the query. * * @param string $column * @param mixed $values - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereIn($column, $values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereIn($column, $values); } - - /** + + /** * Add a "where not in" clause to the query. * * @param string $column * @param mixed $values * @param string $boolean - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereNotIn($column, $values, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereNotIn($column, $values, $boolean); } - - /** + + /** * Add an "or where not in" clause to the query. * * @param string $column * @param mixed $values - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereNotIn($column, $values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereNotIn($column, $values); } - - /** + + /** * Add a "where in raw" clause for integer values to the query. * * @param string $column * @param \Illuminate\Contracts\Support\Arrayable|array $values * @param string $boolean * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereIntegerInRaw($column, $values, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereIntegerInRaw($column, $values, $boolean, $not); } - - /** + + /** + * Add an "or where in raw" clause for integer values to the query. + * + * @param string $column + * @param \Illuminate\Contracts\Support\Arrayable|array $values + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function orWhereIntegerInRaw($column, $values) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereIntegerInRaw($column, $values); + } + + /** * Add a "where not in raw" clause for integer values to the query. * * @param string $column * @param \Illuminate\Contracts\Support\Arrayable|array $values * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereIntegerNotInRaw($column, $values, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereIntegerNotInRaw($column, $values, $boolean); } - - /** + + /** + * Add an "or where not in raw" clause for integer values to the query. + * + * @param string $column + * @param \Illuminate\Contracts\Support\Arrayable|array $values + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function orWhereIntegerNotInRaw($column, $values) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereIntegerNotInRaw($column, $values); + } + + /** * Add a "where null" clause to the query. * * @param string|array $columns * @param string $boolean * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereNull($columns, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereNull($columns, $boolean, $not); } - - /** + + /** * Add an "or where null" clause to the query. * - * @param string $column - * @return \Illuminate\Database\Query\Builder|static - * @static + * @param string|array $column + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereNull($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereNull($column); } - - /** + + /** * Add a "where not null" clause to the query. * * @param string|array $columns * @param string $boolean - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereNotNull($columns, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereNotNull($columns, $boolean); } - - /** + + /** * Add a where between statement to the query. * - * @param string $column + * @param string|\Illuminate\Database\Query\Expression $column * @param array $values * @param string $boolean * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereBetween($column, $values, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereBetween($column, $values, $boolean, $not); } - - /** + + /** + * Add a where between statement using columns to the query. + * + * @param string $column + * @param array $values + * @param string $boolean + * @param bool $not + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereBetweenColumns($column, $values, $boolean = 'and', $not = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereBetweenColumns($column, $values, $boolean, $not); + } + + /** * Add an or where between statement to the query. * * @param string $column * @param array $values - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereBetween($column, $values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereBetween($column, $values); } - - /** + + /** + * Add an or where between statement using columns to the query. + * + * @param string $column + * @param array $values + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function orWhereBetweenColumns($column, $values) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereBetweenColumns($column, $values); + } + + /** * Add a where not between statement to the query. * * @param string $column * @param array $values * @param string $boolean - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereNotBetween($column, $values, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereNotBetween($column, $values, $boolean); } - - /** + + /** + * Add a where not between statement using columns to the query. + * + * @param string $column + * @param array $values + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereNotBetweenColumns($column, $values, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereNotBetweenColumns($column, $values, $boolean); + } + + /** * Add an or where not between statement to the query. * * @param string $column * @param array $values - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereNotBetween($column, $values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereNotBetween($column, $values); } - - /** + + /** + * Add an or where not between statement using columns to the query. + * + * @param string $column + * @param array $values + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function orWhereNotBetweenColumns($column, $values) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereNotBetweenColumns($column, $values); + } + + /** * Add an "or where not null" clause to the query. * * @param string $column - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereNotNull($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereNotNull($column); } - - /** + + /** * Add a "where date" statement to the query. * - * @param string $column + * @param \Illuminate\Database\Query\Expression|string $column * @param string $operator * @param \DateTimeInterface|string|null $value * @param string $boolean - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereDate($column, $operator, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereDate($column, $operator, $value, $boolean); } - - /** + + /** * Add an "or where date" statement to the query. * * @param string $column * @param string $operator * @param \DateTimeInterface|string|null $value - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereDate($column, $operator, $value = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereDate($column, $operator, $value); } - - /** + + /** * Add a "where time" statement to the query. * * @param string $column * @param string $operator * @param \DateTimeInterface|string|null $value * @param string $boolean - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereTime($column, $operator, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereTime($column, $operator, $value, $boolean); } - - /** + + /** * Add an "or where time" statement to the query. * * @param string $column * @param string $operator * @param \DateTimeInterface|string|null $value - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereTime($column, $operator, $value = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereTime($column, $operator, $value); } - - /** + + /** * Add a "where day" statement to the query. * * @param string $column * @param string $operator * @param \DateTimeInterface|string|null $value * @param string $boolean - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereDay($column, $operator, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereDay($column, $operator, $value, $boolean); } - - /** + + /** * Add an "or where day" statement to the query. * * @param string $column * @param string $operator * @param \DateTimeInterface|string|null $value - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereDay($column, $operator, $value = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereDay($column, $operator, $value); } - - /** + + /** * Add a "where month" statement to the query. * * @param string $column * @param string $operator * @param \DateTimeInterface|string|null $value * @param string $boolean - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereMonth($column, $operator, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereMonth($column, $operator, $value, $boolean); } - - /** + + /** * Add an "or where month" statement to the query. * * @param string $column * @param string $operator * @param \DateTimeInterface|string|null $value - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereMonth($column, $operator, $value = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereMonth($column, $operator, $value); } - - /** + + /** * Add a "where year" statement to the query. * * @param string $column * @param string $operator * @param \DateTimeInterface|string|int|null $value * @param string $boolean - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereYear($column, $operator, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereYear($column, $operator, $value, $boolean); } - - /** + + /** * Add an "or where year" statement to the query. * * @param string $column * @param string $operator * @param \DateTimeInterface|string|int|null $value - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereYear($column, $operator, $value = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereYear($column, $operator, $value); } - - /** + + /** * Add a nested where statement to the query. * * @param \Closure $callback * @param string $boolean - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereNested($callback, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereNested($callback, $boolean); } - - /** + + /** * Create a new query instance for nested where condition. * - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function forNestedWhere() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->forNestedWhere(); } - - /** + + /** * Add another query builder as a nested where to the query builder. * - * @param \Illuminate\Database\Query\Builder|static $query + * @param \Illuminate\Database\Query\Builder $query * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function addNestedWhereQuery($query, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->addNestedWhereQuery($query, $boolean); } - - /** + + /** * Add an exists clause to the query. * * @param \Closure $callback * @param string $boolean * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereExists($callback, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereExists($callback, $boolean, $not); } - - /** + + /** * Add an or exists clause to the query. * * @param \Closure $callback * @param bool $not - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereExists($callback, $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereExists($callback, $not); } - - /** + + /** * Add a where not exists clause to the query. * * @param \Closure $callback * @param string $boolean - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereNotExists($callback, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereNotExists($callback, $boolean); } - - /** + + /** * Add a where not exists clause to the query. * * @param \Closure $callback - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereNotExists($callback) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereNotExists($callback); } - - /** + + /** * Add an exists clause to the query. * * @param \Illuminate\Database\Query\Builder $query * @param string $boolean * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function addWhereExistsQuery($query, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->addWhereExistsQuery($query, $boolean, $not); } - - /** + + /** * Adds a where condition using row values. * * @param array $columns * @param string $operator * @param array $values * @param string $boolean - * @return \Illuminate\Database\Query\Builder + * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException - * @static + * @static */ public static function whereRowValues($columns, $operator, $values, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereRowValues($columns, $operator, $values, $boolean); } - - /** - * Adds a or where condition using row values. + + /** + * Adds an or where condition using row values. * * @param array $columns * @param string $operator * @param array $values - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereRowValues($columns, $operator, $values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereRowValues($columns, $operator, $values); } - - /** + + /** * Add a "where JSON contains" clause to the query. * * @param string $column * @param mixed $value * @param string $boolean * @param bool $not - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereJsonContains($column, $value, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereJsonContains($column, $value, $boolean, $not); } - - /** - * Add a "or where JSON contains" clause to the query. + + /** + * Add an "or where JSON contains" clause to the query. * * @param string $column * @param mixed $value - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereJsonContains($column, $value) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereJsonContains($column, $value); } - - /** + + /** * Add a "where JSON not contains" clause to the query. * * @param string $column * @param mixed $value * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereJsonDoesntContain($column, $value, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereJsonDoesntContain($column, $value, $boolean); } - - /** - * Add a "or where JSON not contains" clause to the query. + + /** + * Add an "or where JSON not contains" clause to the query. * * @param string $column * @param mixed $value - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereJsonDoesntContain($column, $value) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereJsonDoesntContain($column, $value); } - - /** + + /** * Add a "where JSON length" clause to the query. * * @param string $column * @param mixed $operator * @param mixed $value * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function whereJsonLength($column, $operator, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->whereJsonLength($column, $operator, $value, $boolean); } - - /** - * Add a "or where JSON length" clause to the query. + + /** + * Add an "or where JSON length" clause to the query. * * @param string $column * @param mixed $operator * @param mixed $value - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orWhereJsonLength($column, $operator, $value = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orWhereJsonLength($column, $operator, $value); } - - /** + + /** * Handles dynamic "where" clauses to the query. * * @param string $method * @param array $parameters - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function dynamicWhere($method, $parameters) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->dynamicWhere($method, $parameters); } - - /** + + /** + * Add a "where fulltext" clause to the query. + * + * @param string|string[] $columns + * @param string $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereFullText($columns, $value, $options = [], $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereFullText($columns, $value, $options, $boolean); + } + + /** + * Add a "or where fulltext" clause to the query. + * + * @param string|string[] $columns + * @param string $value + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function orWhereFullText($columns, $value, $options = []) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereFullText($columns, $value, $options); + } + + /** * Add a "group by" clause to the query. * * @param array|string $groups - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function groupBy(...$groups) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->groupBy(...$groups); } - - /** + + /** * Add a raw groupBy clause to the query. * * @param string $sql * @param array $bindings - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function groupByRaw($sql, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->groupByRaw($sql, $bindings); } - - /** + + /** * Add a "having" clause to the query. * * @param string $column * @param string|null $operator * @param string|null $value * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function having($column, $operator = null, $value = null, $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->having($column, $operator, $value, $boolean); } - - /** - * Add a "or having" clause to the query. + + /** + * Add an "or having" clause to the query. * * @param string $column * @param string|null $operator * @param string|null $value - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orHaving($column, $operator = null, $value = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orHaving($column, $operator, $value); } - - /** + + /** * Add a "having between " clause to the query. * * @param string $column * @param array $values * @param string $boolean * @param bool $not - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function havingBetween($column, $values, $boolean = 'and', $not = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->havingBetween($column, $values, $boolean, $not); } - - /** + + /** * Add a raw having clause to the query. * * @param string $sql * @param array $bindings * @param string $boolean - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function havingRaw($sql, $bindings = [], $boolean = 'and') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->havingRaw($sql, $bindings, $boolean); } - - /** + + /** * Add a raw or having clause to the query. * * @param string $sql * @param array $bindings - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orHavingRaw($sql, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->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 + * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException - * @static + * @static */ public static function orderBy($column, $direction = 'asc') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orderBy($column, $direction); } - - /** + + /** * Add a descending "order by" clause to the query. * - * @param string $column - * @return \Illuminate\Database\Query\Builder - * @static + * @param \Closure|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder|\Illuminate\Database\Query\Expression|string $column + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orderByDesc($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orderByDesc($column); } - - /** + + /** * Put the query's results in random order. * * @param string $seed - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function inRandomOrder($seed = '') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->inRandomOrder($seed); } - - /** + + /** * Add a raw "order by" clause to the query. * * @param string $sql * @param array $bindings - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function orderByRaw($sql, $bindings = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->orderByRaw($sql, $bindings); } - - /** + + /** * Alias to set the "offset" value of the query. * * @param int $value - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function skip($value) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->skip($value); } - - /** + + /** * Set the "offset" value of the query. * * @param int $value - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function offset($value) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->offset($value); } - - /** + + /** * Alias to set the "limit" value of the query. * * @param int $value - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function take($value) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->take($value); } - - /** + + /** * Set the "limit" value of the query. * * @param int $value - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function limit($value) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->limit($value); } - - /** + + /** * Set the limit and offset for a given page. * * @param int $page * @param int $perPage - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function forPage($page, $perPage = 15) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->forPage($page, $perPage); } - - /** + + /** * Constrain the query to the previous "page" of results before a given ID. * * @param int $perPage * @param int|null $lastId * @param string $column - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->forPageBeforeId($perPage, $lastId, $column); } - - /** + + /** * Constrain the query to the next "page" of results after a given ID. * * @param int $perPage * @param int|null $lastId * @param string $column - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->forPageAfterId($perPage, $lastId, $column); } - - /** + + /** + * Remove all existing orders and optionally add a new order. + * + * @param \Closure|\Illuminate\Database\Query\Builder|\Illuminate\Database\Query\Expression|string|null $column + * @param string $direction + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function reorder($column = null, $direction = 'asc') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->reorder($column, $direction); + } + + /** * Add a union statement to the query. * * @param \Illuminate\Database\Query\Builder|\Closure $query * @param bool $all - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function union($query, $all = false) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->union($query, $all); } - - /** + + /** * Add a union all statement to the query. * * @param \Illuminate\Database\Query\Builder|\Closure $query - * @return \Illuminate\Database\Query\Builder|static - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function unionAll($query) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->unionAll($query); } - - /** + + /** * Lock the selected rows in the table. * * @param string|bool $value - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function lock($value = true) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->lock($value); } - - /** + + /** * Lock the selected rows in the table for updating. * - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function lockForUpdate() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->lockForUpdate(); } - - /** + + /** * Share lock the selected rows in the table. * - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function sharedLock() { /** @var \Illuminate\Database\Query\Builder $instance */ 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. * - * @return string - * @static + * @return string + * @static */ public static function toSql() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->toSql(); } - - /** + + /** * Get the count of the total records for the paginator. * * @param array $columns - * @return int - * @static + * @return int + * @static */ public static function getCountForPagination($columns = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->getCountForPagination($columns); } - - /** + + /** * Concatenate values of a given column as a string. * * @param string $column * @param string $glue - * @return string - * @static + * @return string + * @static */ public static function implode($column, $glue = '') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->implode($column, $glue); } - - /** + + /** * Determine if any rows exist for the current query. * - * @return bool - * @static + * @return bool + * @static */ public static function exists() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->exists(); } - - /** + + /** * Determine if no rows exist for the current query. * - * @return bool - * @static + * @return bool + * @static */ public static function doesntExist() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->doesntExist(); } - - /** + + /** * Execute the given callback if no rows exist for the current query. * * @param \Closure $callback - * @return mixed - * @static + * @return mixed + * @static */ public static function existsOr($callback) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->existsOr($callback); } - - /** + + /** * Execute the given callback if rows exist for the current query. * * @param \Closure $callback - * @return mixed - * @static + * @return mixed + * @static */ public static function doesntExistOr($callback) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->doesntExistOr($callback); } - - /** + + /** * Retrieve the "count" result of the query. * * @param string $columns - * @return int - * @static + * @return int + * @static */ public static function count($columns = '*') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->count($columns); } - - /** + + /** * Retrieve the minimum value of a given column. * * @param string $column - * @return mixed - * @static + * @return mixed + * @static */ public static function min($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->min($column); } - - /** + + /** * Retrieve the maximum value of a given column. * * @param string $column - * @return mixed - * @static + * @return mixed + * @static */ public static function max($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->max($column); } - - /** + + /** * Retrieve the sum of the values of a given column. * * @param string $column - * @return mixed - * @static + * @return mixed + * @static */ public static function sum($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->sum($column); } - - /** + + /** * Retrieve the average of the values of a given column. * * @param string $column - * @return mixed - * @static + * @return mixed + * @static */ public static function avg($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->avg($column); } - - /** + + /** * Alias for the "avg" method. * * @param string $column - * @return mixed - * @static + * @return mixed + * @static */ public static function average($column) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->average($column); } - - /** + + /** * Execute an aggregate function on the database. * * @param string $function * @param array $columns - * @return mixed - * @static + * @return mixed + * @static */ public static function aggregate($function, $columns = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->aggregate($function, $columns); } - - /** + + /** * Execute a numeric aggregate function on the database. * * @param string $function * @param array $columns - * @return float|int - * @static + * @return float|int + * @static */ public static function numericAggregate($function, $columns = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->numericAggregate($function, $columns); } - - /** - * Insert a new record into the database. + + /** + * Insert new records into the database. * * @param array $values - * @return bool - * @static + * @return bool + * @static */ public static function insert($values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->insert($values); } - - /** - * Insert a new record into the database while ignoring errors. + + /** + * Insert new records into the database while ignoring errors. * * @param array $values - * @return int - * @static + * @return int + * @static */ public static function insertOrIgnore($values) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->insertOrIgnore($values); } - - /** + + /** * Insert a new record and get the value of the primary key. * * @param array $values * @param string|null $sequence - * @return int - * @static + * @return int + * @static */ public static function insertGetId($values, $sequence = null) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->insertGetId($values, $sequence); } - - /** + + /** * Insert new records into the table using a subquery. * * @param array $columns * @param \Closure|\Illuminate\Database\Query\Builder|string $query - * @return int - * @static + * @return int + * @static */ public static function insertUsing($columns, $query) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->insertUsing($columns, $query); } - - /** + + /** + * Update records in a PostgreSQL database using the update from syntax. + * + * @param array $values + * @return int + * @static + */ + public static function updateFrom($values) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->updateFrom($values); + } + + /** * Insert or update a record matching the attributes, and fill it with values. * * @param array $attributes * @param array $values - * @return bool - * @static + * @return bool + * @static */ public static function updateOrInsert($attributes, $values = []) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->updateOrInsert($attributes, $values); } - - /** + + /** * Run a truncate statement on the table. * - * @return void - * @static + * @return void + * @static */ public static function truncate() { /** @var \Illuminate\Database\Query\Builder $instance */ $instance->truncate(); } - - /** + + /** * Create a raw database expression. * * @param mixed $value - * @return \Illuminate\Database\Query\Expression - * @static + * @return \Illuminate\Database\Query\Expression + * @static */ public static function raw($value) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->raw($value); } - - /** + + /** * Get the current query value bindings in a flattened array. * - * @return array - * @static + * @return array + * @static */ public static function getBindings() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->getBindings(); } - - /** + + /** * Get the raw array of bindings. * - * @return array - * @static + * @return array + * @static */ public static function getRawBindings() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->getRawBindings(); } - - /** + + /** * Set the bindings on the query builder. * * @param array $bindings * @param string $type - * @return \Illuminate\Database\Query\Builder + * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException - * @static + * @static */ public static function setBindings($bindings, $type = 'where') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->setBindings($bindings, $type); } - - /** + + /** * Add a binding to the query. * * @param mixed $value * @param string $type - * @return \Illuminate\Database\Query\Builder + * @return \Illuminate\Database\Query\Builder * @throws \InvalidArgumentException - * @static + * @static */ public static function addBinding($value, $type = 'where') { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->addBinding($value, $type); } - - /** + + /** + * Cast the given binding value. + * + * @param mixed $value + * @return mixed + * @static + */ + public static function castBinding($value) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->castBinding($value); + } + + /** * Merge an array of bindings into our bindings. * * @param \Illuminate\Database\Query\Builder $query - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function mergeBindings($query) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->mergeBindings($query); } - - /** + + /** + * Remove all of the expressions from a list of bindings. + * + * @param array $bindings + * @return array + * @static + */ + public static function cleanBindings($bindings) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->cleanBindings($bindings); + } + + /** * Get the database query processor instance. * - * @return \Illuminate\Database\Query\Processors\Processor - * @static + * @return \Illuminate\Database\Query\Processors\Processor + * @static */ public static function getProcessor() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->getProcessor(); } - - /** + + /** * Get the query grammar instance. * - * @return \Illuminate\Database\Query\Grammars\Grammar - * @static + * @return \Illuminate\Database\Query\Grammars\Grammar + * @static */ public static function getGrammar() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->getGrammar(); } - - /** + + /** * Use the write pdo for query. * - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function useWritePdo() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->useWritePdo(); } - - /** + + /** * Clone the query without the given properties. * * @param array $properties - * @return static - * @static + * @return static + * @static */ public static function cloneWithout($properties) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->cloneWithout($properties); } - - /** + + /** * Clone the query without the given bindings. * * @param array $except - * @return static - * @static + * @return static + * @static */ public static function cloneWithoutBindings($except) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->cloneWithoutBindings($except); } - - /** + + /** * Dump the current SQL and bindings. * - * @return \Illuminate\Database\Query\Builder - * @static + * @return \Illuminate\Database\Query\Builder + * @static */ public static function dump() { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->dump(); } - - /** + + /** * Die and dump the current SQL and bindings. * - * @return void - * @static + * @return never + * @static */ public static function dd() { /** @var \Illuminate\Database\Query\Builder $instance */ - $instance->dd(); + return $instance->dd(); } - - /** + + /** + * Explains the query. + * + * @return \Illuminate\Support\Collection + * @static + */ + public static function explain() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->explain(); + } + + /** * Register a custom macro. * * @param string $name * @param object|callable $macro - * @return void - * @static + * @return void + * @static */ public static function macro($name, $macro) { \Illuminate\Database\Query\Builder::macro($name, $macro); } - - /** + + /** * Mix another object into the class. * * @param object $mixin * @param bool $replace - * @return void + * @return void * @throws \ReflectionException - * @static + * @static */ public static function mixin($mixin, $replace = true) { \Illuminate\Database\Query\Builder::mixin($mixin, $replace); } - - /** + + /** + * Flush the existing macros. + * + * @return void + * @static + */ + public static function flushMacros() + { + \Illuminate\Database\Query\Builder::flushMacros(); + } + + /** * Dynamically handle calls to the class. * * @param string $method * @param array $parameters - * @return mixed + * @return mixed * @throws \BadMethodCallException - * @static + * @static */ public static function macroCall($method, $parameters) { /** @var \Illuminate\Database\Query\Builder $instance */ return $instance->macroCall($method, $parameters); } - } - - class Event extends \Illuminate\Support\Facades\Event {} - - class File extends \Illuminate\Support\Facades\File {} - - class Gate extends \Illuminate\Support\Facades\Gate {} - - class Hash extends \Illuminate\Support\Facades\Hash {} - - class Lang extends \Illuminate\Support\Facades\Lang {} - - class Log extends \Illuminate\Support\Facades\Log {} - - class Mail extends \Illuminate\Support\Facades\Mail {} - - class Notification extends \Illuminate\Support\Facades\Notification {} - - class Password extends \Illuminate\Support\Facades\Password {} - - class Queue extends \Illuminate\Support\Facades\Queue {} - - class Redirect extends \Illuminate\Support\Facades\Redirect {} - - class Request extends \Illuminate\Support\Facades\Request {} - - class Response extends \Illuminate\Support\Facades\Response {} - - class Route extends \Illuminate\Support\Facades\Route {} - - class Schema extends \Illuminate\Support\Facades\Schema {} - - class Session extends \Illuminate\Support\Facades\Session {} - - class Storage extends \Illuminate\Support\Facades\Storage {} - - class Str extends \Illuminate\Support\Str {} - - class URL extends \Illuminate\Support\Facades\URL {} - - class Validator extends \Illuminate\Support\Facades\Validator {} - - class View extends \Illuminate\Support\Facades\View {} - - class Input extends \Illuminate\Support\Facades\Request {} - - class Form extends \Collective\Html\FormFacade {} - - class Image extends \Intervention\Image\Facades\Image {} - - class Carbon extends \Carbon\Carbon {} - - class Date extends \Jenssegers\Date\Date {} - - class HTMLHelper extends \App\Services\HTMLHelper {} - - class Util extends \App\Services\Util {} - - class Excel extends \Maatwebsite\Excel\Facades\Excel {} - - class DataTables extends \Yajra\DataTables\Facades\DataTables {} - - class PDF extends \Barryvdh\DomPDF\Facade {} - - class Debugbar extends \Barryvdh\Debugbar\Facade {} - - class Flash extends \Laracasts\Flash\Flash {} - - class Html extends \Collective\Html\HtmlFacade {} - + } + class Event extends \Illuminate\Support\Facades\Event {} + class File extends \Illuminate\Support\Facades\File {} + class Gate extends \Illuminate\Support\Facades\Gate {} + class Hash extends \Illuminate\Support\Facades\Hash {} + class Lang extends \Illuminate\Support\Facades\Lang {} + class Log extends \Illuminate\Support\Facades\Log {} + class Mail extends \Illuminate\Support\Facades\Mail {} + class Notification extends \Illuminate\Support\Facades\Notification {} + class Password extends \Illuminate\Support\Facades\Password {} + class Queue extends \Illuminate\Support\Facades\Queue {} + class Redirect extends \Illuminate\Support\Facades\Redirect {} + class Request extends \Illuminate\Support\Facades\Request {} + class Response extends \Illuminate\Support\Facades\Response {} + class Route extends \Illuminate\Support\Facades\Route {} + class Schema extends \Illuminate\Support\Facades\Schema {} + class Session extends \Illuminate\Support\Facades\Session {} + class Storage extends \Illuminate\Support\Facades\Storage {} + class Str extends \Illuminate\Support\Str {} + class URL extends \Illuminate\Support\Facades\URL {} + class Validator extends \Illuminate\Support\Facades\Validator {} + class View extends \Illuminate\Support\Facades\View {} + class Input extends \Illuminate\Support\Facades\Request {} + class Form extends \Collective\Html\FormFacade {} + class Image extends \Intervention\Image\Facades\Image {} + class Carbon extends \Carbon\Carbon {} + class Date extends \Jenssegers\Date\Date {} + class HTMLHelper extends \App\Helper\HTMLHelper {} + class Util extends \App\Services\Util {} + class Excel extends \Maatwebsite\Excel\Facades\Excel {} + class DataTables extends \Yajra\DataTables\Facades\DataTables {} + class PDF extends \Barryvdh\DomPDF\Facade\Pdf {} + class Debugbar extends \Barryvdh\Debugbar\Facades\Debugbar {} + class Pdf extends \Barryvdh\DomPDF\Facade\Pdf {} + class Cart extends \Gloudemans\Shoppingcart\Facades\Cart {} + class Flare extends \Facade\Ignition\Facades\Flare {} + class Flash extends \Laracasts\Flash\Flash {} + class Html extends \Collective\Html\HtmlFacade {} + class Google2FA extends \PragmaRX\Google2FALaravel\Facade {} + } diff --git a/_ide_helper_models.php b/_ide_helper_models.php index 5e450ad..966c260 100644 --- a/_ide_helper_models.php +++ b/_ide_helper_models.php @@ -1,6 +1,7 @@ $booking_documents + * @property-read int|null $booking_documents_count + * @property-read Collection $customer_mails_reverse + * @property-read int|null $customer_mails_reverse_count + * @property-read \App\Models\Salutation|null $participant_salutation + * @method static \Illuminate\Database\Eloquent\Builder|Booking whereAirportId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Booking whereInsuranceOffer($value) + * @mixin \Eloquent + */ + class Booking extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class BookingApplication + * + * @property int $id + * @property int $booking_id + * @property float $total + * @property boolean $binary_data + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Booking $booking + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication whereBinaryData($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication whereTotal($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication whereUpdatedAt($value) + * @mixin \Eloquent + */ + class BookingApplication extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class BookingCompanyService + * + * @property int $id + * @property int $travel_company_service_id + * @property int $booking_id + * @property int $status + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Booking $booking + * @property TravelCompanyService $travel_company_service + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService whereTravelCompanyServiceId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService whereUpdatedAt($value) + * @mixin \Eloquent + */ + class BookingCompanyService extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class BookingConfirmation + * + * @property int $id + * @property int $booking_id + * @property float $total + * @property float $deposit + * @property float $final_payment + * @property Carbon $deposit_payment_date + * @property Carbon $final_payment_date + * @property boolean $binary_data + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Booking $booking + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereBinaryData($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereDeposit($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereDepositPaymentDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereFinalPayment($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereFinalPaymentDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereTotal($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereUpdatedAt($value) + * @mixin \Eloquent + */ + class BookingConfirmation extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class BookingCountryService + * + * @property int $id + * @property int $travel_country_service_id + * @property int $booking_id + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Booking $booking + * @property TravelCountryService $travel_country_service + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereTravelCountryServiceId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereUpdatedAt($value) + * @property int|null $status + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereStatus($value) + * @mixin \Eloquent + */ + class BookingCountryService extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class BookingDocument + * + * @property int $id + * @property int|null $booking_id + * @property int|null $customer_id + * @property int|null $lead_id + * @property string $identifier + * @property string $filename + * @property string $dir + * @property string $original_name + * @property string $ext + * @property string $mine + * @property int $size + * @property Carbon $date + * @property Carbon|null $created_at + * @property Carbon|null $updated_at + * @property Booking|null $booking + * @property Customer|null $customer + * @property Lead|null $lead + * @package App\Models + * @property \App\Models\Coupon|null $coupon_id + * @property int|null $booking_storno_id + * @property object|null $data + * @property int|null $status + * @property-read \App\Models\BookingStorno|null $booking_storno + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument query() + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereBookingStornoId($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereCouponId($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereCustomerId($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereData($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereDir($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereExt($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereFilename($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereIdentifier($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereLeadId($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereMine($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereOriginalName($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereSize($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|BookingDocument whereUpdatedAt($value) + * @mixin \Eloquent + */ + class BookingDocument extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\BookingDraftItem + * + * @property int $id + * @property int $booking_id + * @property int $travel_program_id + * @property int|null $travel_class_id + * @property int|null $draft_item_id + * @property int|null $draft_type_id + * @property string|null $request_date + * @property int|null $days_start + * @property int|null $days_duration + * @property string|null $start_date + * @property string|null $end_date + * @property string|null $service + * @property float|null $price_adult + * @property int|null $adult + * @property float|null $price_children + * @property int|null $children + * @property int|null $pos + * @property int $in_pdf + * @property int $status + * @property int $comfort + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \App\Models\DraftItem|null $draft_item + * @property-read \App\Models\DraftType|null $draft_type + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereAdult($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereChildren($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereComfort($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereDaysDuration($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereDaysStart($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereDraftItemId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereDraftTypeId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereEndDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereInPdf($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem wherePriceAdult($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem wherePriceChildren($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereRequestDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereService($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereStartDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereTravelClassId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereTravelProgramId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereUpdatedAt($value) + * @property int|null $fewo_lodging_id + * @property float|null $price + * @property-read \App\Models\Booking $booking + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereFewoLodgingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem wherePrice($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem query() + * @mixin \Eloquent + */ + class BookingDraftItem extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class BookingFile + * + * @property int $id + * @property int $booking_id + * @property string $identifier + * @property string $filename + * @property string $dir + * @property string $original_name + * @property string $ext + * @property string $mine + * @property int $size + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Booking $booking + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereDir($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereExt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereFilename($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereIdentifier($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereMine($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereOriginalName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereSize($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereUpdatedAt($value) + * @mixin \Eloquent + */ + class BookingFile extends \Eloquent {} } namespace App\Models{ @@ -252,52 +716,577 @@ namespace App\Models{ namespace App\Models{ /** - * App\Models\TravelProgramDraft + * Class BookingNotice * * @property int $id - * @property int $travel_program_id - * @property int $travel_class_id - * @property int $draft_id - * @property array $weekdays - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @property-read \App\Models\Draft $draft - * @property-read \App\Models\TravelClass $travel_class - * @property-read \App\Models\TravelProgram $travel_program - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereDraftId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereTravelClassId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereTravelProgramId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereWeekdays($value) + * @property int $booking_id + * @property int $from_user_id + * @property int $to_user_id + * @property string $message + * @property bool $show + * @property bool $important + * @property Carbon $edit_at + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Booking $booking + * @property User $user + * @package App\Models + * @property-read \App\User $from_user + * @property-read \App\User|null $to_user + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingNotice newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingNotice newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingNotice query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingNotice whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingNotice whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingNotice whereEditAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingNotice whereFromUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingNotice whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingNotice whereImportant($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingNotice whereMessage($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingNotice whereShow($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingNotice whereToUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingNotice whereUpdatedAt($value) * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft query() */ - class TravelProgramDraft extends \Eloquent {} + class BookingNotice extends \Eloquent {} } namespace App\Models{ /** - * Class Keyword + * Class BookingProviderService + * + * @property int $id + * @property int $service_provider_service_id + * @property int $booking_id + * @property int $status + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Booking $booking + * @property ServiceProviderService $service_provider_service + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService whereServiceProviderServiceId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService whereUpdatedAt($value) + * @mixin \Eloquent + */ + class BookingProviderService extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class BookingServiceItem + * + * @property int $id + * @property int $booking_id + * @property int $travel_company_id + * @property float $service_price + * @property float $service_price_refund + * @property float $commission + * @property Carbon $travel_date + * @property Carbon $created_at + * @property Carbon $updated_at + * @property string $name + * @property bool $is_commission_locked + * @property Booking $booking + * @property TravelCompany $travel_company + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereCommission($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereIsCommissionLocked($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereServicePrice($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereServicePriceRefund($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereTravelCompanyId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereTravelDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereUpdatedAt($value) + * @mixin \Eloquent + */ + class BookingServiceItem extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class BookingStorno + * + * @property int $id + * @property int $booking_id + * @property float $total + * @property float $storno + * @property Carbon $storno_date + * @property boolean $binary_data + * @property bool $done + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Booking $booking + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereBinaryData($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereDone($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereStorno($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereStornoDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereTotal($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereUpdatedAt($value) + * @property \Illuminate\Support\Carbon|null $storno_print + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereStornoPrint($value) + * @property-read \App\Models\BookingDocument|null $booking_document + * @mixin \Eloquent + */ + class BookingStorno extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class BookingVoucher + * + * @property int $id + * @property int $booking_id + * @property boolean $binary_data + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Booking $booking + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher whereBinaryData($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher whereUpdatedAt($value) + * @mixin \Eloquent + */ + class BookingVoucher extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class BookingVoucherAgency + * + * @property int $id + * @property int $booking_id + * @property boolean $binary_data + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Booking $booking + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucherAgency newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucherAgency newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucherAgency query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucherAgency whereBinaryData($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucherAgency whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucherAgency whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucherAgency whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucherAgency whereUpdatedAt($value) + * @mixin \Eloquent + */ + class BookingVoucherAgency extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class Branch + * + * @property int $id + * @property string $name + * @property Collection|Booking[] $bookings + * @property Collection|SfGuardUser[] $sf_guard_users + * @package App\Models + * @property-read int|null $bookings_count + * @property-read int|null $sf_guard_users_count + * @method static \Illuminate\Database\Eloquent\Builder|Branch newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Branch newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Branch query() + * @method static \Illuminate\Database\Eloquent\Builder|Branch whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Branch whereName($value) + * @mixin \Eloquent + */ + class Branch extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class CMSAuthor * * @property int $id * @property string $name * @property Carbon $created_at * @property Carbon $updated_at * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Keyword newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Keyword newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Keyword query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Keyword whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Keyword whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Keyword whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Keyword whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor whereUpdatedAt($value) + * @property string|null $description + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor whereDescription($value) * @mixin \Eloquent */ - class Keyword extends \Eloquent {} + class CMSAuthor extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\CMSContent + * + * @property int $id + * @property string $name + * @property string $slug + * @property string|null $identifier + * @property string $field + * @property string|null $text + * @property string|null $full_text + * @property array|null $object + * @property int|null $integer + * @property string|null $decimal + * @property int|null $pos + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent findSimilarSlugs(string $attribute, array $config, string $slug) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent query() + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereDecimal($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereField($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereFullText($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereIdentifier($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereInteger($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereObject($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereText($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent + */ + class CMSContent extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\CMSInfo + * + * @property int $id + * @property string $name + * @property string $slug + * @property string $field + * @property string|null $text + * @property string|null $full_text + * @property int|null $integer + * @property float|null $decimal + * @property int $active + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo findSimilarSlugs($attribute, $config, $slug) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereDecimal($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereField($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereFullText($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereInteger($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereText($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereUpdatedAt($value) + * @property string $type + * @property int $bool + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereBool($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereType($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSInfo withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent + */ + class CMSInfo extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\CMSInfoAvailable + * + * @property int $id + * @property string $type + * @property bool $active + * @property string|null $from + * @property string|null $to + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereFrom($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereTo($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereType($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereUpdatedAt($value) + * @property int $wday + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereWday($value) + * @property int|null $special + * @property string|null $date + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereSpecial($value) + * @mixin \Eloquent + */ + class CMSInfoAvailable extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\CMSInfoHoliday + * + * @property int $id + * @property bool $local + * @property bool $phone + * @property string $from + * @property string $to + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday whereFrom($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday whereLocal($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday wherePhone($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday whereTo($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday whereUpdatedAt($value) + * @mixin \Eloquent + */ + class CMSInfoHoliday extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\Country + * + * @property int $id + * @property string $code + * @property string $phone + * @property string $en + * @property string $de + * @property string $es + * @property string $fr + * @property string $it + * @property string $ru + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereCode($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereDe($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereEn($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereEs($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereFr($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereIt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country wherePhone($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereRu($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country query() + * @mixin \Eloquent + */ + class Country extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class Coupon + * + * @property int $id + * @property string $number + * @property int $customer_id + * @property int $booking_id + * @property float $value + * @property Carbon $issue_date + * @property Carbon $valid_date + * @property bool $is_redeemed + * @property Carbon $redeem_date + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Booking $booking + * @property Customer $customer + * @property Collection|Booking[] $bookings + * @package App\Models + * @property-read int|null $bookings_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereCustomerId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereIsRedeemed($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereIssueDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereNumber($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereRedeemDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereValidDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereValue($value) + * @property string|null $text + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereText($value) + * @property-read \App\Models\BookingDocument|null $booking_document + * @mixin \Eloquent + */ + class Coupon extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class CreditCardType + * + * @property int $id + * @property string $name + * @property Collection|Customer[] $customers + * @package App\Models + * @property-read int|null $customers_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CreditCardType newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CreditCardType newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CreditCardType query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CreditCardType whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CreditCardType whereName($value) + * @mixin \Eloquent + */ + class CreditCardType extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class Customer + * + * @property int $id + * @property int $salutation_id + * @property string $title + * @property string $name + * @property string $firstname + * @property Carbon $birthdate + * @property string $company + * @property string $street + * @property string $zip + * @property string $city + * @property string $email + * @property string $phone + * @property string $phonebusiness + * @property string $phonemobile + * @property string $fax + * @property string $bank + * @property string $bank_code + * @property string $bank_account_number + * @property int $credit_card_type_id + * @property string $credit_card_number + * @property Carbon $credit_card_expiration_date + * @property string $participants_remarks + * @property string $miscellaneous_remarks + * @property Carbon $created_at + * @property Carbon $updated_at + * @property int $country_id + * @property TravelCountry $travel_country + * @property CreditCardType $credit_card_type + * @property Salutation $salutation + * @property Collection|Booking[] $bookings + * @property Collection|Coupon[] $coupons + * @property Collection|Lead[] $leads + * @package App\Models + * @property-read int|null $bookings_count + * @property-read int|null $coupons_count + * @property-read int|null $leads_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereBank($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereBankAccountNumber($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereBankCode($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereBirthdate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereCity($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereCompany($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereCreditCardExpirationDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereCreditCardNumber($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereCreditCardTypeId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereEmail($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereFax($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereFirstname($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereMiscellaneousRemarks($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereParticipantsRemarks($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer wherePhone($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer wherePhonebusiness($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer wherePhonemobile($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereSalutationId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereStreet($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereZip($value) + * @mixin \Eloquent + */ + class Customer extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class CustomerFewoFile + * + * @property int $id + * @property int $travel_user_id + * @property int $customer_fewo_mail_id + * @property string $identifier + * @property string $filename + * @property string $dir + * @property string $original_name + * @property string $ext + * @property string $mine + * @property int $size + * @property Carbon $created_at + * @property Carbon $updated_at + * @property CustomerFewoMail $customer_fewo_mail + * @property TravelUser $travel_user + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereCustomerFewoMailId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereDir($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereExt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereFilename($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereIdentifier($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereMine($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereOriginalName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereSize($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereTravelUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereUpdatedAt($value) + * @property \Illuminate\Support\Carbon|null $deleted_at + * @method static \Illuminate\Database\Query\Builder|\App\Models\CustomerFewoFile onlyTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereDeletedAt($value) + * @method static \Illuminate\Database\Query\Builder|\App\Models\CustomerFewoFile withTrashed() + * @method static \Illuminate\Database\Query\Builder|\App\Models\CustomerFewoFile withoutTrashed() + * @mixin \Eloquent + */ + class CustomerFewoFile extends \Eloquent {} } namespace App\Models{ @@ -361,7 +1350,6 @@ namespace App\Models{ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereTravelUserBookingFewoId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereTravelUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereUpdatedAt($value) - * @mixin \Eloquent * @property-read \App\Models\TravelUserBookingFewo $booking * @property-read \App\Models\TravelUser $customer * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\CustomerFewoFile[] $customer_files @@ -372,195 +1360,2080 @@ namespace App\Models{ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereDeletedAt($value) * @method static \Illuminate\Database\Query\Builder|\App\Models\CustomerFewoMail withTrashed() * @method static \Illuminate\Database\Query\Builder|\App\Models\CustomerFewoMail withoutTrashed() + * @property array|null $forward + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereForward($value) + * @mixin \Eloquent */ class CustomerFewoMail extends \Eloquent {} } namespace App\Models{ /** - * App\Models\TravelNationality + * Class CustomerFile * * @property int $id - * @property string|null $name - * @property int|null $active - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality whereName($value) + * @property int $customer_id + * @property int $customer_mail_id + * @property string $identifier + * @property string $filename + * @property string $dir + * @property string $original_name + * @property string $ext + * @property string $mine + * @property int $size + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Customer $customer + * @property CustomerMail $customer_mail + * @package App\Models + * @property-read \App\User $user + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereCustomerId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereCustomerMailId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereDir($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereExt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereFilename($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereIdentifier($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereMine($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereOriginalName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereSize($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereUpdatedAt($value) * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality query() */ - class TravelNationality extends \Eloquent {} + class CustomerFile extends \Eloquent {} } namespace App\Models{ /** - * Class Booking + * Class CustomerMail * * @property int $id - * @property Carbon $booking_date + * @property int $booking_id * @property int $customer_id * @property int $lead_id - * @property bool $new_drafts - * @property int $sf_guard_user_id - * @property int $branch_id - * @property float $service_fee + * @property bool $is_answer + * @property int $reply_id + * @property string $email + * @property string $recipient + * @property string $cc + * @property string $bcc + * @property string $subject + * @property string $message + * @property int $dir * @property int $travel_country_id - * @property int $travel_category_id - * @property int $pax - * @property int $coupon_id + * @property bool $draft + * @property bool $important + * @property bool $send + * @property bool $fail + * @property string $error + * @property Carbon $sent_at + * @property Carbon $scheduled_at + * @property Carbon $delivered_at * @property Carbon $created_at * @property Carbon $updated_at + * @property Booking $booking + * @property Customer $customer + * @property CustomerMail $customer_mail + * @property TravelCountry $travel_country + * @property Lead $lead + * @property Collection|CustomerFile[] $customer_files + * @property Collection|CustomerMail[] $customer_mails + * @package App\Models + * @property-read int|null $customer_files_count + * @property-read int|null $customer_mails_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereBcc($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereCc($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereCustomerId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereDeliveredAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereDir($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereDraft($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereEmail($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereError($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereFail($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereImportant($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereIsAnswer($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereLeadId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereMessage($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereRecipient($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereReplyId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereScheduledAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereSend($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereSentAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereSubject($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereTravelCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereUpdatedAt($value) + * @property int|null $subdir + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereSubdir($value) + * @property array|null $forward + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereForward($value) + * @mixin \Eloquent + */ + class CustomerMail extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\Draft + * + * @property int $id + * @property string $name + * @property int $active + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft whereUpdatedAt($value) + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\DraftItem[] $draft_items + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelProgramDraft[] $travel_program_drafts + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft query() + * @property-read int|null $draft_items_count + * @property-read int|null $travel_program_drafts_count + * @mixin \Eloquent + */ + class Draft extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\DraftItem + * + * @property int $id + * @property int $draft_id + * @property int $draft_type_id + * @property int|null $days_start + * @property int|null $days_duration + * @property string|null $name + * @property float|null $price_adult + * @property int|null $adult + * @property float|null $price_children + * @property int|null $children + * @property string|null $content + * @property int|null $pos + * @property int $in_pdf + * @property int $active + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \App\Models\Draft $draft + * @property-read \App\Models\DraftType $draft_type + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereAdult($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereChildren($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereContent($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereDaysDuration($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereDaysStart($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereDraftId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereDraftTypeId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereInPdf($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem wherePriceAdult($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem wherePriceChildren($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereUpdatedAt($value) + * @property string|null $service + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereService($value) + * @property float|null $price + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem wherePrice($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem query() + * @mixin \Eloquent + */ + class DraftItem extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\DraftType + * + * @property int $id + * @property string $name + * @property int $active + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereUpdatedAt($value) + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\DraftItem[] $draft_items + * @property string|null $color + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereColor($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType query() + * @property int|null $pos + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType wherePos($value) + * @property-read int|null $draft_items_count + * @mixin \Eloquent + */ + class DraftType extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class EmailTemplate + * + * @property int $id + * @property int $email_template_dir_id + * @property string $subject + * @property string $message + * @property bool $active + * @property Carbon $created_at + * @property Carbon $updated_at + * @property EmailTemplateDir $email_template_dir + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereEmailTemplateDirId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereMessage($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereSubject($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereUpdatedAt($value) + * @property string $name + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereName($value) + * @mixin \Eloquent + */ + class EmailTemplate extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class EmailTemplateDir + * + * @property int $id + * @property string $name + * @property string $color + * @property bool $active + * @property int $pos + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Collection|EmailTemplate[] $email_templates + * @package App\Models + * @property-read int|null $email_templates_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereColor($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereUpdatedAt($value) + * @mixin \Eloquent + */ + class EmailTemplateDir extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\Feedback + * + * @property int $id + * @property int|null $owner + * @property string|null $model + * @property int|null $lvl + * @property int $owner_second + * @property int|null $catalog_id + * @property int|null $catalog_index + * @property string|null $slug + * @property int|null $travel_program + * @property int|null $status + * @property int|null $show_in_navi + * @property int|null $order + * @property string|null $title + * @property string|null $pagetitle + * @property string|null $description + * @property string|null $keywords + * @property string|null $content + * @property string|null $content_new + * @property string|null $buma_destination + * @property int|null $OLD_CatalogID + * @property int|null $OLD_OwnerID + * @property int|null $buma_gjr + * @property string|null $date + * @property int $price-tags + * @property string|null $text_right + * @property string|null $keyword + * @property string|null $canonical_url + * @property int|null $country_id + * @property string|null $template + * @property int|null $lft + * @property int|null $rgt + * @property int|null $tree_root + * @property int|null $parent_id + * @property string|null $real_url_path + * @property string|null $box_body + * @property string|null $box_image_url + * @property string|null $box_star + * @property string|null $box_discount + * @property string|null $cms_settings + * @property int|null $fewo_lodging + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Feedback[] $children + * @property-read \App\Models\Feedback|null $parent + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereBoxBody($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereBoxDiscount($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereBoxImageUrl($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereBoxStar($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereBumaDestination($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereBumaGjr($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereCanonicalUrl($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereCatalogId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereCatalogIndex($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereCmsSettings($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereContent($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereContentNew($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereFewoLodging($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereKeyword($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereKeywords($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereLft($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereLvl($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereModel($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereOLDCatalogID($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereOLDOwnerID($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereOrder($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereOwner($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereOwnerSecond($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback wherePagetitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereParentId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback wherePriceTags($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereRealUrlPath($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereRgt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereShowInNavi($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTemplate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTextRight($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTravelProgram($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTreeRoot($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereUpdatedAt($value) + * @property int|null $travel_guide_content_id + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTravelGuideContentId($value) + * @property string|null $title_short + * @property string|null $before_title + * @property-read int|null $children_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereBeforeTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTitleShort($value) + * @property-read \Illuminate\Database\Eloquent\Collection $child_pages + * @property-read int|null $child_pages_count + * @property-read \App\Models\Page|null $page + * @property-read \Illuminate\Database\Eloquent\Collection $pages + * @property-read int|null $pages_count + * @property-read \App\Models\Page|null $parent_page + * @property-read \Illuminate\Database\Eloquent\Collection $travel_countries + * @property-read int|null $travel_countries_count + * @property-read \App\Models\TravelCountry|null $travel_country + * @property-read \App\Models\TravelGuide|null $travel_guide + * @property-read \App\Models\TravelProgram|null $travel_program_content + * @method static \Illuminate\Database\Eloquent\Builder|Page findSimilarSlugs(string $attribute, array $config, string $slug) + * @method static \Illuminate\Database\Eloquent\Builder|Page withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent + */ + class Feedback extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class FewoLodging + * + * @property int $id + * @property int $group_id + * @property int $type_id + * @property string $name + * @property string $description + * @property string $equipment + * @property string $adress1 + * @property string $adress2 + * @property string $zipcode + * @property string $city + * @property int $maximum_persons + * @property float $deposit + * @property bool $calendar_visible + * @property \App\Models\FewoLodgingType $fewo_lodging_type + * @property \App\Models\FewoLodgingGroup $fewo_lodging_group + * @property \Illuminate\Database\Eloquent\Collection $fewo_lodging_images + * @property \Illuminate\Database\Eloquent\Collection $fewo_prices + * @property \Illuminate\Database\Eloquent\Collection $fewo_reservations + * @property \Illuminate\Database\Eloquent\Collection $pages + * @property \Illuminate\Database\Eloquent\Collection $travel_user_booking_fewos + * @package App\Models + * @property string|null $single_name + * @property string $zip_code + * @property int|null $maximum_adults + * @property int|null $maximum_childs + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereAdress1($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereAdress2($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereCalendarVisible($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereCity($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereDeposit($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereEquipment($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereGroupId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereMaximumAdults($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereMaximumChilds($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereMaximumPersons($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereSingleName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereTypeId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereZipCode($value) + * @property-read int|null $fewo_lodging_images_count + * @property-read int|null $fewo_prices_count + * @property-read int|null $fewo_reservations_count + * @property-read int|null $pages_count + * @property-read int|null $travel_user_booking_fewos_count + * @property string|null $pdf_name + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging wherePdfName($value) + * @mixin \Eloquent + */ + class FewoLodging extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class FewoLodgingGroup + * + * @property int $id + * @property string $name + * @property \Illuminate\Database\Eloquent\Collection $fewo_lodgings + * @property \Illuminate\Database\Eloquent\Collection $fewo_lodging_group_images + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroup newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroup newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroup query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroup whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroup whereName($value) + * @property-read int|null $fewo_lodging_group_images_count + * @property-read int|null $fewo_lodgings_count + * @mixin \Eloquent + */ + class FewoLodgingGroup extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class FewoLodgingGroupImage + * + * @property int $id + * @property int $group_id + * @property string $comp + * @property int $pos + * @property string $full_file_name + * @property string $file_name + * @property string $description + * @property \App\Models\FewoLodgingGroup $fewo_lodging_group + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage whereComp($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage whereFileName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage whereFullFileName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage whereGroupId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage wherePos($value) + * @mixin \Eloquent + */ + class FewoLodgingGroupImage extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class FewoLodgingImage + * + * @property int $id + * @property int $lodging_id + * @property int $pos + * @property string $full_file_name + * @property string $file_name + * @property string $description + * @property \App\Models\FewoLodging $fewo_lodging + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage whereFileName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage whereFullFileName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage whereLodgingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage wherePos($value) + * @mixin \Eloquent + */ + class FewoLodgingImage extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class FewoLodgingType + * + * @property int $id + * @property string $name + * @property \Illuminate\Database\Eloquent\Collection $fewo_lodgings + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingType newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingType newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingType query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingType whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingType whereName($value) + * @property-read int|null $fewo_lodgings_count + * @mixin \Eloquent + */ + class FewoLodgingType extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class FewoPrice + * + * @property int $id + * @property int $lodging_id + * @property int $season_id + * @property float $per_night + * @property float $flat_price + * @property \App\Models\FewoSeason $fewo_season + * @property \App\Models\FewoLodging $fewo_lodging + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice whereFlatPrice($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice whereLodgingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice wherePerNight($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice whereSeasonId($value) + * @mixin \Eloquent + */ + class FewoPrice extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class FewoReservation + * + * @property int $id + * @property int $lodging_id + * @property \Carbon\Carbon $from_date + * @property \Carbon\Carbon $to_date + * @property int $status + * @property int $type + * @property \App\Models\FewoLodging $fewo_lodging + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation whereFromDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation whereLodgingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation whereToDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation whereType($value) + * @mixin \Eloquent + */ + class FewoReservation extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class FewoSeason + * + * @property int $id + * @property string $name + * @property \Carbon\Carbon $from_date + * @property \Carbon\Carbon $to_date + * @property int $minimum_stay + * @property string $description + * @property int $only_weekday + * @property \Illuminate\Database\Eloquent\Collection $fewo_prices + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereFromDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereMinimumStay($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereOnlyWeekday($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereToDate($value) + * @property-read int|null $fewo_prices_count + * @mixin \Eloquent + */ + class FewoSeason extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class GeneralFile + * + * @property int $id + * @property int $travel_country_id + * @property string $identifier + * @property string $filename + * @property string $dir + * @property string $original_name + * @property string $ext + * @property string $mine + * @property int $size + * @property Carbon $created_at + * @property Carbon $updated_at + * @property TravelCountry $travel_country + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereDir($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereExt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereFilename($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereIdentifier($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereMine($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereOriginalName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereSize($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereTravelCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereUpdatedAt($value) + * @mixin \Eloquent + */ + class GeneralFile extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class IQContentCategory + * + * @property int $id + * @property string $name + * @property string $slug + * @property string $identifier + * @property int $pos + * @property bool $active + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Collection|IQContentTag[] $i_q_content_tags + * @package App\Models + * @property-read int|null $i_q_content_tags_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory findSimilarSlugs($attribute, $config, $slug) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereIdentifier($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQContentCategory withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent + */ + class IQContentCategory extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class IQContentFaq + * + * @property int $id + * @property int $tree_node_id + * @property int $faq_id + * @property Carbon $created_at + * @property Carbon $updated_at + * @property AnswerQuestion $answer_question + * @property IQContentTreeNode $i_q_content_tree_node + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq whereTreeNodeId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq whereFaqId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq whereUpdatedAt($value) + * @mixin \Eloquent + */ + class IQContentFaq extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class IQContentFileTag + * + * @property int $id + * @property int $file_id + * @property int $tag_id + * @property Carbon $created_at + * @property Carbon $updated_at + * + * //* @property IQContentFile $i_q_content_file + * @property IQContentTag $i_q_content_tag + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag whereFileId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag whereTagId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag whereUpdatedAt($value) + * @mixin \Eloquent + */ + class IQContentFileTag extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\IQContentSite + * + * @property int $id + * @property int $tree_node_id + * @property int $travel_guide_id + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \App\Models\IQContentTreeNode $iq_content_tree_node + * @property-read \App\Models\TravelGuide $travel_guide + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereTravelGuideId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereTreeNodeId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereUpdatedAt($value) + * @property string|null $identifier + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereIdentifier($value) + * @mixin \Eloquent + */ + class IQContentSite extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class IQContentTag + * + * @property int $id + * @property int $category_id + * @property string $name + * @property string $slug + * @property int $pos + * @property bool $active + * @property Carbon $created_at + * @property Carbon $updated_at + * @property IQContentCategory $i_q_content_category + * // * @property Collection|IQContentFileTag[] $i_q_content_file_tags + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag whereCategoryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag whereUpdatedAt($value) + * @mixin \Eloquent + */ + class IQContentTag extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\IQContentTree + * + * @property int $id + * @property string $name + * @property string $identifier + * @property string $slug + * @property string|null $description + * @property array|null $settings + * @property int $pos + * @property int $active + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property \Illuminate\Support\Carbon|null $deleted_at + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentTreeNode[] $iq_content_tree_nodes + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree findSimilarSlugs($attribute, $config, $slug) + * @method static bool|null forceDelete() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree newQuery() + * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTree onlyTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree query() + * @method static bool|null restore() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereIdentifier($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereSettings($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereUpdatedAt($value) + * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTree withTrashed() + * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTree withoutTrashed() + * @property int|null $page_id + * @property int|null $root_id + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree wherePageId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereRootId($value) + * @property-read int|null $iq_content_tree_nodes_count + * @method static \Illuminate\Database\Eloquent\Builder|IQContentTree withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent + */ + class IQContentTree extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\IQContentTreeNode + * + * @property int $id + * @property int $tree_id + * @property int|null $parent_id + * @property int $lvl + * @property string $name + * @property string $identifier + * @property string $slug + * @property string|null $description + * @property array|null $settings + * @property int $pos + * @property int $active + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property \Illuminate\Support\Carbon|null $deleted_at + * @property-read \App\Models\IQContentTree $iq_content_tree + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentTreeNode[] $iq_content_tree_node_childs + * @property-read \App\Models\IQContentTreeNode|null $iq_content_tree_node_parent + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode findSimilarSlugs($attribute, $config, $slug) + * @method static bool|null forceDelete() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode newQuery() + * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTreeNode onlyTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode query() + * @method static bool|null restore() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereIdentifier($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereLvl($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereParentId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereSettings($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereTreeId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereUpdatedAt($value) + * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTreeNode withTrashed() + * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTreeNode withoutTrashed() + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentSite[] $iq_content_site + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentSite[] $iq_content_sites + * @property-read int|null $iq_content_sites_count + * @property-read int|null $iq_content_tree_node_childs_count + * @property string|null $title + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereTitle($value) + * @property array|null $image + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereImage($value) + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentFaq[] $iq_content_faq + * @property-read int|null $iq_content_faq_count + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentFaq[] $iq_content_faqs + * @property-read int|null $iq_content_faqs_count + * @method static \Illuminate\Database\Eloquent\Builder|IQContentTreeNode withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent + */ + class IQContentTreeNode extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class IQTravelGroup + * + * @property int $id + * @property string $name + * @property string $description + * @property string $highlights + * @property int $days_start + * @property int $days_duration + * @property int $min_persons + * @property float $price_adult + * @property float $price_children + * @property int $pos + * @property bool $active + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Collection|IQTravelGroupItem[] $i_q_travel_group_items + * @package App\Models + * @property-read int|null $i_q_travel_group_items_count + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup query() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup whereDaysDuration($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup whereDaysStart($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup whereHighlights($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup whereMinPersons($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup wherePriceAdult($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup wherePriceChildren($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroup whereUpdatedAt($value) + * @mixin \Eloquent + */ + class IQTravelGroup extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class IQTravelGroupItem + * + * @property int $id + * @property int $i_q_travel_group_id + * @property int $i_q_travel_item_id + * @property int $pos + * @property Carbon $created_at + * @property Carbon $updated_at + * @property IQTravelGroup $i_q_travel_group + * @property IQTravelItem $i_q_travel_item + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroupItem newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroupItem newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroupItem query() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroupItem whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroupItem whereIQTravelGroupId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroupItem whereIQTravelItemId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroupItem whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroupItem wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelGroupItem whereUpdatedAt($value) + * @mixin \Eloquent + */ + class IQTravelGroupItem extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class IQTravelItem + * + * @property int $id + * @property string $name + * @property string $description + * @property string $highlights + * @property int $draft_type_id + * @property int $travel_country_id + * @property int $days_start + * @property int $days_duration + * @property int $min_persons + * @property float $price_adult + * @property float $price_children + * @property int $pos + * @property bool $active + * @property Carbon $created_at + * @property Carbon $updated_at + * @property TravelCountry $travel_country + * @property Collection|IQTravelGroupItem[] $i_q_travel_group_items + * @property Collection|IQTravelItemPlace[] $i_q_travel_item_places + * @package App\Models + * @property-read \App\Models\DraftType|null $draft_type + * @property-read int|null $i_q_travel_group_items_count + * @property-read int|null $i_q_travel_item_places_count + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem query() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem whereDaysDuration($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem whereDaysStart($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem whereDraftTypeId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem whereHighlights($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem whereMinPersons($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem wherePriceAdult($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem wherePriceChildren($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem whereTravelCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItem whereUpdatedAt($value) + * @mixin \Eloquent + */ + class IQTravelItem extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class IQTravelItemPlace + * + * @property int $id + * @property int $i_q_travel_item_id + * @property int $travel_place_id + * @property int $pos + * @property Carbon $created_at + * @property Carbon $updated_at + * @property IQTravelItem $i_q_travel_item + * @property TravelPlace $travel_place + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItemPlace newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItemPlace newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItemPlace query() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItemPlace whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItemPlace whereIQTravelItemId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItemPlace whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItemPlace wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItemPlace whereTravelPlaceId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelItemPlace whereUpdatedAt($value) + * @mixin \Eloquent + */ + class IQTravelItemPlace extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class IQTravelProgram + * + * @property int $id + * @property string $name + * @property string $code + * @property int $travel_country_id + * @property string $description + * @property string $highlights + * @property string $not_included + * @property string $weekdays + * @property int $days_duration + * @property float $discount + * @property float $deposit_pro + * @property float $price_adult_total + * @property float $price_children_total + * @property string $travel_insurance + * @property bool $active + * @property Carbon $created_at + * @property Carbon $updated_at + * @property TravelCountry $travel_country + * @property Collection|IQTravelProgramItem[] $i_q_travel_program_items + * @package App\Models + * @property int|null $typ + * @property-read int|null $i_q_travel_program_items_count + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram query() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereCode($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereDaysDuration($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereDepositPro($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereDiscount($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereHighlights($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereNotIncluded($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram wherePriceAdultTotal($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram wherePriceChildrenTotal($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereTravelCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereTravelInsurance($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereTyp($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgram whereWeekdays($value) + * @mixin \Eloquent + */ + class IQTravelProgram extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class IQTravelProgramItem + * + * @property int $id + * @property int $i_q_travel_program_id + * @property int $i_q_travel_item_id + * @property int $i_q_travel_group_id + * @property int $typ + * @property int $pos + * @property bool $active + * @property Carbon $created_at + * @property Carbon $updated_at + * @property IQTravelGroup $i_q_travel_group + * @property IQTravelItem $i_q_travel_item + * @property IQTravelProgram $i_q_travel_program + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgramItem newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgramItem newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgramItem query() + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgramItem whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgramItem whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgramItem whereIQTravelGroupId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgramItem whereIQTravelItemId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgramItem whereIQTravelProgramId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgramItem whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgramItem wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgramItem whereTyp($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQTravelProgramItem whereUpdatedAt($value) + * @mixin \Eloquent + */ + class IQTravelProgramItem extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class InitialContactType + * + * @property int $id + * @property string $name + * @property Collection|Lead[] $leads + * @package App\Models + * @property-read int|null $leads_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InitialContactType newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InitialContactType newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InitialContactType query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InitialContactType whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InitialContactType whereName($value) + * @mixin \Eloquent + */ + class InitialContactType extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class Inquiry + * + * @property int $id + * @property int $lead_id + * @property int $template_id + * @property bool $in_pdf + * @property Carbon $begin + * @property Carbon $end + * @property int $type_id + * @property string $type_s + * @property string $data_s + * @property int $view_position + * @property Lead $lead + * @property InquiryTemplate $inquiry_template + * @property InquiryType $inquiry_type + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereBegin($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereDataS($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereEnd($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereInPdf($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereLeadId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereTemplateId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereTypeId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereTypeS($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereViewPosition($value) + * @mixin \Eloquent + */ + class Inquiry extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class InquiryTemplate + * + * @property int $id * @property string $title - * @property Carbon $start_date - * @property Carbon $end_date + * @property Collection|Inquiry[] $inquiries + * @package App\Models + * @property-read int|null $inquiries_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryTemplate newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryTemplate newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryTemplate query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryTemplate whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryTemplate whereTitle($value) + * @mixin \Eloquent + */ + class InquiryTemplate extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class InquiryType + * + * @property int $id + * @property string $name + * @property int $arrangement_type_id + * @property ArrangementType $arrangement_type + * @property Collection|Inquiry[] $inquiries + * @package App\Models + * @property-read int|null $inquiries_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryType newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryType newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryType query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryType whereArrangementTypeId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryType whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryType whereName($value) + * @mixin \Eloquent + */ + class InquiryType extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class Insurance + * + * @property int $id + * @property string $name + * @property string $name_full + * @property string $contact_emails + * @property bool $active + * @property Carbon $created_at + * @property Carbon $updated_at + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereContactEmails($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereUpdatedAt($value) + * @mixin \Eloquent + */ + class Insurance extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class InsuranceCertificate + * + * @property int $id + * @property int $booking_id + * @property int $internal_id + * @property string $filename + * @property boolean $binary_data + * @property Carbon $created_at + * @property Carbon $updated_at + * @property string $request_data + * @property Booking $booking + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereBinaryData($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereFilename($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereInternalId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereRequestData($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereUpdatedAt($value) + * @mixin \Eloquent + */ + class InsuranceCertificate extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class Keyword + * + * @property int $id + * @property string $name + * @property Carbon $created_at + * @property Carbon $updated_at + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Keyword newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Keyword newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Keyword query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Keyword whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Keyword whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Keyword whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Keyword whereUpdatedAt($value) + * @mixin \Eloquent + */ + class Keyword extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class Lead + * + * @property int $id + * @property int $customer_id + * @property Carbon $request_date + * @property Carbon $travelperiod_start + * @property Carbon $travelperiod_end + * @property int $travelperiod_length + * @property int $travelcountry_id + * @property int $travelagenda_id + * @property string $remarks + * @property int $sf_guard_user_id + * @property bool $is_closed + * @property int $initialcontacttype_id + * @property int $searchengine_id + * @property string $searchengine_keywords + * @property int $status_id + * @property Carbon $next_due_date * @property int $website_id - * @property string $travel_number + * @property int $travelcategory_id + * @property Carbon $created_at + * @property Carbon $updated_at + * @property float $price + * @property int $pax * @property string $participant_name * @property string $participant_firstname * @property Carbon $participant_birthdate * @property int $participant_salutation_id - * @property string $ev_number - * @property string $merlin_knr - * @property string $merlin_order_number - * @property int $travel_company_id - * @property bool $travel_documents - * @property float $price - * @property float $price_total - * @property float $deposit_total - * @property float $final_payment - * @property Carbon $final_payment_date - * @property int $travelagenda_id - * @property Branch $branch - * @property Coupon $coupon + * @property Customer $customer + * @property InitialContactType $initial_contact_type + * @property Salutation $salutation + * @property Searchengine $searchengine + * @property SfGuardUser $sf_guard_user + * @property Status $status + * @property TravelAgenda $travel_agenda + * @property TravelCategory $travel_category + * @property TravelCountry $travel_country + * @property Website $website + * @property Collection|Booking[] $bookings + * @property Collection|Inquiry[] $inquiries + * @property Collection|LeadParticipant[] $lead_participants + * @property Collection|Offer[] $offers + * @property Collection|StatusHistory[] $status_histories + * @package App\Models + * @property-read int|null $bookings_count + * @property-read int|null $inquiries_count + * @property-read int|null $lead_participants_count + * @property-read int|null $offers_count + * @property-read int|null $status_histories_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereCustomerId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereInitialcontacttypeId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereIsClosed($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereNextDueDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereParticipantBirthdate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereParticipantFirstname($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereParticipantName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereParticipantSalutationId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead wherePax($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead wherePrice($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereRemarks($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereRequestDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereSearchengineId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereSearchengineKeywords($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereSfGuardUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereStatusId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereTravelagendaId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereTravelcategoryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereTravelcountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereTravelperiodEnd($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereTravelperiodLength($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereTravelperiodStart($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereWebsiteId($value) + * @property-read \App\Models\Sym\TravelCountry|null $travel_country_crm + * @property bool|null $is_rebook + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereIsRebook($value) + * @property-read Collection|\App\Models\LeadFile[] $lead_files + * @property-read int|null $lead_files_count + * @property-read \App\Models\LeadMail|null $lead_mail_last + * @property-read Collection|\App\Models\LeadMail[] $lead_mails + * @property-read int|null $lead_mails_count + * @property-read Collection|\App\Models\LeadMail[] $lead_mails_sent_at + * @property-read int|null $lead_mails_sent_at_count + * @property-read Collection|\App\Models\LeadNotice[] $lead_notices + * @property-read int|null $lead_notices_count + * @mixin \Eloquent + */ + class Lead extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class LeadFile + * + * @property int $id + * @property int $lead_id + * @property int $lead_mail_id + * @property string $identifier + * @property string $filename + * @property string $dir + * @property string $original_name + * @property string $ext + * @property string $mine + * @property int $size + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Lead $lead + * @property LeadMail $lead_mail + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|LeadFile newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|LeadFile newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|LeadFile query() + * @method static \Illuminate\Database\Eloquent\Builder|LeadFile whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadFile whereDir($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadFile whereExt($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadFile whereFilename($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadFile whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadFile whereIdentifier($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadFile whereLeadId($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadFile whereLeadMailId($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadFile whereMine($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadFile whereOriginalName($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadFile whereSize($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadFile whereUpdatedAt($value) + * @mixin \Eloquent + */ + class LeadFile extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class LeadMail + * + * @property int $id + * @property int $lead_id + * @property int $customer_id + * @property bool $is_answer + * @property int $reply_id + * @property string $email + * @property string $recipient + * @property string $cc + * @property string $bcc + * @property string $subject + * @property string $message + * @property int $dir + * @property int $subdir + * @property bool $draft + * @property bool $important + * @property bool $send + * @property bool $fail + * @property string $error + * @property string $forward + * @property Carbon $sent_at + * @property Carbon $scheduled_at + * @property Carbon $delivered_at + * @property Carbon $created_at + * @property Carbon $updated_at * @property Customer $customer * @property Lead $lead - * @property SfGuardUser $sf_guard_user - * @property TravelCategory $travel_category - * @property TravelCompany $travel_company - * @property TravelCountry $travel_country - * @property TravelAgenda $travel_agenda - * @property Collection|Arrangement[] $arrangements - * @property Collection|ArrangementType[] $arrangement_types - * @property Collection|BookingApplication[] $booking_applications - * @property Collection|BookingConfirmation[] $booking_confirmations - * @property Collection|BookingDraftItem[] $booking_draft_items - * @property Collection|BookingInvoice[] $booking_invoices - * @property Collection|BookingServiceItem[] $booking_service_items - * @property Collection|BookingVoucher[] $booking_vouchers - * @property Collection|Coupon[] $coupons - * @property Collection|InsuranceCertificate[] $insurance_certificates - * @property Collection|Participant[] $participants - * @property Collection|ServiceProviderEntry[] $service_provider_entries - * @property Collection|TravelInsurance[] $travel_insurances + * @property CustomerMail $customer_mail + * @property Collection|LeadFile[] $lead_files * @package App\Models - * @property-read int|null $arrangement_types_count - * @property-read int|null $arrangements_count - * @property-read int|null $booking_draft_items_count - * @property-read int|null $booking_service_items_count - * @property-read int|null $coupons_count - * @property-read int|null $insurance_certificates_count - * @property-read int|null $participants_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereBookingDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereBranchId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereCouponId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereCustomerId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereDepositTotal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereEndDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereEvNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereFinalPayment($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereFinalPaymentDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereLeadId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereMerlinKnr($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereMerlinOrderNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereNewDrafts($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereParticipantBirthdate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereParticipantFirstname($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereParticipantName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereParticipantSalutationId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking wherePax($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking wherePrice($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking wherePriceTotal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereServiceFee($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereSfGuardUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereStartDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereTitle($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereTravelCategoryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereTravelCompanyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereTravelCountryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereTravelDocuments($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereTravelNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereTravelagendaId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereWebsiteId($value) + * @property-read int|null $lead_files_count + * @property-read LeadMail|null $lead_mail + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail query() + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereBcc($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereCc($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereCustomerId($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereDeliveredAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereDir($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereDraft($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereEmail($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereError($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereFail($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereForward($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereImportant($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereIsAnswer($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereLeadId($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereMessage($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereRecipient($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereReplyId($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereScheduledAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereSend($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereSentAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereSubdir($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereSubject($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadMail whereUpdatedAt($value) * @mixin \Eloquent - * @property-read int|null $service_provider_entries_count - * @property float|null $canceled - * @property float|null $price_canceled - * @property int|null $paying_out - * @property int|null $paying_out_status - * @property int|null $airline_id - * @property int|null $refund - * @property \Illuminate\Support\Carbon|null $refund_date - * @property int|null $hold - * @property int|null $xx_tkt - * @property string|null $xx_tkt_date - * @property string|null $filekey - * @property-read \App\Models\Airline|null $airline - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\CustomerMail[] $customer_mails - * @property-read int|null $customer_mails_count - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\CustomerMail[] $customer_mails_sent_at - * @property-read int|null $customer_mails_sent_at_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereAirlineId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereCanceled($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereFilekey($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereHold($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking wherePayingOut($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking wherePayingOutStatus($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking wherePriceCanceled($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereRefund($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereRefundDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereXxTkt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereXxTktDate($value) - * @property int|null $is_rail_fly - * @property string|null $notice - * @property-read \App\Models\CustomerMail $customer_mail_last - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereIsRailFly($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereNotice($value) - * @property-read int|null $booking_applications_count - * @property-read int|null $booking_confirmations_count - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\BookingStorno[] $booking_stornos - * @property-read int|null $booking_stornos_count - * @property-read int|null $booking_vouchers_count - * @property-read int|null $travel_insurances_count - * @property string|null $origin_start_date - * @property \Illuminate\Support\Carbon|null $lawyer_date - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereLawyerDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereOriginStartDate($value) - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\BookingFile[] $booking_files - * @property-read int|null $booking_files_count - * @property float|null $price_balance - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking wherePriceBalance($value) - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\BookingCountryService[] $booking_country_services - * @property-read int|null $booking_country_services_count - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\BookingCountryService[] $booking_country_services_checked - * @property-read int|null $booking_country_services_checked_count - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\BookingCompanyService[] $booking_company_services - * @property-read int|null $booking_company_services_count - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\BookingCompanyService[] $booking_company_services_checked - * @property-read int|null $booking_company_services_checked_count - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\BookingProviderService[] $booking_provider_services - * @property-read int|null $booking_provider_services_count - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\BookingProviderService[] $booking_provider_services_checked - * @property-read int|null $booking_provider_services_checked_count */ - class Booking extends \Eloquent {} + class LeadMail extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class LeadNotice + * + * @property int $id + * @property int $lead_id + * @property int $from_user_id + * @property int $to_user_id + * @property string $message + * @property bool $show + * @property bool $important + * @property Carbon $edit_at + * @property Carbon $created_at + * @property Carbon $updated_at + * @property User $user + * @property Lead $lead + * @package App\Models + * @property-read User $from_user + * @property-read User|null $to_user + * @method static \Illuminate\Database\Eloquent\Builder|LeadNotice newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|LeadNotice newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|LeadNotice query() + * @method static \Illuminate\Database\Eloquent\Builder|LeadNotice whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadNotice whereEditAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadNotice whereFromUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadNotice whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadNotice whereImportant($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadNotice whereLeadId($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadNotice whereMessage($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadNotice whereShow($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadNotice whereToUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadNotice whereUpdatedAt($value) + * @mixin \Eloquent + */ + class LeadNotice extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class LeadParticipant + * + * @property int $id + * @property int $lead_id + * @property string $participant_name + * @property string $participant_firstname + * @property Carbon $participant_birthdate + * @property int $participant_salutation_id + * @property Lead $lead + * @property Salutation $salutation + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant whereLeadId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant whereParticipantBirthdate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant whereParticipantFirstname($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant whereParticipantName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant whereParticipantSalutationId($value) + * @property int|null $participant_child + * @property int|null $nationality_id + * @property-read \App\Models\TravelNationality|null $travel_nationality + * @method static \Illuminate\Database\Eloquent\Builder|LeadParticipant whereNationalityId($value) + * @method static \Illuminate\Database\Eloquent\Builder|LeadParticipant whereParticipantChild($value) + * @mixin \Eloquent + */ + class LeadParticipant extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\News + * + * @property int $id + * @property int|null $owner + * @property string|null $model + * @property int|null $lvl + * @property int $owner_second + * @property int|null $catalog_id + * @property int|null $catalog_index + * @property string|null $slug + * @property int|null $travel_program + * @property int|null $status + * @property int|null $show_in_navi + * @property int|null $order + * @property string|null $title + * @property string|null $pagetitle + * @property string|null $description + * @property string|null $keywords + * @property string|null $content + * @property string|null $content_new + * @property string|null $buma_destination + * @property int|null $OLD_CatalogID + * @property int|null $OLD_OwnerID + * @property int|null $buma_gjr + * @property string|null $date + * @property int $price-tags + * @property string|null $text_right + * @property string|null $keyword + * @property string|null $canonical_url + * @property int|null $country_id + * @property string|null $template + * @property int|null $lft + * @property int|null $rgt + * @property int|null $tree_root + * @property int|null $parent_id + * @property string|null $real_url_path + * @property string|null $box_body + * @property string|null $box_image_url + * @property string|null $box_star + * @property string|null $box_discount + * @property string|null $cms_settings + * @property int|null $fewo_lodging + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\News[] $children + * @property-read \App\Models\News|null $parent + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereBoxBody($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereBoxDiscount($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereBoxImageUrl($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereBoxStar($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereBumaDestination($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereBumaGjr($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereCanonicalUrl($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereCatalogId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereCatalogIndex($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereCmsSettings($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereContent($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereContentNew($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereFewoLodging($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereKeyword($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereKeywords($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereLft($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereLvl($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereModel($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereOLDCatalogID($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereOLDOwnerID($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereOrder($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereOwner($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereOwnerSecond($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News wherePagetitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereParentId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News wherePriceTags($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereRealUrlPath($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereRgt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereShowInNavi($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereTemplate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereTextRight($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereTravelProgram($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereTreeRoot($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereUpdatedAt($value) + * @property int|null $travel_guide_content_id + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereTravelGuideContentId($value) + * @property string|null $title_short + * @property string|null $before_title + * @property-read int|null $children_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereBeforeTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\News whereTitleShort($value) + * @property-read \Illuminate\Database\Eloquent\Collection $child_pages + * @property-read int|null $child_pages_count + * @property-read \App\Models\Page|null $page + * @property-read \Illuminate\Database\Eloquent\Collection $pages + * @property-read int|null $pages_count + * @property-read \App\Models\Page|null $parent_page + * @property-read \Illuminate\Database\Eloquent\Collection $travel_countries + * @property-read int|null $travel_countries_count + * @property-read \App\Models\TravelCountry|null $travel_country + * @property-read \App\Models\TravelGuide|null $travel_guide + * @property-read \App\Models\TravelProgram|null $travel_program_content + * @method static \Illuminate\Database\Eloquent\Builder|Page findSimilarSlugs(string $attribute, array $config, string $slug) + * @method static \Illuminate\Database\Eloquent\Builder|Page withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent + */ + class News extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class NewsletterContact + * + * @property int $id + * @property string $email + * @property string|null $firstname + * @property string|null $lastname + * @property bool $group_kulturreisen + * @property bool $group_ferienwohnungen + * @property string $source + * @property string $status + * @property Carbon|null $subscribed_at + * @property Carbon|null $unsubscribed_at + * @property Carbon|null $last_booking_at + * @property Carbon|null $last_travel_end_date + * @property int $total_bookings_kulturreisen + * @property int $total_bookings_ferienwohnungen + * @property int|null $customer_id + * @property int|null $travel_user_id + * @property Carbon|null $last_synced_at + * @property string|null $sync_hash + * @property string|null $notes + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Carbon|null $deleted_at + * @property-read Customer|null $customer + * @property-read TravelUser|null $travel_user + * @property-read Collection|NewsletterLog[] $logs + * @package App\Models + * @property-read mixed $full_name + * @property-read mixed $groups + * @property-read mixed $groups_string + * @property-read mixed $source_label + * @property-read mixed $status_badge + * @property-read mixed $status_color + * @property-read mixed $status_label + * @property-read mixed $total_bookings + * @property-read int|null $logs_count + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact active() + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact ferienwohnungen() + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact kulturreisen() + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact multipleBookers() + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact onlyTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact query() + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereCustomerId($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereEmail($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereFirstname($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereGroupFerienwohnungen($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereGroupKulturreisen($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereLastBookingAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereLastSyncedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereLastTravelEndDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereLastname($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereNotes($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereSource($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereSubscribedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereSyncHash($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereTotalBookingsFerienwohnungen($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereTotalBookingsKulturreisen($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereTravelUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereUnsubscribedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact withBookings() + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact withTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterContact withoutTrashed() + * @mixin \Eloquent + */ + class NewsletterContact extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class NewsletterLog + * + * @property int $id + * @property int $newsletter_contact_id + * @property string $action + * @property string|null $description + * @property array|null $metadata + * @property int|null $user_id + * @property Carbon $created_at + * @property Carbon $updated_at + * @property-read NewsletterContact $newsletter_contact + * @property-read SfGuardUser|null $user + * @package App\Models + * @property-read mixed $action_label + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterLog newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterLog newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterLog query() + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterLog whereAction($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterLog whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterLog whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterLog whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterLog whereMetadata($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterLog whereNewsletterContactId($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterLog whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|NewsletterLog whereUserId($value) + * @mixin \Eloquent + */ + class NewsletterLog extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class Offer + * + * @property int $id + * @property int $lead_id + * @property float $total + * @property boolean $binary_data + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Lead $lead + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer whereBinaryData($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer whereLeadId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer whereTotal($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer whereUpdatedAt($value) + * @mixin \Eloquent + */ + class Offer extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class Page + * + * @property int $id + * @property int|null $owner + * @property string|null $model + * @property int|null $lvl + * @property int $owner_second + * @property int|null $catalog_id + * @property int|null $catalog_index + * @property string|null $slug + * @property int|null $travel_program + * @property int|null $status + * @property int|null $show_in_navi + * @property int|null $order + * @property string|null $title + * @property string|null $title_short + * @property string|null $before_title + * @property string|null $pagetitle + * @property string|null $description + * @property string|null $keywords + * @property string|null $content + * @property string|null $content_new + * @property string|null $buma_destination + * @property int|null $OLD_CatalogID + * @property int|null $OLD_OwnerID + * @property int|null $buma_gjr + * @property Carbon $date + * @property bool $price-tags + * @property string|null $text_right + * @property string|null $keyword + * @property string|null $canonical_url + * @property int|null $country_id + * @property string|null $template + * @property int|null $lft + * @property int|null $rgt + * @property int|null $tree_root + * @property int|null $parent_id + * @property string|null $real_url_path + * @property int|null $travel_guide_content_id + * @property string|null $box_body + * @property string|null $box_image_url + * @property string|null $box_star + * @property string|null $box_discount + * @property string|null $cms_settings + * @property int|null $fewo_lodging + * @property Carbon|null $created_at + * @property Carbon|null $updated_at + * @property Page|null $page + * @property TravelCountry|null $travel_country + * @property TravelGuide|null $travel_guide + * @property Collection|Page[] $pages + * @property Collection|Redirect[] $redirects + * @property Collection|TravelCountry[] $travel_countries + * @property Collection|TravelProgram[] $travel_program_content + * @package App\Models + * @property-read Collection $child_pages + * @property-read int|null $child_pages_count + * @property-read int|null $pages_count + * @property-read Page|null $parent_page + * @property-read int|null $travel_countries_count + * @method static \Illuminate\Database\Eloquent\Builder|Page findSimilarSlugs(string $attribute, array $config, string $slug) + * @method static \Illuminate\Database\Eloquent\Builder|Page newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Page newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Page query() + * @method static \Illuminate\Database\Eloquent\Builder|Page whereBeforeTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereBoxBody($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereBoxDiscount($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereBoxImageUrl($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereBoxStar($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereBumaDestination($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereBumaGjr($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereCanonicalUrl($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereCatalogId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereCatalogIndex($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereCmsSettings($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereContent($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereContentNew($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereFewoLodging($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereKeyword($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereKeywords($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereLft($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereLvl($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereModel($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereOLDCatalogID($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereOLDOwnerID($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereOrder($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereOwner($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereOwnerSecond($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page wherePagetitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereParentId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page wherePriceTags($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereRealUrlPath($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereRgt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereShowInNavi($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereTemplate($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereTextRight($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereTitleShort($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereTravelGuideContentId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereTravelProgram($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereTreeRoot($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent + */ + class Page extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class Participant + * + * @property int $id + * @property int $booking_id + * @property string $participant_name + * @property string $participant_firstname + * @property Carbon $participant_birthdate + * @property int $participant_salutation_id + * @property bool $participant_child + * @property Booking $booking + * @property Salutation $salutation + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereParticipantBirthdate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereParticipantChild($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereParticipantFirstname($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereParticipantName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereParticipantSalutationId($value) + * @property int|null $nationality_id + * @property-read \App\Models\TravelNationality|null $travel_nationality + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereNationalityId($value) + * @property bool|null $participant_pass + * @property bool|null $participant_storno + * @method static \Illuminate\Database\Eloquent\Builder|Participant whereParticipantPass($value) + * @method static \Illuminate\Database\Eloquent\Builder|Participant whereParticipantStorno($value) + * @mixin \Eloquent + */ + class Participant extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class Salutation + * + * @property int $id + * @property string $name + * @property Collection|Customer[] $customers + * @property Collection|Lead[] $leads + * @property Collection|LeadParticipant[] $lead_participants + * @property Collection|Participant[] $participants + * @package App\Models + * @property-read int|null $customers_count + * @property-read int|null $lead_participants_count + * @property-read int|null $leads_count + * @property-read int|null $participants_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Salutation newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Salutation newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Salutation query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Salutation whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Salutation whereName($value) + * @mixin \Eloquent + */ + class Salutation extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class Searchengine + * + * @property int $id + * @property string $name + * @property Collection|Lead[] $leads + * @package App\Models + * @property-read int|null $leads_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Searchengine newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Searchengine newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Searchengine query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Searchengine whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Searchengine whereName($value) + * @mixin \Eloquent + */ + class Searchengine extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class ServiceProvider + * + * @property int $id + * @property string $name + * @property bool $dollar + * @property string $type + * @property Collection|ServiceProviderEntry[] $service_provider_entries + * @package App\Models + * @property-read int|null $service_provider_entries_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereDollar($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereType($value) + * @property array|null $contact_emails + * @property bool|null $active + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereContactEmails($value) + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ServiceProviderService[] $service_provider_services + * @property-read int|null $service_provider_services_count + * @mixin \Eloquent + */ + class ServiceProvider extends \Eloquent {} } namespace App\Models{ @@ -604,182 +3477,900 @@ namespace App\Models{ namespace App\Models{ /** - * App\Models\UserUpdateEmail - * - * @property-read \App\User $user - * @mixin \Eloquent - * @property int $user_id - * @property string $email - * @property string $token - * @property \Illuminate\Support\Carbon $created_at - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail whereEmail($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail whereToken($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail whereUserId($value) - */ - class UserUpdateEmail extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class TravelUserBookingFile + * Class ServiceProviderService * * @property int $id - * @property int $travel_user_booking_fewos - * @property string $identifier - * @property string $filename - * @property string $dir - * @property string $original_name - * @property string $ext - * @property string $mine - * @property int $size + * @property int $service_provider_id + * @property string $name + * @property string $description + * @property bool $active + * @property int $pos * @property Carbon $created_at * @property Carbon $updated_at - * @property TravelUserBookingFewo $travel_user_booking_fewo + * @property ServiceProvider $service_provider + * @property Collection|BookingProviderService[] $booking_provider_services * @package App\Models - * @property int|null $travel_user_booking_fewo_id - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereDir($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereExt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereFilename($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereIdentifier($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereMine($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereOriginalName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereSize($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereTravelUserBookingFewoId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereUpdatedAt($value) + * @property-read int|null $booking_provider_services_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService whereServiceProviderId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService whereUpdatedAt($value) * @mixin \Eloquent */ - class TravelUserBookingFile extends \Eloquent {} + class ServiceProviderService extends \Eloquent {} } namespace App\Models{ /** - * Class BookingServiceItem + * App\Models\SfGuardUser + * + * @property int $id + * @property int|null $user_id + * @property string $username + * @property string $algorithm + * @property string|null $salt + * @property string|null $password + * @property int|null $is_active + * @property int|null $is_super_admin + * @property string|null $last_login + * @property string|null $first_name + * @property string|null $last_name + * @property string|null $email_address + * @property string|null $default_page + * @property int|null $branch_id + * @property string|null $api_key + * @property string|null $identify + * @property string|null $token + * @property string|null $token_at + * @property \Illuminate\Support\Carbon $created_at + * @property \Illuminate\Support\Carbon $updated_at + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereAlgorithm($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereApiKey($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereBranchId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereDefaultPage($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereEmailAddress($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereFirstName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereIdentify($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereIsActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereIsSuperAdmin($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereLastLogin($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereLastName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser wherePassword($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereSalt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereToken($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereTokenAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereUsername($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser query() + * @property-read \App\User|null $user + * @property-read mixed $fullname + * @mixin \Eloquent + */ + class SfGuardUser extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\SidebarWidget + * + * @property int $id + * @property string $name + * @property string|null $component + * @property string|null $html + * @property array|null $show_at + * @property int|null $pos + * @property int $active + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereComponent($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereHtml($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereShowAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget query() + * @mixin \Eloquent + */ + class SidebarWidget extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class Status + * + * @property int $id + * @property string $name + * @property int $handling_days + * @property string $color + * @property Collection|Lead[] $leads + * @property Collection|StatusHistory[] $status_histories + * @package App\Models + * @property-read int|null $leads_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Status newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Status newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Status query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Status whereColor($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Status whereHandlingDays($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Status whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Status whereName($value) + * @mixin \Eloquent + */ + class Status extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class StatusHistory + * + * @property int $id + * @property int $status_id + * @property int $lead_id + * @property int $sf_guard_user_id + * @property Carbon $date + * @property string $remarks + * @property Carbon $target_date + * @property Carbon $created_at + * @property Lead $lead + * @property SfGuardUser $sf_guard_user + * @property Status $status + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereLeadId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereRemarks($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereSfGuardUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereStatusId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereTargetDate($value) + * @mixin \Eloquent + */ + class StatusHistory extends \Eloquent {} +} + +namespace App\Models\Sym{ +/** + * App\Models\Sym\Arrangement + * + * @property int $id + * @property int|null $template_id + * @property string|null $state + * @property string|null $begin + * @property string|null $end + * @property string|null $type_s + * @property string|null $data_s + * @property int|null $view_position + * @property int|null $booking_id + * @property int $type_id + * @property int|null $in_pdf + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement whereBegin($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement whereDataS($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement whereEnd($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement whereInPdf($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement whereState($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement whereTemplateId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement whereTypeId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement whereTypeS($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement whereViewPosition($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement query() + * @mixin \Eloquent + */ + class Arrangement extends \Eloquent {} +} + +namespace App\Models\Sym{ +/** + * App\Models\Sym\ArrangementTemplate + * + * @property int $id + * @property string|null $title + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Sym\Arrangement[] $arrangements + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\ArrangementTemplate whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\ArrangementTemplate whereTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\ArrangementTemplate newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\ArrangementTemplate newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\ArrangementTemplate query() + * @property-read int|null $arrangements_count + * @mixin \Eloquent + */ + class ArrangementTemplate extends \Eloquent {} +} + +namespace App\Models\Sym{ +/** + * App\Models\Sym\CmsContent + * + * @property int $id + * @property string $name + * @property string $slug + * @property string $field + * @property string|null $text + * @property string|null $full_text + * @property int|null $integer + * @property float|null $decimal + * @property string|null $created_at + * @property string|null $updated_at + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereDecimal($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereField($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereFullText($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereInteger($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereText($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent findSimilarSlugs($attribute, $config, $slug) + * @property string|null $identifier + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereIdentifier($value) + * @property array|null $object + * @property int|null $pos + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereObject($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|CmsContent withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent + */ + class CmsContent extends \Eloquent {} +} + +namespace App\Models\Sym{ +/** + * App\Models\Sym\TravelCountry + * + * @property int $id + * @property string $name + * @property int|null $is_customer_country + * @property int|null $active_backend + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereActiveBackend($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereIsCustomerCountry($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry query() + * @property string|null $contact_headline + * @property string|null $contact_text_1 + * @property string|null $contact_text_2 + * @property string|null $contact_text_3 + * @property string|null $contact_text_4 + * @property string|null $contact_footer + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereContactFooter($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereContactHeadline($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereContactText1($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereContactText2($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereContactText3($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereContactText4($value) + * @property array|null $contact_lands + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereContactLands($value) + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Booking[] $bookings + * @property-read int|null $bookings_count + * @property array|null $contact_emails + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereContactEmails($value) + * @property array|null $mail_dirs + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereMailDirs($value) + * @property string|null $mail_dir_name + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereMailDirName($value) + * @property-read \App\Models\TravelCountry|null $stern_travel_country + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelCountryService[] $travel_country_services + * @property-read int|null $travel_country_services_count + * @property string|null $destco + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereDestco($value) + * @property string|null $visum_text + * @method static \Illuminate\Database\Eloquent\Builder|TravelCountry whereVisumText($value) + * @mixin \Eloquent + */ + class TravelCountry extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\TravelAgenda + * + * @property int $id + * @property string $name + * @property int|null $travelcountry_id + * @property int|null $active + * @property-read \App\Models\TravelCountry|null $travel_country + * @property-read \App\Models\Sym\TravelCountry|null $travel_country_crm + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda whereTravelcountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda query() + * @mixin \Eloquent + */ + class TravelAgenda extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class TravelInsurance * * @property int $id * @property int $booking_id - * @property int $travel_company_id - * @property float $service_price - * @property float $service_price_refund - * @property float $commission - * @property Carbon $travel_date + * @property string $policy_number + * @property string $ak + * @property string $an + * @property string $akt + * @property float $premium + * @property string $request_data * @property Carbon $created_at * @property Carbon $updated_at - * @property string $name - * @property bool $is_commission_locked * @property Booking $booking - * @property TravelCompany $travel_company * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereCommission($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereIsCommissionLocked($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereServicePrice($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereServicePriceRefund($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereTravelCompanyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereTravelDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingServiceItem whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereAk($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereAkt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereAn($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance wherePolicyNumber($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance wherePremium($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereRequestData($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereUpdatedAt($value) + * @property string|null $name + * @property int|null $travel_country_id + * @property int|null $active + * @property-read \App\Models\TravelCountry|null $travel_country + * @property-read \Illuminate\Database\Eloquent\Collection $travel_programs + * @property-read int|null $travel_programs_count + * @method static \Illuminate\Database\Eloquent\Builder|TravelArrivalPoint whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelArrivalPoint whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelArrivalPoint whereTravelCountryId($value) * @mixin \Eloquent */ - class BookingServiceItem extends \Eloquent {} + class TravelArrivalPoint extends \Eloquent {} } namespace App\Models{ /** - * Class FewoLodging + * App\Models\TravelBooking + * + * @property int $id + * @property int|null $crm_booking_id + * @property int|null $salutation_id + * @property string|null $first_name + * @property string|null $last_name + * @property string|null $street + * @property string|null $zipcode + * @property string|null $city + * @property int|null $country_id + * @property string|null $fax + * @property string|null $phone + * @property string|null $mobile + * @property string|null $email + * @property string|null $comments + * @property \Illuminate\Support\Carbon|null $created + * @property \Illuminate\Support\Carbon|null $selected_start_date + * @property \Illuminate\Support\Carbon|null $selected_end_date + * @property string|null $program_name + * @property array|null $selected_travel + * @property array|null $selected_departure + * @property int|null $program_id + * @property int|null $period_id + * @property string|null $class + * @property int|null $selected_adults + * @property int|null $selected_childs + * @property int|null $participants_total + * @property array|null $participants + * @property array|null $drafts + * @property array|null $service_items + * @property array|null $arrangements + * @property array|null $rooms + * @property float|null $price + * @property float|null $price_total + * @property float|null $deposit_total + * @property float|null $final_payment + * @property \Illuminate\Support\Carbon|null $final_payment_date + * @property string|null $insurance_name + * @property array|null $insurances + * @property int|null $insurance_offer + * @property int|null $travel_cancellation + * @property array|null $options + * @property array $class_options + * @property array $extra_category + * @property bool|null $accept_legal_rights + * @property string|null $ip + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking query() + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereAcceptLegalRights($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereArrangements($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereCity($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereClass($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereClassOptions($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereComments($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereCreated($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereCrmBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereDepositTotal($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereDrafts($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereEmail($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereExtraCategory($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereFax($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereFinalPayment($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereFinalPaymentDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereFirstName($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereInsuranceName($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereInsuranceOffer($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereInsurances($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereIp($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereLastName($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereMobile($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereOptions($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereParticipants($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereParticipantsTotal($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking wherePeriodId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking wherePhone($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking wherePrice($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking wherePriceTotal($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereProgramId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereProgramName($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereRooms($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereSalutationId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereSelectedAdults($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereSelectedChilds($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereSelectedDeparture($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereSelectedEndDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereSelectedStartDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereSelectedTravel($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereServiceItems($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereStreet($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereTravelCancellation($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereZipcode($value) + * @mixin \Eloquent + */ + class TravelBooking extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class TravelBookingFewoChannel * * @property int $id - * @property int $group_id - * @property int $type_id * @property string $name - * @property string $description - * @property string $equipment - * @property string $adress1 - * @property string $adress2 - * @property string $zipcode - * @property string $city - * @property int $maximum_persons - * @property float $deposit - * @property bool $calendar_visible - * @property \App\Models\FewoLodgingType $fewo_lodging_type - * @property \App\Models\FewoLodgingGroup $fewo_lodging_group - * @property \Illuminate\Database\Eloquent\Collection $fewo_lodging_images - * @property \Illuminate\Database\Eloquent\Collection $fewo_prices - * @property \Illuminate\Database\Eloquent\Collection $fewo_reservations - * @property \Illuminate\Database\Eloquent\Collection $pages + * @property \Carbon\Carbon $created_at + * @property \Carbon\Carbon $updated_at * @property \Illuminate\Database\Eloquent\Collection $travel_user_booking_fewos * @package App\Models - * @mixin \Eloquent - * @property string|null $single_name - * @property string $zip_code - * @property int|null $maximum_adults - * @property int|null $maximum_childs - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereAdress1($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereAdress2($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereCalendarVisible($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereCity($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereDeposit($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereEquipment($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereGroupId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereMaximumAdults($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereMaximumChilds($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereMaximumPersons($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereSingleName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereTypeId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging whereZipCode($value) - * @property-read int|null $fewo_lodging_images_count - * @property-read int|null $fewo_prices_count - * @property-read int|null $fewo_reservations_count - * @property-read int|null $pages_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel whereUpdatedAt($value) * @property-read int|null $travel_user_booking_fewos_count - * @property string|null $pdf_name - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging wherePdfName($value) + * @mixin \Eloquent */ - class FewoLodging extends \Eloquent {} + class TravelBookingFewoChannel extends \Eloquent {} } namespace App\Models{ /** - * Class IQContentFaq + * Class TravelCategory * * @property int $id - * @property int $tree_node_id - * @property int $faq_id + * @property string $name + * @property Collection|Booking[] $bookings + * @property Collection|Lead[] $leads + * @package App\Models + * @property-read int|null $bookings_count + * @property-read int|null $leads_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCategory newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCategory newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCategory query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCategory whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCategory whereName($value) + * @property int|null $active + * @property-read Collection $travel_programs + * @property-read int|null $travel_programs_count + * @method static \Illuminate\Database\Eloquent\Builder|TravelCategory whereActive($value) + * @mixin \Eloquent + */ + class TravelCategory extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\TravelClass + * + * @property int $id + * @property string|null $name + * @property string|null $description + * @property int|null $program_id + * @property int $standard + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \App\Models\TravelProgram|null $travel_program + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereProgramId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereStandard($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereUpdatedAt($value) + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelProgramDraft[] $travel_program_drafts + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass query() + * @property-read int|null $travel_program_drafts_count + * @mixin \Eloquent + */ + class TravelClass extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class TravelCompany + * + * @property int $id + * @property string $name + * @property float $percentage + * @property bool $is_allowed_edit_commission + * @property bool $is_inhouse + * @property Collection|Booking[] $bookings + * @property Collection|BookingServiceItem[] $booking_service_items + * @package App\Models + * @property-read int|null $booking_service_items_count + * @property-read int|null $bookings_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereIsAllowedEditCommission($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereIsInhouse($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany wherePercentage($value) + * @property int|null $active + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereActive($value) + * @property array|null $contact_emails + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereContactEmails($value) + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelCompanyService[] $travel_company_services + * @property-read int|null $travel_company_services_count + * @mixin \Eloquent + */ + class TravelCompany extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class TravelCompanyService + * + * @property int $id + * @property int $travel_company_id + * @property string $name + * @property string $description + * @property bool $active + * @property int $pos * @property Carbon $created_at * @property Carbon $updated_at - * @property AnswerQuestion $answer_question - * @property IQContentTreeNode $i_q_content_tree_node + * @property TravelCompany $travel_company + * @property Collection|BookingCompanyService[] $booking_company_services * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq whereTreeNodeId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq whereFaqId($value) + * @property-read int|null $booking_company_services_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService whereTravelCompanyId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService whereUpdatedAt($value) * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq whereUpdatedAt($value) */ - class IQContentFaq extends \Eloquent {} + class TravelCompanyService extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\TravelCountry + * + * @property int $id + * @property int|null $crm_id + * @property string $name + * @property string|null $html_information + * @property string|null $entry_requirements + * @property int|null $feedback_page_id + * @property int|null $is_customer_country + * @property int|null $active_frontend + * @property int|null $active_backend + * @property string|null $updated_at + * @property string|null $created_at + * @property-read \App\Models\Page|null $feedback_page + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelNationalityRequirement[] $travel_nationality_requirements + * @property-read \App\Models\TravelProgramCountry $travel_program_country + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereActiveBackend($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereActiveFrontend($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereCrmId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereEntryRequirements($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereFeedbackPageId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereHtmlInformation($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereIsCustomerCountry($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry query() + * @property string|null $slug + * @property string|null $text_before + * @property string|null $text_after + * @property string|null $contact_headline + * @property string|null $contact_text_1 + * @property string|null $contact_text_2 + * @property string|null $contact_text_3 + * @property string|null $contact_text_4 + * @property string|null $contact_footer + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactFooter($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactHeadline($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactText1($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactText2($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactText3($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactText4($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereTextAfter($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereTextBefore($value) + * @property array|null $contact_lands + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactLands($value) + * @property-read int|null $travel_nationality_requirements_count + * @property array|null $contact_emails + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactEmails($value) + * @property array|null $mail_dirs + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereMailDirs($value) + * @property string $mail_dir_name + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereMailDirName($value) + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\GeneralFile[] $general_files + * @property-read int|null $general_files_count + * @property-read \App\Models\Sym\TravelCountry|null $crm_travel_country + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelCountryService[] $travel_country_services + * @property-read int|null $travel_country_services_count + * @property string|null $destco + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereDestco($value) + * @property string|null $visum_text + * @method static \Illuminate\Database\Eloquent\Builder|TravelCountry whereVisumText($value) + * @mixin \Eloquent + */ + class TravelCountry extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class TravelCountryService + * + * @property int $id + * @property int $travel_country_id + * @property int $crm_travel_country + * @property string $name + * @property string $description + * @property bool $active + * @property Carbon $created_at + * @property Carbon $updated_at + * @property TravelCountry $travel_country + * @property Collection|BookingCountryService[] $booking_country_services + * @package App\Models + * @property int|null $crm_travel_country_id + * @property int|null $pos + * @property-read int|null $booking_country_services_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereCrmTravelCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereTravelCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereUpdatedAt($value) + * @mixin \Eloquent + */ + class TravelCountryService extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class TravelInsurance + * + * @property int $id + * @property int $booking_id + * @property string $policy_number + * @property string $ak + * @property string $an + * @property string $akt + * @property float $premium + * @property string $request_data + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Booking $booking + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereAk($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereAkt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereAn($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance wherePolicyNumber($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance wherePremium($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereRequestData($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereUpdatedAt($value) + * @property string|null $name + * @property string $text + * @property-read \Illuminate\Database\Eloquent\Collection $travel_programs + * @property-read int|null $travel_programs_count + * @method static \Illuminate\Database\Eloquent\Builder|TravelGerneralNote whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelGerneralNote whereText($value) + * @mixin \Eloquent + */ + class TravelGerneralNote extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\TravelMagazine + * + * @property int $id + * @property string $name + * @property string $slug + * @property string|null $text + * @property string|null $full_text + * @property string|null $meta_title + * @property string|null $meta_description + * @property string|null $meta_keywords + * @property int|null $pos + * @property int $scope + * @property int $active + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide findSimilarSlugs($attribute, $config, $slug) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereFullText($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereMetaDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereMetaKeywords($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereMetaTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereScope($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereText($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide query() + * @property string|null $keyword + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentSite[] $iq_content_site + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereKeyword($value) + * @property int|null $country_id + * @property string|null $box_image_url + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentSite[] $iq_content_sites + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereBoxImageUrl($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereCountryId($value) + * @property-read int|null $iq_content_sites_count + * @property int|null $author_id + * @property-read \App\Models\CMSAuthor|null $author + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereAuthorId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelGuide withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent + */ + class TravelGuide extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class TravelInsurance + * + * @property int $id + * @property int $booking_id + * @property string $policy_number + * @property string $ak + * @property string $an + * @property string $akt + * @property float $premium + * @property string $request_data + * @property Carbon $created_at + * @property Carbon $updated_at + * @property Booking $booking + * @package App\Models + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereAk($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereAkt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereAn($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance wherePolicyNumber($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance wherePremium($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereRequestData($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereUpdatedAt($value) + * @mixin \Eloquent + */ + class TravelInsurance extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\TravelNationality + * + * @property int $id + * @property string|null $name + * @property int|null $active + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality query() + * @property string|null $nat + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality whereNat($value) + * @mixin \Eloquent + */ + class TravelNationality extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\TravelNationalityRequirement + * + * @property int $id + * @property int|null $travel_country_id + * @property int|null $travel_nationality_id + * @property string|null $text + * @property-read \App\Models\TravelCountry|null $travel_country + * @property-read \App\Models\TravelNationality|null $travel_nationality + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement whereText($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement whereTravelCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement whereTravelNationalityId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement query() + * @mixin \Eloquent + */ + class TravelNationalityRequirement extends \Eloquent {} } namespace App\Models{ @@ -875,2027 +4466,192 @@ namespace App\Models{ * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelPageGuide whereTravelProgram($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelPageGuide whereTreeRoot($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelPageGuide whereUpdatedAt($value) - * @mixin \Eloquent * @property string|null $title_short * @property string|null $before_title * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelPageGuide whereBeforeTitle($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelPageGuide whereTitleShort($value) + * @mixin \Eloquent */ class TravelPageGuide extends \Eloquent {} } namespace App\Models{ /** - * Class BookingVoucher + * Class TravelPlace * * @property int $id - * @property int $booking_id - * @property boolean $binary_data + * @property string $name + * @property string $description + * @property int $travel_country_id + * @property float $latitude + * @property float $longitude + * @property bool $active * @property Carbon $created_at * @property Carbon $updated_at - * @property Booking $booking + * @property TravelCountry $travel_country * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher whereBinaryData($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingVoucher whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelPlace newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|TravelPlace newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|TravelPlace query() + * @method static \Illuminate\Database\Eloquent\Builder|TravelPlace whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelPlace whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelPlace whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelPlace whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelPlace whereLatitude($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelPlace whereLongitude($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelPlace whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelPlace whereTravelCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelPlace whereUpdatedAt($value) * @mixin \Eloquent */ - class BookingVoucher extends \Eloquent {} + class TravelPlace extends \Eloquent {} } namespace App\Models{ /** - * App\Models\IQContentTreeNode + * Class TravelProgram * * @property int $id - * @property int $tree_id - * @property int|null $parent_id - * @property int $lvl - * @property string $name - * @property string $identifier - * @property string $slug - * @property string|null $description - * @property array|null $settings - * @property int $pos - * @property int $active - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @property \Illuminate\Support\Carbon|null $deleted_at - * @property-read \App\Models\IQContentTree $iq_content_tree - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentTreeNode[] $iq_content_tree_node_childs - * @property-read \App\Models\IQContentTreeNode|null $iq_content_tree_node_parent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode findSimilarSlugs($attribute, $config, $slug) - * @method static bool|null forceDelete() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode newQuery() - * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTreeNode onlyTrashed() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode query() - * @method static bool|null restore() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereDeletedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereIdentifier($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereLvl($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereParentId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode wherePos($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereSettings($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereSlug($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereTreeId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereUpdatedAt($value) - * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTreeNode withTrashed() - * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTreeNode withoutTrashed() - * @mixin \Eloquent - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentSite[] $iq_content_site - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentSite[] $iq_content_sites - * @property-read int|null $iq_content_sites_count - * @property-read int|null $iq_content_tree_node_childs_count + * @property float|null $profit_margin + * @property int|null $category_id + * @property string|null $program_code + * @property int|null $program_duration + * @property bool|null $is_seasonal + * @property bool|null $youth * @property string|null $title - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereTitle($value) - * @property array|null $image - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereImage($value) - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentFaq[] $iq_content_faq - * @property-read int|null $iq_content_faq_count - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentFaq[] $iq_content_faqs - * @property-read int|null $iq_content_faqs_count - */ - class IQContentTreeNode extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class Offer - * - * @property int $id - * @property int $lead_id - * @property float $total - * @property boolean $binary_data - * @property Carbon $created_at - * @property Carbon $updated_at - * @property Lead $lead - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer whereBinaryData($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer whereLeadId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer whereTotal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Offer whereUpdatedAt($value) - * @mixin \Eloquent - */ - class Offer extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class CMSAuthor - * - * @property int $id - * @property string $name - * @property Carbon $created_at - * @property Carbon $updated_at - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor whereUpdatedAt($value) - * @mixin \Eloquent - * @property string|null $description - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor whereDescription($value) - */ - class CMSAuthor extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class Website - * - * @property int $id - * @property string $name - * @property Collection|Lead[] $leads - * @package App\Models - * @property-read int|null $leads_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Website newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Website newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Website query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Website whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Website whereName($value) - * @mixin \Eloquent - */ - class Website extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class AnswerQuestion - * - * @property int $id - * @property string $question - * @property string $question_text - * @property string $answer - * @property string $answer_text - * @property bool $active - * @property Carbon $created_at - * @property Carbon $updated_at - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion whereAnswer($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion whereAnswerText($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion whereQuestion($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion whereQuestionText($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion whereUpdatedAt($value) - * @mixin \Eloquent - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentFaq[] $iq_content_faq - * @property-read int|null $iq_content_faq_count - * @property int|null $i_q_content_category_id - * @property-read \App\Models\IQContentCategory|null $iq_content_category - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion whereIQContentCategoryId($value) - */ - class AnswerQuestion extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class EmailTemplateDir - * - * @property int $id - * @property string $name - * @property string $color - * @property bool $active - * @property int $pos - * @property Carbon $created_at - * @property Carbon $updated_at - * @property Collection|EmailTemplate[] $email_templates - * @package App\Models - * @property-read int|null $email_templates_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereColor($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir wherePos($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplateDir whereUpdatedAt($value) - * @mixin \Eloquent - */ - class EmailTemplateDir extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\CMSInfoHoliday - * - * @property int $id - * @property bool $local - * @property bool $phone - * @property string $from - * @property string $to - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday whereFrom($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday whereLocal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday wherePhone($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday whereTo($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoHoliday whereUpdatedAt($value) - * @mixin \Eloquent - */ - class CMSInfoHoliday extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class CustomerMail - * - * @property int $id - * @property int $booking_id - * @property int $customer_id - * @property int $lead_id - * @property bool $is_answer - * @property int $reply_id - * @property string $email - * @property string $recipient - * @property string $cc - * @property string $bcc - * @property string $subject - * @property string $message - * @property int $dir - * @property int $travel_country_id - * @property bool $draft - * @property bool $important - * @property bool $send - * @property bool $fail - * @property string $error - * @property Carbon $sent_at - * @property Carbon $scheduled_at - * @property Carbon $delivered_at - * @property Carbon $created_at - * @property Carbon $updated_at - * @property Booking $booking - * @property Customer $customer - * @property CustomerMail $customer_mail - * @property TravelCountry $travel_country - * @property Lead $lead - * @property Collection|CustomerFile[] $customer_files - * @property Collection|CustomerMail[] $customer_mails - * @package App\Models - * @property-read int|null $customer_files_count - * @property-read int|null $customer_mails_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereBcc($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereCc($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereCustomerId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereDeliveredAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereDir($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereDraft($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereEmail($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereError($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereFail($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereImportant($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereIsAnswer($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereLeadId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereMessage($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereRecipient($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereReplyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereScheduledAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereSend($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereSentAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereSubject($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereTravelCountryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereUpdatedAt($value) - * @mixin \Eloquent - * @property int|null $subdir - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereSubdir($value) - */ - class CustomerMail extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class Searchengine - * - * @property int $id - * @property string $name - * @property Collection|Lead[] $leads - * @package App\Models - * @property-read int|null $leads_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Searchengine newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Searchengine newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Searchengine query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Searchengine whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Searchengine whereName($value) - * @mixin \Eloquent - */ - class Searchengine extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\TravelNationalityRequirement - * - * @property int $id - * @property int|null $travel_country_id - * @property int|null $travel_nationality_id - * @property string|null $text - * @property-read \App\Models\TravelCountry|null $travel_country - * @property-read \App\Models\TravelNationality|null $travel_nationality - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement whereText($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement whereTravelCountryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement whereTravelNationalityId($value) - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement query() - */ - class TravelNationalityRequirement extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class TravelBooking - * - * @property int $id - * @property int $salutation_id - * @property string $first_name - * @property string $last_name - * @property string $street - * @property string $zipcode - * @property string $city - * @property int $country_id - * @property string $fax - * @property string $phone - * @property string $mobile - * @property string $comments - * @property string $email - * @property Carbon $created - * @property Carbon $selected_start_date - * @property Carbon $selected_end_date - * @property string $program_name - * @property string $selected_travel - * @property string $selected_departure - * @property int $program_id - * @property int $period_id - * @property string $class - * @property int $selected_adults - * @property int $selected_childs - * @property int $participants_total - * @property string $participants - * @property string $drafts - * @property string $service_items - * @property string $arrangements - * @property string $rooms - * @property float $price - * @property float $price_total - * @property float $deposit_total - * @property float $final_payment - * @property Carbon $final_payment_date - * @property string $insurance_name - * @property string $insurances - * @property int $travel_cancellation - * @property string $options - * @property string $class_options - * @property string $extra_category - * @property bool $accept_legal_rights - * @property string $ip - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereAcceptLegalRights($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereArrangements($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereCity($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereClass($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereClassOptions($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereComments($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereCountryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereCreated($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereDepositTotal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereDrafts($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereEmail($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereExtraCategory($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereFax($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereFinalPayment($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereFinalPaymentDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereFirstName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereInsuranceName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereInsurances($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereIp($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereLastName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereMobile($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereOptions($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereParticipants($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereParticipantsTotal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking wherePeriodId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking wherePhone($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking wherePrice($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking wherePriceTotal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereProgramId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereProgramName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereRooms($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSalutationId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedAdults($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedChilds($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedDeparture($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedEndDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedStartDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedTravel($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereServiceItems($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereStreet($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereTravelCancellation($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereZipcode($value) - * @mixin \Eloquent - * @property int|null $crm_booking_id - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereCrmBookingId($value) - */ - class TravelBooking extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\BookingDraftItem - * - * @property int $id - * @property int $booking_id - * @property int $travel_program_id - * @property int|null $travel_class_id - * @property int|null $draft_item_id - * @property int|null $draft_type_id - * @property string|null $request_date - * @property int|null $days_start - * @property int|null $days_duration - * @property string|null $start_date - * @property string|null $end_date - * @property string|null $service - * @property float|null $price_adult - * @property int|null $adult - * @property float|null $price_children - * @property int|null $children - * @property int|null $pos - * @property int $in_pdf - * @property int $status - * @property int $comfort - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @property-read \App\Models\DraftItem|null $draft_item - * @property-read \App\Models\DraftType|null $draft_type - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereAdult($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereChildren($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereComfort($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereDaysDuration($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereDaysStart($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereDraftItemId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereDraftTypeId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereEndDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereInPdf($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem wherePos($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem wherePriceAdult($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem wherePriceChildren($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereRequestDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereService($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereStartDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereStatus($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereTravelClassId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereTravelProgramId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereUpdatedAt($value) - * @mixin \Eloquent - * @property int|null $fewo_lodging_id - * @property float|null $price - * @property-read \App\Models\Booking $booking - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereFewoLodgingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem wherePrice($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem query() - */ - class BookingDraftItem extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class GeneralFile - * - * @property int $id - * @property int $travel_country_id - * @property string $identifier - * @property string $filename - * @property string $dir - * @property string $original_name - * @property string $ext - * @property string $mine - * @property int $size - * @property Carbon $created_at - * @property Carbon $updated_at - * @property TravelCountry $travel_country - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereDir($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereExt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereFilename($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereIdentifier($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereMine($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereOriginalName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereSize($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereTravelCountryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\GeneralFile whereUpdatedAt($value) - * @mixin \Eloquent - */ - class GeneralFile extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\Country - * - * @property int $id - * @property string $code - * @property string $phone - * @property string $en - * @property string $de - * @property string $es - * @property string $fr - * @property string $it - * @property string $ru - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereCode($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereDe($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereEn($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereEs($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereFr($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereIt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country wherePhone($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereRu($value) - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country query() - */ - class Country extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class InitialContactType - * - * @property int $id - * @property string $name - * @property Collection|Lead[] $leads - * @package App\Models - * @property-read int|null $leads_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InitialContactType newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InitialContactType newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InitialContactType query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InitialContactType whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InitialContactType whereName($value) - * @mixin \Eloquent - */ - class InitialContactType extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class Airline - * - * @property int $id - * @property string $name - * @property string $name_full - * @property Carbon $created_at - * @property Carbon $updated_at - * @package App\Models - * @property array|null $contact_emails - * @property array|null $emails - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Airline newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Airline newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Airline query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Airline whereContactEmails($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Airline whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Airline whereEmails($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Airline whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Airline whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Airline whereNameFull($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Airline whereUpdatedAt($value) - * @mixin \Eloquent - */ - class Airline extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class FewoLodgingType - * - * @property int $id - * @property string $name - * @property \Illuminate\Database\Eloquent\Collection $fewo_lodgings - * @package App\Models - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingType newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingType newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingType query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingType whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingType whereName($value) - * @property-read int|null $fewo_lodgings_count - */ - class FewoLodgingType extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class FewoSeason - * - * @property int $id - * @property string $name - * @property \Carbon\Carbon $from_date - * @property \Carbon\Carbon $to_date - * @property int $minimum_stay - * @property string $description - * @property int $only_weekday - * @property \Illuminate\Database\Eloquent\Collection $fewo_prices - * @package App\Models - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereFromDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereMinimumStay($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereOnlyWeekday($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereToDate($value) - * @property-read int|null $fewo_prices_count - */ - class FewoSeason extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\DraftItem - * - * @property int $id - * @property int $draft_id - * @property int $draft_type_id - * @property int|null $days_start - * @property int|null $days_duration - * @property string|null $name - * @property float|null $price_adult - * @property int|null $adult - * @property float|null $price_children - * @property int|null $children - * @property string|null $content - * @property int|null $pos - * @property int $in_pdf - * @property int $active - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @property-read \App\Models\Draft $draft - * @property-read \App\Models\DraftType $draft_type - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereAdult($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereChildren($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereContent($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereDaysDuration($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereDaysStart($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereDraftId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereDraftTypeId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereInPdf($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem wherePos($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem wherePriceAdult($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem wherePriceChildren($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereUpdatedAt($value) - * @mixin \Eloquent - * @property string|null $service - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereService($value) - * @property float|null $price - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem wherePrice($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem query() - */ - class DraftItem extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class BookingApplication - * - * @property int $id - * @property int $booking_id - * @property float $total - * @property boolean $binary_data - * @property Carbon $created_at - * @property Carbon $updated_at - * @property Booking $booking - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication whereBinaryData($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication whereTotal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingApplication whereUpdatedAt($value) - * @mixin \Eloquent - */ - class BookingApplication extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class FewoLodgingImage - * - * @property int $id - * @property int $lodging_id - * @property int $pos - * @property string $full_file_name - * @property string $file_name - * @property string $description - * @property \App\Models\FewoLodging $fewo_lodging - * @package App\Models - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage whereDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage whereFileName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage whereFullFileName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage whereLodgingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage wherePos($value) - */ - class FewoLodgingImage extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class LeadParticipant - * - * @property int $id - * @property int $lead_id - * @property string $participant_name - * @property string $participant_firstname - * @property Carbon $participant_birthdate - * @property int $participant_salutation_id - * @property Lead $lead - * @property Salutation $salutation - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant whereLeadId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant whereParticipantBirthdate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant whereParticipantFirstname($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant whereParticipantName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant whereParticipantSalutationId($value) - * @mixin \Eloquent - */ - class LeadParticipant extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class CustomerFile - * - * @property int $id - * @property int $customer_id - * @property int $customer_mail_id - * @property string $identifier - * @property string $filename - * @property string $dir - * @property string $original_name - * @property string $ext - * @property string $mine - * @property int $size - * @property Carbon $created_at - * @property Carbon $updated_at - * @property Customer $customer - * @property CustomerMail $customer_mail - * @package App\Models - * @property-read \App\User $user - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereCustomerId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereCustomerMailId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereDir($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereExt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereFilename($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereIdentifier($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereMine($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereOriginalName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereSize($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFile whereUpdatedAt($value) - * @mixin \Eloquent - */ - class CustomerFile extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\Account - * - * @property-read \App\Models\Country $company_country - * @property-read \App\Models\Country $company_pre_phone - * @property-read \App\Models\Country $country - * @property-read mixed $company - * @property-read \App\Models\Country $pre_mobil - * @property-read \App\Models\Country $pre_phone - * @property-read \App\User $user - * @method static bool|null forceDelete() - * @method static \Illuminate\Database\Query\Builder|\App\Models\Account onlyTrashed() - * @method static bool|null restore() - * @method static \Illuminate\Database\Query\Builder|\App\Models\Account withTrashed() - * @method static \Illuminate\Database\Query\Builder|\App\Models\Account withoutTrashed() - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Account newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Account newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Account query() - */ - class Account extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class InquiryType - * - * @property int $id - * @property string $name - * @property int $arrangement_type_id - * @property ArrangementType $arrangement_type - * @property Collection|Inquiry[] $inquiries - * @package App\Models - * @property-read int|null $inquiries_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryType newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryType newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryType query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryType whereArrangementTypeId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryType whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryType whereName($value) - * @mixin \Eloquent - */ - class InquiryType extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class FewoReservation - * - * @property int $id - * @property int $lodging_id - * @property \Carbon\Carbon $from_date - * @property \Carbon\Carbon $to_date - * @property int $status - * @property int $type - * @property \App\Models\FewoLodging $fewo_lodging - * @package App\Models - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation whereFromDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation whereLodgingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation whereStatus($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation whereToDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation whereType($value) - */ - class FewoReservation extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class CustomerFewoFile - * - * @property int $id - * @property int $travel_user_id - * @property int $customer_fewo_mail_id - * @property string $identifier - * @property string $filename - * @property string $dir - * @property string $original_name - * @property string $ext - * @property string $mine - * @property int $size - * @property Carbon $created_at - * @property Carbon $updated_at - * @property CustomerFewoMail $customer_fewo_mail - * @property TravelUser $travel_user - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereCustomerFewoMailId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereDir($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereExt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereFilename($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereIdentifier($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereMine($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereOriginalName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereSize($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereTravelUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereUpdatedAt($value) - * @mixin \Eloquent - * @property \Illuminate\Support\Carbon|null $deleted_at - * @method static \Illuminate\Database\Query\Builder|\App\Models\CustomerFewoFile onlyTrashed() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereDeletedAt($value) - * @method static \Illuminate\Database\Query\Builder|\App\Models\CustomerFewoFile withTrashed() - * @method static \Illuminate\Database\Query\Builder|\App\Models\CustomerFewoFile withoutTrashed() - */ - class CustomerFewoFile extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\TravelCountry - * - * @property int $id - * @property int|null $crm_id - * @property string $name - * @property string|null $html_information - * @property string|null $entry_requirements - * @property int|null $feedback_page_id - * @property int|null $is_customer_country - * @property int|null $active_frontend - * @property int|null $active_backend - * @property string|null $updated_at - * @property string|null $created_at - * @property-read \App\Models\Page|null $feedback_page - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelNationalityRequirement[] $travel_nationality_requirements - * @property-read \App\Models\TravelProgramCountry $travel_program_country - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereActiveBackend($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereActiveFrontend($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereCrmId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereEntryRequirements($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereFeedbackPageId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereHtmlInformation($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereIsCustomerCountry($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereUpdatedAt($value) - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry query() - * @property string|null $slug - * @property string|null $text_before - * @property string|null $text_after - * @property string|null $contact_headline - * @property string|null $contact_text_1 - * @property string|null $contact_text_2 - * @property string|null $contact_text_3 - * @property string|null $contact_text_4 - * @property string|null $contact_footer - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactFooter($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactHeadline($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactText1($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactText2($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactText3($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactText4($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereSlug($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereTextAfter($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereTextBefore($value) - * @property array|null $contact_lands - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactLands($value) - * @property-read int|null $travel_nationality_requirements_count - * @property array|null $contact_emails - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereContactEmails($value) - * @property array|null $mail_dirs - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereMailDirs($value) - * @property string $mail_dir_name - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereMailDirName($value) - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\GeneralFile[] $general_files - * @property-read int|null $general_files_count - * @property-read \App\Models\Sym\TravelCountry|null $crm_travel_country - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelCountryService[] $travel_country_services - * @property-read int|null $travel_country_services_count - */ - class TravelCountry extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class BookingProviderService - * - * @property int $id - * @property int $service_provider_service_id - * @property int $booking_id - * @property int $status - * @property Carbon $created_at - * @property Carbon $updated_at - * @property Booking $booking - * @property ServiceProviderService $service_provider_service - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService whereServiceProviderServiceId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService whereStatus($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingProviderService whereUpdatedAt($value) - * @mixin \Eloquent - */ - class BookingProviderService extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class Salutation - * - * @property int $id - * @property string $name - * @property Collection|Customer[] $customers - * @property Collection|Lead[] $leads - * @property Collection|LeadParticipant[] $lead_participants - * @property Collection|Participant[] $participants - * @package App\Models - * @property-read int|null $customers_count - * @property-read int|null $lead_participants_count - * @property-read int|null $leads_count - * @property-read int|null $participants_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Salutation newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Salutation newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Salutation query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Salutation whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Salutation whereName($value) - * @mixin \Eloquent - */ - class Salutation extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class FewoLodgingGroupImage - * - * @property int $id - * @property int $group_id - * @property string $comp - * @property int $pos - * @property string $full_file_name - * @property string $file_name - * @property string $description - * @property \App\Models\FewoLodgingGroup $fewo_lodging_group - * @package App\Models - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage whereComp($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage whereDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage whereFileName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage whereFullFileName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage whereGroupId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage wherePos($value) - */ - class FewoLodgingGroupImage extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class Inquiry - * - * @property int $id - * @property int $lead_id - * @property int $template_id - * @property bool $in_pdf - * @property Carbon $begin - * @property Carbon $end - * @property int $type_id - * @property string $type_s - * @property string $data_s - * @property int $view_position - * @property Lead $lead - * @property InquiryTemplate $inquiry_template - * @property InquiryType $inquiry_type - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereBegin($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereDataS($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereEnd($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereInPdf($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereLeadId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereTemplateId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereTypeId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereTypeS($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Inquiry whereViewPosition($value) - * @mixin \Eloquent - */ - class Inquiry extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class ArrangementType - * - * @property int $id - * @property string $name - * @property int $notify_rel_days - * @property int $arrangement_type_id - * @property bool $is_unique - * @property int $notify_rel_field_key - * @property ArrangementType $arrangement_type - * @property Booking $booking - * @property DraftItem $draft_item - * @property DraftType $draft_type - * @property Collection|ArrangementType[] $arrangement_types - * @property Collection|InquiryType[] $inquiry_types - * @package App\Models - * @property-read int|null $arrangement_types_count - * @property-read int|null $inquiry_types_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArrangementType newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArrangementType newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArrangementType query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArrangementType whereArrangementTypeId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArrangementType whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArrangementType whereIsUnique($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArrangementType whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArrangementType whereNotifyRelDays($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArrangementType whereNotifyRelFieldKey($value) - * @mixin \Eloquent - */ - class ArrangementType extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class Customer - * - * @property int $id - * @property int $salutation_id - * @property string $title - * @property string $name - * @property string $firstname - * @property Carbon $birthdate - * @property string $company - * @property string $street - * @property string $zip - * @property string $city - * @property string $email - * @property string $phone - * @property string $phonebusiness - * @property string $phonemobile - * @property string $fax - * @property string $bank - * @property string $bank_code - * @property string $bank_account_number - * @property int $credit_card_type_id - * @property string $credit_card_number - * @property Carbon $credit_card_expiration_date - * @property string $participants_remarks - * @property string $miscellaneous_remarks - * @property Carbon $created_at - * @property Carbon $updated_at - * @property int $country_id - * @property TravelCountry $travel_country - * @property CreditCardType $credit_card_type - * @property Salutation $salutation - * @property Collection|Booking[] $bookings - * @property Collection|Coupon[] $coupons - * @property Collection|Lead[] $leads - * @package App\Models - * @property-read int|null $bookings_count - * @property-read int|null $coupons_count - * @property-read int|null $leads_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereBank($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereBankAccountNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereBankCode($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereBirthdate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereCity($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereCompany($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereCountryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereCreditCardExpirationDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereCreditCardNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereCreditCardTypeId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereEmail($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereFax($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereFirstname($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereMiscellaneousRemarks($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereParticipantsRemarks($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer wherePhone($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer wherePhonebusiness($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer wherePhonemobile($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereSalutationId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereStreet($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereTitle($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Customer whereZip($value) - * @mixin \Eloquent - */ - class Customer extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class IQContentTag - * - * @property int $id - * @property int $category_id - * @property string $name - * @property string $slug - * @property int $pos - * @property bool $active - * @property Carbon $created_at - * @property Carbon $updated_at - * @property IQContentCategory $i_q_content_category - * // * @property Collection|IQContentFileTag[] $i_q_content_file_tags - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag whereCategoryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag wherePos($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag whereSlug($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTag whereUpdatedAt($value) - * @mixin \Eloquent - */ - class IQContentTag extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\TravelMagazine - * - * @property int $id - * @property string $name - * @property string $slug - * @property string|null $text - * @property string|null $full_text - * @property string|null $meta_title - * @property string|null $meta_description - * @property string|null $meta_keywords - * @property int|null $pos - * @property int $scope - * @property int $active - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide findSimilarSlugs($attribute, $config, $slug) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereFullText($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereMetaDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereMetaKeywords($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereMetaTitle($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide wherePos($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereScope($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereSlug($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereText($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereUpdatedAt($value) - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide query() - * @property string|null $keyword - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentSite[] $iq_content_site - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereKeyword($value) - * @property int|null $country_id - * @property string|null $box_image_url - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentSite[] $iq_content_sites - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereBoxImageUrl($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereCountryId($value) - * @property-read int|null $iq_content_sites_count - * @property int|null $author_id - * @property-read \App\Models\CMSAuthor|null $author - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereAuthorId($value) - */ - class TravelGuide extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class FewoLodgingGroup - * - * @property int $id - * @property string $name - * @property \Illuminate\Database\Eloquent\Collection $fewo_lodgings - * @property \Illuminate\Database\Eloquent\Collection $fewo_lodging_group_images - * @package App\Models - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroup newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroup newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroup query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroup whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroup whereName($value) - * @property-read int|null $fewo_lodging_group_images_count - * @property-read int|null $fewo_lodgings_count - */ - class FewoLodgingGroup extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class Status - * - * @property int $id - * @property string $name - * @property int $handling_days - * @property string $color - * @property Collection|Lead[] $leads - * @property Collection|StatusHistory[] $status_histories - * @package App\Models - * @property-read int|null $leads_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Status newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Status newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Status query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Status whereColor($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Status whereHandlingDays($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Status whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Status whereName($value) - * @mixin \Eloquent - */ - class Status extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class TravelCategory - * - * @property int $id - * @property string $name - * @property Collection|Booking[] $bookings - * @property Collection|Lead[] $leads - * @package App\Models - * @property-read int|null $bookings_count - * @property-read int|null $leads_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCategory newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCategory newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCategory query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCategory whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCategory whereName($value) - * @mixin \Eloquent - */ - class TravelCategory extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class TravelInsurance - * - * @property int $id - * @property int $booking_id - * @property string $policy_number - * @property string $ak - * @property string $an - * @property string $akt - * @property float $premium - * @property string $request_data - * @property Carbon $created_at - * @property Carbon $updated_at - * @property Booking $booking - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereAk($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereAkt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereAn($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance wherePolicyNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance wherePremium($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereRequestData($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelInsurance whereUpdatedAt($value) - * @mixin \Eloquent - */ - class TravelInsurance extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class IQContentCategory - * - * @property int $id - * @property string $name - * @property string $slug - * @property string $identifier - * @property int $pos - * @property bool $active - * @property Carbon $created_at - * @property Carbon $updated_at - * @property Collection|IQContentTag[] $i_q_content_tags - * @package App\Models - * @property-read int|null $i_q_content_tags_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory findSimilarSlugs($attribute, $config, $slug) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereIdentifier($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory wherePos($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereSlug($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereUpdatedAt($value) - * @mixin \Eloquent - */ - class IQContentCategory extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\IQContentSite - * - * @property int $id - * @property int $tree_node_id - * @property int $travel_guide_id - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @property-read \App\Models\IQContentTreeNode $iq_content_tree_node - * @property-read \App\Models\TravelGuide $travel_guide - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereTravelGuideId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereTreeNodeId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereUpdatedAt($value) - * @mixin \Eloquent - * @property string|null $identifier - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereIdentifier($value) - */ - class IQContentSite extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class EmailTemplate - * - * @property int $id - * @property int $email_template_dir_id - * @property string $subject - * @property string $message - * @property bool $active - * @property Carbon $created_at - * @property Carbon $updated_at - * @property EmailTemplateDir $email_template_dir - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereEmailTemplateDirId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereMessage($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereSubject($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereUpdatedAt($value) - * @mixin \Eloquent - * @property string $name - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereName($value) - */ - class EmailTemplate extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class StatusHistory - * - * @property int $id - * @property int $status_id - * @property int $lead_id - * @property int $sf_guard_user_id - * @property Carbon $date - * @property string $remarks - * @property Carbon $target_date - * @property Carbon $created_at - * @property Lead $lead - * @property SfGuardUser $sf_guard_user - * @property Status $status - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereLeadId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereRemarks($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereSfGuardUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereStatusId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\StatusHistory whereTargetDate($value) - * @mixin \Eloquent - */ - class StatusHistory extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class FewoPrice - * - * @property int $id - * @property int $lodging_id - * @property int $season_id - * @property float $per_night - * @property float $flat_price - * @property \App\Models\FewoSeason $fewo_season - * @property \App\Models\FewoLodging $fewo_lodging - * @package App\Models - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice whereFlatPrice($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice whereLodgingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice wherePerNight($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice whereSeasonId($value) - */ - class FewoPrice extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class Insurance - * - * @property int $id - * @property string $name - * @property string $name_full - * @property string $contact_emails - * @property bool $active - * @property Carbon $created_at - * @property Carbon $updated_at - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereContactEmails($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Insurance whereUpdatedAt($value) - * @mixin \Eloquent - */ - class Insurance extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\CMSInfoAvailable - * - * @property int $id - * @property string $type - * @property bool $active - * @property string|null $from - * @property string|null $to - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereFrom($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereTo($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereType($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereUpdatedAt($value) - * @mixin \Eloquent - * @property int $wday - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereWday($value) - * @property int|null $special - * @property string|null $date - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereSpecial($value) - */ - class CMSInfoAvailable extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\SidebarWidget - * - * @property int $id - * @property string $name - * @property string|null $component - * @property string|null $html - * @property array|null $show_at - * @property int|null $pos - * @property int $active - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereComponent($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereHtml($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget wherePos($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereShowAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereUpdatedAt($value) - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget query() - */ - class SidebarWidget extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class TravelCompany - * - * @property int $id - * @property string $name - * @property float $percentage - * @property bool $is_allowed_edit_commission - * @property bool $is_inhouse - * @property Collection|Booking[] $bookings - * @property Collection|BookingServiceItem[] $booking_service_items - * @package App\Models - * @property-read int|null $booking_service_items_count - * @property-read int|null $bookings_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereIsAllowedEditCommission($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereIsInhouse($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany wherePercentage($value) - * @mixin \Eloquent - * @property int|null $active - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereActive($value) - * @property array|null $contact_emails - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereContactEmails($value) - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelCompanyService[] $travel_company_services - * @property-read int|null $travel_company_services_count - */ - class TravelCompany extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class CreditCardType - * - * @property int $id - * @property string $name - * @property Collection|Customer[] $customers - * @package App\Models - * @property-read int|null $customers_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CreditCardType newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CreditCardType newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CreditCardType query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CreditCardType whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CreditCardType whereName($value) - * @mixin \Eloquent - */ - class CreditCardType extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class TravelCompanyService - * - * @property int $id - * @property int $travel_company_id - * @property string $name - * @property string $description - * @property bool $active - * @property int $pos - * @property Carbon $created_at - * @property Carbon $updated_at - * @property TravelCompany $travel_company - * @property Collection|BookingCompanyService[] $booking_company_services - * @package App\Models - * @property-read int|null $booking_company_services_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService whereDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService wherePos($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService whereTravelCompanyId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompanyService whereUpdatedAt($value) - * @mixin \Eloquent - */ - class TravelCompanyService extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\CMSContent - * - * @property int $id - * @property string $name - * @property string $slug - * @property string $field - * @property string|null $text - * @property string|null $full_text - * @property int|null $integer - * @property float|null $decimal - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent findSimilarSlugs($attribute, $config, $slug) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereDecimal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereField($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereFullText($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereInteger($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereSlug($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereText($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereUpdatedAt($value) - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent query() - * @property string|null $identifier - * @property array|null $object - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereIdentifier($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereObject($value) - * @property int|null $pos - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent wherePos($value) - */ - class CMSContent extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class ArrangementTemplate - * - * @property int $id - * @property string $title - * @property Collection|Arrangement[] $arrangements - * @package App\Models - * @property-read int|null $arrangements_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArrangementTemplate newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArrangementTemplate newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArrangementTemplate query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArrangementTemplate whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ArrangementTemplate whereTitle($value) - * @mixin \Eloquent - */ - class ArrangementTemplate extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class TravelBookingFewoChannel - * - * @property int $id - * @property string $name - * @property \Carbon\Carbon $created_at - * @property \Carbon\Carbon $updated_at - * @property \Illuminate\Database\Eloquent\Collection $travel_user_booking_fewos - * @package App\Models - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel whereUpdatedAt($value) - * @property-read int|null $travel_user_booking_fewos_count - */ - class TravelBookingFewoChannel extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class InsuranceCertificate - * - * @property int $id - * @property int $booking_id - * @property int $internal_id - * @property string $filename - * @property boolean $binary_data - * @property Carbon $created_at - * @property Carbon $updated_at - * @property string $request_data - * @property Booking $booking - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereBinaryData($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereFilename($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereInternalId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereRequestData($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InsuranceCertificate whereUpdatedAt($value) - * @mixin \Eloquent - */ - class InsuranceCertificate extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class InquiryTemplate - * - * @property int $id - * @property string $title - * @property Collection|Inquiry[] $inquiries - * @package App\Models - * @property-read int|null $inquiries_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryTemplate newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryTemplate newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryTemplate query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryTemplate whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\InquiryTemplate whereTitle($value) - * @mixin \Eloquent - */ - class InquiryTemplate extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\Page - * - * @property int $id - * @property int|null $owner - * @property string|null $model - * @property int|null $lvl - * @property int $owner_second - * @property int|null $catalog_id - * @property int|null $catalog_index - * @property string|null $slug - * @property int|null $travel_program + * @property string|null $subtitle + * @property string|null $slider_info + * @property int|null $program_type + * @property int|null $organizer + * @property int|null $generalnote * @property int|null $status - * @property int|null $show_in_navi - * @property int|null $order - * @property string|null $title - * @property string|null $pagetitle - * @property string|null $description - * @property string|null $keywords - * @property string|null $content - * @property string|null $content_new - * @property string|null $buma_destination - * @property int|null $OLD_CatalogID - * @property int|null $OLD_OwnerID - * @property int|null $buma_gjr - * @property string|null $date - * @property int $price-tags + * @property string|null $included + * @property string|null $class_description + * @property string|null $excluded + * @property string|null $advices + * @property string|null $notes + * @property string|null $url + * @property int|null $max_age_for_children + * @property string|null $html_description + * @property int|null $insurance_1 + * @property int|null $insurance_2 + * @property int|null $insurance_3 + * @property int|null $insurance_4 + * @property bool $in_slider + * @property bool $show_map + * @property string|null $map_html + * @property string $map_image + * @property string $map_image_ext + * @property int|null $travel_country + * @property int|null $travel_category + * @property int|null $travel_agenda + * @property int|null $deposit_percent + * @property bool|null $netto_prices_in_euro * @property string|null $text_right - * @property string|null $keyword - * @property string|null $canonical_url - * @property int|null $country_id - * @property string|null $template - * @property int|null $lft - * @property int|null $rgt - * @property int|null $tree_root - * @property int|null $parent_id - * @property string|null $real_url_path - * @property string|null $box_body - * @property string|null $box_image_url - * @property string|null $box_star - * @property string|null $box_discount - * @property string|null $cms_settings - * @property int|null $fewo_lodging - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereBoxBody($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereBoxDiscount($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereBoxImageUrl($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereBoxStar($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereBumaDestination($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereBumaGjr($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereCanonicalUrl($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereCatalogId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereCatalogIndex($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereCmsSettings($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereContent($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereContentNew($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereCountryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereFewoLodging($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereKeyword($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereKeywords($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereLft($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereLvl($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereModel($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereOLDCatalogID($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereOLDOwnerID($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereOrder($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereOwner($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereOwnerSecond($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page wherePagetitle($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereParentId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page wherePriceTags($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereRealUrlPath($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereRgt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereShowInNavi($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereSlug($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereStatus($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTemplate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTextRight($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTitle($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTravelProgram($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTreeRoot($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereUpdatedAt($value) + * @property float|null $default_flight_price + * @property int|null $travel_arrival_point_id + * @property string|null $weekdays + * @property int|null $position + * @property float|null $discount + * @property int|null $discount_is_percent_value + * @property Carbon|null $created_at + * @property Carbon|null $updated_at + * @property TravelArrivalPoint|null $travel_arrival_point + * @property TravelOrganizer|null $travel_organizer + * @property TravelInsurance|null $travel_insurance + * @property TravelGeneralNote|null $travel_general_note + * @property Option $option + * @property Collection|TravelClass[] $travel_classes + * @property Collection|TravelDeparturePoint[] $travel_departure_points + * @property Collection|TravelPeriod[] $travel_periods + * @property TravelProgramCountry $travel_program_country + * @property TravelProgramDestination $travel_program_destination + * @property Collection|TravelProgramDraft[] $travel_program_drafts + * @property Collection|TravelProgramImage[] $travel_program_images + * @property TravelProgramOption $travel_program_option + * @property TravelProgramRelated $travel_program_related + * @package App\Models + * @property int|null $travel_company + * @property-read Collection|\App\Models\TravelClass[] $classes + * @property-read int|null $classes_count + * @property-read int|null $travel_classes_count + * @property-read int|null $travel_program_drafts_count + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram query() + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereAdvices($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereCategoryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereClassDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereDefaultFlightPrice($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereDepositPercent($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereDiscount($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereDiscountIsPercentValue($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereExcluded($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereGeneralnote($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereHtmlDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereInSlider($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereIncluded($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereInsurance1($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereInsurance2($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereInsurance3($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereInsurance4($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereIsSeasonal($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereMapHtml($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereMapImage($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereMapImageExt($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereMaxAgeForChildren($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereNettoPricesInEuro($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereNotes($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereOrganizer($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram wherePosition($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereProfitMargin($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereProgramCode($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereProgramDuration($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereProgramType($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereShowMap($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereSliderInfo($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereSubtitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereTextRight($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereTravelAgenda($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereTravelArrivalPointId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereTravelCategory($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereTravelCompany($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereTravelCountry($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereUrl($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereWeekdays($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram whereYouth($value) + * @property string|null $payment_conditions + * @property-read \App\Models\Page|null $page + * @property-read \App\Models\TravelProgramCategory|null $travel_program_category + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgram wherePaymentConditions($value) * @mixin \Eloquent - * @property int|null $travel_guide_content_id - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTravelGuideContentId($value) - * @property string|null $title_short - * @property string|null $before_title - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereBeforeTitle($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTitleShort($value) */ - class Page extends \Eloquent {} + class TravelProgram extends \Eloquent {} } namespace App\Models{ /** - * Class BookingCompanyService + * App\Models\TravelProgramCategory * * @property int $id - * @property int $travel_company_service_id - * @property int $booking_id - * @property int $status - * @property Carbon $created_at - * @property Carbon $updated_at - * @property Booking $booking - * @property TravelCompanyService $travel_company_service - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService whereStatus($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService whereTravelCompanyServiceId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCompanyService whereUpdatedAt($value) + * @property string|null $name + * @property string $conversion_code + * @property-read int|null $travel_programs_count + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgramCategory newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgramCategory newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgramCategory query() + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgramCategory whereConversionCode($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgramCategory whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelProgramCategory whereName($value) + * @property-read Collection $travel_programs * @mixin \Eloquent */ - class BookingCompanyService extends \Eloquent {} + class TravelProgramCategory extends \Eloquent {} } namespace App\Models{ @@ -2908,281 +4664,102 @@ namespace App\Models{ * @property-read \App\Models\TravelProgram|null $travel_program * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramCountry whereCountryId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramCountry whereProgramId($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramCountry newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramCountry newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramCountry query() + * @mixin \Eloquent */ class TravelProgramCountry extends \Eloquent {} } namespace App\Models{ /** - * Class Lead + * App\Models\TravelProgramDraft * * @property int $id - * @property int $customer_id - * @property Carbon $request_date - * @property Carbon $travelperiod_start - * @property Carbon $travelperiod_end - * @property int $travelperiod_length - * @property int $travelcountry_id - * @property int $travelagenda_id - * @property string $remarks - * @property int $sf_guard_user_id - * @property bool $is_closed - * @property int $initialcontacttype_id - * @property int $searchengine_id - * @property string $searchengine_keywords - * @property int $status_id - * @property Carbon $next_due_date - * @property int $website_id - * @property int $travelcategory_id - * @property Carbon $created_at - * @property Carbon $updated_at - * @property float $price - * @property int $pax - * @property string $participant_name - * @property string $participant_firstname - * @property Carbon $participant_birthdate - * @property int $participant_salutation_id - * @property Customer $customer - * @property InitialContactType $initial_contact_type - * @property Salutation $salutation - * @property Searchengine $searchengine - * @property SfGuardUser $sf_guard_user - * @property Status $status - * @property TravelAgenda $travel_agenda - * @property TravelCategory $travel_category - * @property TravelCountry $travel_country - * @property Website $website - * @property Collection|Booking[] $bookings - * @property Collection|Inquiry[] $inquiries - * @property Collection|LeadParticipant[] $lead_participants - * @property Collection|Offer[] $offers - * @property Collection|StatusHistory[] $status_histories - * @package App\Models - * @property-read int|null $bookings_count - * @property-read int|null $inquiries_count - * @property-read int|null $lead_participants_count - * @property-read int|null $offers_count - * @property-read int|null $status_histories_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereCustomerId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereInitialcontacttypeId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereIsClosed($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereNextDueDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereParticipantBirthdate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereParticipantFirstname($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereParticipantName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereParticipantSalutationId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead wherePax($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead wherePrice($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereRemarks($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereRequestDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereSearchengineId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereSearchengineKeywords($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereSfGuardUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereStatusId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereTravelagendaId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereTravelcategoryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereTravelcountryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereTravelperiodEnd($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereTravelperiodLength($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereTravelperiodStart($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereWebsiteId($value) - * @mixin \Eloquent - * @property-read \App\Models\Sym\TravelCountry|null $travel_country_crm - * @property bool|null $is_rebook - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereIsRebook($value) - */ - class Lead extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class ServiceProvider - * - * @property int $id - * @property string $name - * @property bool $dollar - * @property string $type - * @property Collection|ServiceProviderEntry[] $service_provider_entries - * @package App\Models - * @property-read int|null $service_provider_entries_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereDollar($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereType($value) - * @mixin \Eloquent - * @property array|null $contact_emails - * @property bool|null $active - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereContactEmails($value) - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ServiceProviderService[] $service_provider_services - * @property-read int|null $service_provider_services_count - */ - class ServiceProvider extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\TravelClass - * - * @property int $id - * @property string|null $name - * @property string|null $description - * @property int|null $program_id - * @property int $standard + * @property int $travel_program_id + * @property int $travel_class_id + * @property int $draft_id + * @property array $weekdays * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at - * @property-read \App\Models\TravelProgram|null $travel_program - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereProgramId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereStandard($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereUpdatedAt($value) + * @property-read \App\Models\Draft $draft + * @property-read \App\Models\TravelClass $travel_class + * @property-read \App\Models\TravelProgram $travel_program + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereDraftId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereTravelClassId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereTravelProgramId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereWeekdays($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft query() * @mixin \Eloquent - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelProgramDraft[] $travel_program_drafts - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass query() - * @property-read int|null $travel_program_drafts_count */ - class TravelClass extends \Eloquent {} + class TravelProgramDraft extends \Eloquent {} } namespace App\Models{ /** - * Class ServiceProviderService + * Class TravelUser * * @property int $id - * @property int $service_provider_id - * @property string $name - * @property string $description - * @property bool $active - * @property int $pos - * @property Carbon $created_at - * @property Carbon $updated_at - * @property ServiceProvider $service_provider - * @property Collection|BookingProviderService[] $booking_provider_services + * @property int $salutation_id + * @property string $title + * @property string $first_name + * @property string $last_name + * @property string $email + * @property string $password + * @property string $company + * @property string $street + * @property string $zipcode + * @property string $city + * @property string $phone + * @property string $mobil + * @property string $fax + * @property \Carbon\Carbon $birthday + * @property int $travel_nationality_id + * @property string $last_user_data + * @property \Carbon\Carbon $created_at + * @property \Carbon\Carbon $updated_at + * @property string $deleted_at + * @property \App\Models\TravelNationality $travel_nationality + * @property \Illuminate\Database\Eloquent\Collection $travel_user_booking_fewos * @package App\Models - * @property-read int|null $booking_provider_services_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService whereDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService wherePos($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService whereServiceProviderId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProviderService whereUpdatedAt($value) + * @method static bool|null forceDelete() + * @method static \Illuminate\Database\Query\Builder|\App\Models\TravelUser onlyTrashed() + * @method static bool|null restore() + * @method static \Illuminate\Database\Query\Builder|\App\Models\TravelUser withTrashed() + * @method static \Illuminate\Database\Query\Builder|\App\Models\TravelUser withoutTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereBirthday($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereCity($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereCompany($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereEmail($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereFax($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereFirstName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereLastName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereLastUserData($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereMobil($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser wherePassword($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser wherePhone($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereSalutationId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereStreet($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereTravelNationalityId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereZipcode($value) + * @property-read int|null $travel_user_booking_fewos_count * @mixin \Eloquent */ - class ServiceProviderService extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class IQContentFileTag - * - * @property int $id - * @property int $file_id - * @property int $tag_id - * @property Carbon $created_at - * @property Carbon $updated_at - * - * //* @property IQContentFile $i_q_content_file - * @property IQContentTag $i_q_content_tag - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag whereFileId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag whereTagId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFileTag whereUpdatedAt($value) - * @mixin \Eloquent - */ - class IQContentFileTag extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\DraftType - * - * @property int $id - * @property string $name - * @property int $active - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereUpdatedAt($value) - * @mixin \Eloquent - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\DraftItem[] $draft_items - * @property string|null $color - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereColor($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType query() - * @property int|null $pos - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType wherePos($value) - * @property-read int|null $draft_items_count - */ - class DraftType extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class Arrangement - * - * @property int $id - * @property int $template_id - * @property Carbon $state - * @property Carbon $begin - * @property Carbon $end - * @property string $type_s - * @property string $data_s - * @property int $view_position - * @property int $booking_id - * @property int $type_id - * @property bool $in_pdf - * @property Booking $booking - * @property ArrangementTemplate $arrangement_template - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement whereBegin($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement whereDataS($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement whereEnd($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement whereInPdf($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement whereState($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement whereTemplateId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement whereTypeId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement whereTypeS($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement whereViewPosition($value) - * @mixin \Eloquent - */ - class Arrangement extends \Eloquent {} + class TravelUser extends \Eloquent {} } namespace App\Models{ @@ -3222,7 +4799,6 @@ namespace App\Models{ * @method static bool|null restore() * @method static \Illuminate\Database\Query\Builder|\App\Models\TravelUserBookingFewo withTrashed() * @method static \Illuminate\Database\Query\Builder|\App\Models\TravelUserBookingFewo withoutTrashed() - * @mixin \Eloquent * @property int|null $fewo_reservation_id * @property float|null $price_balance * @property float|null $price_extra @@ -3281,652 +4857,57 @@ namespace App\Models{ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelUserBookingFile[] $booking_files * @property-read int|null $booking_files_count * @property-read \App\Models\TravelUser $customer + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelUserBookingFewoNotice[] $booking_fewo_notices + * @property-read int|null $booking_fewo_notices_count + * @property bool $is_calendar_traum_fewo + * @method static \Illuminate\Database\Eloquent\Builder|TravelUserBookingFewo whereIsCalendarTraumFewo($value) + * @mixin \Eloquent */ class TravelUserBookingFewo extends \Eloquent {} } namespace App\Models{ /** - * Class Coupon + * Class TravelUserBookingFewoNotice * * @property int $id - * @property string $number - * @property int $customer_id - * @property int $booking_id - * @property float $value - * @property Carbon $issue_date - * @property Carbon $valid_date - * @property bool $is_redeemed - * @property Carbon $redeem_date + * @property int $travel_user_booking_fewo_id + * @property int $from_user_id + * @property int $to_user_id + * @property string $message + * @property bool $show + * @property bool $important + * @property Carbon $edit_at * @property Carbon $created_at * @property Carbon $updated_at - * @property Booking $booking - * @property Customer $customer - * @property Collection|Booking[] $bookings + * @property TravelUserBookingFewo $travel_user_booking_fewo * @package App\Models - * @property-read int|null $bookings_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereCustomerId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereIsRedeemed($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereIssueDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereNumber($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereRedeemDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereValidDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereValue($value) + * @property-read User $from_user + * @property-read User|null $to_user + * @method static \Illuminate\Database\Eloquent\Builder|TravelUserBookingFewoNotice newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|TravelUserBookingFewoNotice newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|TravelUserBookingFewoNotice query() + * @method static \Illuminate\Database\Eloquent\Builder|TravelUserBookingFewoNotice whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelUserBookingFewoNotice whereEditAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelUserBookingFewoNotice whereFromUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelUserBookingFewoNotice whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelUserBookingFewoNotice whereImportant($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelUserBookingFewoNotice whereMessage($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelUserBookingFewoNotice whereShow($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelUserBookingFewoNotice whereToUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelUserBookingFewoNotice whereTravelUserBookingFewoId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelUserBookingFewoNotice whereUpdatedAt($value) * @mixin \Eloquent - * @property string|null $text - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereText($value) */ - class Coupon extends \Eloquent {} + class TravelUserBookingFewoNotice extends \Eloquent {} } namespace App\Models{ /** - * App\Models\Feedback + * Class TravelUserBookingFile * * @property int $id - * @property int|null $owner - * @property string|null $model - * @property int|null $lvl - * @property int $owner_second - * @property int|null $catalog_id - * @property int|null $catalog_index - * @property string|null $slug - * @property int|null $travel_program - * @property int|null $status - * @property int|null $show_in_navi - * @property int|null $order - * @property string|null $title - * @property string|null $pagetitle - * @property string|null $description - * @property string|null $keywords - * @property string|null $content - * @property string|null $content_new - * @property string|null $buma_destination - * @property int|null $OLD_CatalogID - * @property int|null $OLD_OwnerID - * @property int|null $buma_gjr - * @property string|null $date - * @property int $price-tags - * @property string|null $text_right - * @property string|null $keyword - * @property string|null $canonical_url - * @property int|null $country_id - * @property string|null $template - * @property int|null $lft - * @property int|null $rgt - * @property int|null $tree_root - * @property int|null $parent_id - * @property string|null $real_url_path - * @property string|null $box_body - * @property string|null $box_image_url - * @property string|null $box_star - * @property string|null $box_discount - * @property string|null $cms_settings - * @property int|null $fewo_lodging - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Feedback[] $children - * @property-read \App\Models\Feedback|null $parent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereBoxBody($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereBoxDiscount($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereBoxImageUrl($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereBoxStar($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereBumaDestination($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereBumaGjr($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereCanonicalUrl($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereCatalogId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereCatalogIndex($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereCmsSettings($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereContent($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereContentNew($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereCountryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereFewoLodging($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereKeyword($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereKeywords($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereLft($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereLvl($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereModel($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereOLDCatalogID($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereOLDOwnerID($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereOrder($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereOwner($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereOwnerSecond($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback wherePagetitle($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereParentId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback wherePriceTags($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereRealUrlPath($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereRgt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereShowInNavi($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereSlug($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereStatus($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTemplate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTextRight($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTitle($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTravelProgram($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTreeRoot($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereUpdatedAt($value) - * @mixin \Eloquent - * @property int|null $travel_guide_content_id - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTravelGuideContentId($value) - * @property string|null $title_short - * @property string|null $before_title - * @property-read int|null $children_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereBeforeTitle($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTitleShort($value) - */ - class Feedback extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class Participant - * - * @property int $id - * @property int $booking_id - * @property string $participant_name - * @property string $participant_firstname - * @property Carbon $participant_birthdate - * @property int $participant_salutation_id - * @property bool $participant_child - * @property Booking $booking - * @property Salutation $salutation - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereParticipantBirthdate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereParticipantChild($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereParticipantFirstname($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereParticipantName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereParticipantSalutationId($value) - * @mixin \Eloquent - */ - class Participant extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\TravelProgram - * - * @property int $id - * @property float|null $profit_margin - * @property int|null $category_id - * @property string|null $program_code - * @property int|null $program_duration - * @property int|null $is_seasonal - * @property int|null $youth - * @property string|null $title - * @property string|null $subtitle - * @property string|null $slider_info - * @property int|null $program_type - * @property int|null $crm_draft_id_standard - * @property int|null $crm_draft_id_comfort - * @property int|null $organizer - * @property int|null $generalnote - * @property int|null $status - * @property string|null $included - * @property string|null $class_description - * @property string|null $excluded - * @property string|null $advices - * @property string|null $notes - * @property string|null $url - * @property int|null $max_age_for_children - * @property string|null $html_description - * @property int|null $insurance_1 - * @property int|null $insurance_2 - * @property int|null $insurance_3 - * @property int $in_slider - * @property int $show_map - * @property string|null $map_html - * @property string $map_image - * @property string $map_image_ext - * @property int|null $travel_country - * @property int|null $travel_category - * @property int|null $travel_agenda - * @property int|null $deposit_percent - * @property int|null $netto_prices_in_euro - * @property string|null $text_right - * @property float|null $default_flight_price - * @property int|null $travel_arrival_point_id - * @property string|null $weekdays - * @property int|null $position - * @property float|null $discount - * @property int|null $discount_is_percent_value - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereAdvices($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereCategoryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereClassDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereCrmDraftIdComfort($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereCrmDraftIdStandard($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereDefaultFlightPrice($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereDepositPercent($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereDiscount($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereDiscountIsPercentValue($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereExcluded($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereGeneralnote($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereHtmlDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereInSlider($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereIncluded($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereInsurance1($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereInsurance2($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereInsurance3($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereIsSeasonal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereMapHtml($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereMapImage($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereMapImageExt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereMaxAgeForChildren($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereNettoPricesInEuro($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereNotes($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereOrganizer($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram wherePosition($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereProfitMargin($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereProgramCode($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereProgramDuration($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereProgramType($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereShowMap($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereSliderInfo($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereStatus($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereSubtitle($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereTextRight($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereTitle($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereTravelAgenda($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereTravelArrivalPointId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereTravelCategory($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereTravelCountry($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereUrl($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereWeekdays($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereYouth($value) - * @mixin \Eloquent - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelClass[] $classes - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereUpdatedAt($value) - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelProgramDraft[] $travel_program_drafts - * @property int|null $insurance_4 - * @property-read \App\Models\TravelProgramCountry $travel_program_country - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereInsurance4($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram query() - * @property-read int|null $classes_count - * @property-read int|null $travel_program_drafts_count - * @property string|null $keywords - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgram whereKeywords($value) - */ - class TravelProgram extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\TravelAgenda - * - * @property int $id - * @property string $name - * @property int|null $travelcountry_id - * @property int|null $active - * @property-read \App\Models\TravelCountry|null $travel_country - * @property-read \App\Models\Sym\TravelCountry|null $travel_country_crm - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda whereTravelcountryId($value) - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda query() - */ - class TravelAgenda extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class TravelUser - * - * @property int $id - * @property int $salutation_id - * @property string $title - * @property string $first_name - * @property string $last_name - * @property string $email - * @property string $password - * @property string $company - * @property string $street - * @property string $zipcode - * @property string $city - * @property string $phone - * @property string $mobil - * @property string $fax - * @property \Carbon\Carbon $birthday - * @property int $travel_nationality_id - * @property string $last_user_data - * @property \Carbon\Carbon $created_at - * @property \Carbon\Carbon $updated_at - * @property string $deleted_at - * @property \App\Models\TravelNationality $travel_nationality - * @property \Illuminate\Database\Eloquent\Collection $travel_user_booking_fewos - * @package App\Models - * @method static bool|null forceDelete() - * @method static \Illuminate\Database\Query\Builder|\App\Models\TravelUser onlyTrashed() - * @method static bool|null restore() - * @method static \Illuminate\Database\Query\Builder|\App\Models\TravelUser withTrashed() - * @method static \Illuminate\Database\Query\Builder|\App\Models\TravelUser withoutTrashed() - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereBirthday($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereCity($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereCompany($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereDeletedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereEmail($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereFax($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereFirstName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereLastName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereLastUserData($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereMobil($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser wherePassword($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser wherePhone($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereSalutationId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereStreet($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereTitle($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereTravelNationalityId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereZipcode($value) - * @property-read int|null $travel_user_booking_fewos_count - */ - class TravelUser extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class BookingConfirmation - * - * @property int $id - * @property int $booking_id - * @property float $total - * @property float $deposit - * @property float $final_payment - * @property Carbon $deposit_payment_date - * @property Carbon $final_payment_date - * @property boolean $binary_data - * @property Carbon $created_at - * @property Carbon $updated_at - * @property Booking $booking - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereBinaryData($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereDeposit($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereDepositPaymentDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereFinalPayment($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereFinalPaymentDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereTotal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingConfirmation whereUpdatedAt($value) - * @mixin \Eloquent - */ - class BookingConfirmation extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\CMSInfo - * - * @property int $id - * @property string $name - * @property string $slug - * @property string $field - * @property string|null $text - * @property string|null $full_text - * @property int|null $integer - * @property float|null $decimal - * @property int $active - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo findSimilarSlugs($attribute, $config, $slug) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereDecimal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereField($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereFullText($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereInteger($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereSlug($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereText($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereUpdatedAt($value) - * @mixin \Eloquent - * @property string $type - * @property int $bool - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereBool($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereType($value) - */ - class CMSInfo extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class TravelCountryService - * - * @property int $id - * @property int $travel_country_id - * @property int $crm_travel_country - * @property string $name - * @property string $description - * @property bool $active - * @property Carbon $created_at - * @property Carbon $updated_at - * @property TravelCountry $travel_country - * @property Collection|BookingCountryService[] $booking_country_services - * @package App\Models - * @property int|null $crm_travel_country_id - * @property int|null $pos - * @property-read int|null $booking_country_services_count - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereCrmTravelCountryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService wherePos($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereTravelCountryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountryService whereUpdatedAt($value) - * @mixin \Eloquent - */ - class TravelCountryService extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\IQContentTree - * - * @property int $id - * @property string $name - * @property string $identifier - * @property string $slug - * @property string|null $description - * @property array|null $settings - * @property int $pos - * @property int $active - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @property \Illuminate\Support\Carbon|null $deleted_at - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentTreeNode[] $iq_content_tree_nodes - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree findSimilarSlugs($attribute, $config, $slug) - * @method static bool|null forceDelete() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree newQuery() - * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTree onlyTrashed() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree query() - * @method static bool|null restore() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereDeletedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereDescription($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereIdentifier($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree wherePos($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereSettings($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereSlug($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereUpdatedAt($value) - * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTree withTrashed() - * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTree withoutTrashed() - * @mixin \Eloquent - * @property int|null $page_id - * @property int|null $root_id - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree wherePageId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereRootId($value) - * @property-read int|null $iq_content_tree_nodes_count - */ - class IQContentTree extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class BookingStorno - * - * @property int $id - * @property int $booking_id - * @property float $total - * @property float $storno - * @property Carbon $storno_date - * @property boolean $binary_data - * @property bool $done - * @property Carbon $created_at - * @property Carbon $updated_at - * @property Booking $booking - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereBinaryData($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereDone($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereStorno($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereStornoDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereTotal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereUpdatedAt($value) - * @mixin \Eloquent - */ - class BookingStorno extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class BookingCountryService - * - * @property int $id - * @property int $travel_country_service_id - * @property int $booking_id - * @property Carbon $created_at - * @property Carbon $updated_at - * @property Booking $booking - * @property TravelCountryService $travel_country_service - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereTravelCountryServiceId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereUpdatedAt($value) - * @mixin \Eloquent - * @property int|null $status - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereStatus($value) - */ - class BookingCountryService extends \Eloquent {} -} - -namespace App\Models{ -/** - * App\Models\SfGuardUser - * - * @property int $id - * @property int|null $user_id - * @property string $username - * @property string $algorithm - * @property string|null $salt - * @property string|null $password - * @property int|null $is_active - * @property int|null $is_super_admin - * @property string|null $last_login - * @property string|null $first_name - * @property string|null $last_name - * @property string|null $email_address - * @property string|null $default_page - * @property int|null $branch_id - * @property string|null $api_key - * @property string|null $identify - * @property string|null $token - * @property string|null $token_at - * @property \Illuminate\Support\Carbon $created_at - * @property \Illuminate\Support\Carbon $updated_at - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereAlgorithm($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereApiKey($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereBranchId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereDefaultPage($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereEmailAddress($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereFirstName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereIdentify($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereIsActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereIsSuperAdmin($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereLastLogin($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereLastName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser wherePassword($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereSalt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereToken($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereTokenAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereUpdatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereUserId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereUsername($value) - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser query() - */ - class SfGuardUser extends \Eloquent {} -} - -namespace App\Models{ -/** - * Class BookingFile - * - * @property int $id - * @property int $booking_id + * @property int $travel_user_booking_fewos * @property string $identifier * @property string $filename * @property string $dir @@ -3936,51 +4917,173 @@ namespace App\Models{ * @property int $size * @property Carbon $created_at * @property Carbon $updated_at - * @property Booking $booking + * @property TravelUserBookingFewo $travel_user_booking_fewo * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereBookingId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereDir($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereExt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereFilename($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereIdentifier($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereMine($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereOriginalName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereSize($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingFile whereUpdatedAt($value) + * @property int|null $travel_user_booking_fewo_id + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereDir($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereExt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereFilename($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereIdentifier($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereMine($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereOriginalName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereSize($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereTravelUserBookingFewoId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUserBookingFile whereUpdatedAt($value) * @mixin \Eloquent */ - class BookingFile extends \Eloquent {} + class TravelUserBookingFile extends \Eloquent {} } namespace App\Models{ /** - * App\Models\Draft + * App\Models\UserUpdateEmail + * + * @property-read \App\User $user + * @property int $user_id + * @property string $email + * @property string $token + * @property \Illuminate\Support\Carbon $created_at + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail whereEmail($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail whereToken($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail whereUserId($value) + * @mixin \Eloquent + */ + class UserUpdateEmail extends \Eloquent {} +} + +namespace App\Models{ +/** + * Class Website * * @property int $id * @property string $name + * @property Collection|Lead[] $leads + * @package App\Models + * @property-read int|null $leads_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Website newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Website newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Website query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Website whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Website whereName($value) + * @mixin \Eloquent + */ + class Website extends \Eloquent {} +} + +namespace App{ +/** + * App\User + * + * @property int $id + * @property string $name + * @property string $email + * @property string $password + * @property string|null $remember_token + * @property string|null $token + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \Illuminate\Notifications\DatabaseNotificationCollection|\Illuminate\Notifications\DatabaseNotification[] $notifications + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereEmail($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User wherePassword($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereRememberToken($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereToken($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereUpdatedAt($value) + * @property int|null $confirmed + * @property string|null $confirmation_code + * @property string|null $confirmation_date + * @property string|null $confirmation_code_to + * @property int|null $confirmation_code_remider + * @property int|null $active + * @property string|null $active_date + * @property string|null $agreement + * @property int|null $admin + * @property string|null $identify + * @property string|null $lang + * @property string|null $last_login + * @property \Illuminate\Support\Carbon|null $deleted_at + * @property-read \App\Models\Account $account + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserUpdateEmail[] $user_update_email + * @method static bool|null forceDelete() + * @method static \Illuminate\Database\Query\Builder|\App\User onlyTrashed() + * @method static bool|null restore() + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereActiveDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereAdmin($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereAgreement($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereConfirmationCode($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereConfirmationCodeRemider($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereConfirmationCodeTo($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereConfirmationDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereConfirmed($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereIdentify($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereLang($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereLastLogin($value) + * @method static \Illuminate\Database\Query\Builder|\App\User withTrashed() + * @method static \Illuminate\Database\Query\Builder|\App\User withoutTrashed() + * @property-read \Illuminate\Database\Eloquent\Collection|\Laravel\Passport\Client[] $clients + * @property-read \Illuminate\Database\Eloquent\Collection|\Laravel\Passport\Token[] $tokens + * @property array|null $permissions + * @method static \Illuminate\Database\Eloquent\Builder|\App\User newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\User newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\User query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\User wherePermissions($value) + * @property-read int|null $clients_count + * @property-read int|null $notifications_count + * @property-read int|null $tokens_count + * @property-read int|null $user_update_email_count + * @property-read \App\Models\SfGuardUser|null $sf_guard_user + * @property string|null $secret_key + * @property int|null $google2fa + * @method static \Illuminate\Database\Eloquent\Builder|User whereGoogle2fa($value) + * @method static \Illuminate\Database\Eloquent\Builder|User whereSecretKey($value) + * @mixin \Eloquent + */ + class User extends \Eloquent {} +} + +namespace IqContent\LaravelFilemanager\Models{ +/** + * IqContent\LaravelFilemanager\Models\IQContentCategory + * + * @property int $id + * @property string $name + * @property string $slug + * @property int $pos * @property int $active * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft whereUpdatedAt($value) + * @property-read \Illuminate\Database\Eloquent\Collection|\IqContent\LaravelFilemanager\Models\IQContentTag[] $tags + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory findSimilarSlugs($attribute, $config, $slug) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory query() + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereUpdatedAt($value) + * @property-read int|null $tags_count + * @property string|null $identifier + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereIdentifier($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQContentCategory withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) * @mixin \Eloquent - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\DraftItem[] $draft_items - * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelProgramDraft[] $travel_program_drafts - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft query() - * @property-read int|null $draft_items_count - * @property-read int|null $travel_program_drafts_count */ - class Draft extends \Eloquent {} + class IQContentCategory extends \Eloquent {} } namespace IqContent\LaravelFilemanager\Models{ @@ -4023,73 +5126,35 @@ namespace IqContent\LaravelFilemanager\Models{ * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFile whereSize($value) * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFile whereSlug($value) * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFile whereUpdatedAt($value) - * @mixin \Eloquent * @property-read int|null $file_tags_count + * @method static \Illuminate\Database\Eloquent\Builder|IQContentFile withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent */ class IQContentFile extends \Eloquent {} } namespace IqContent\LaravelFilemanager\Models{ /** - * IqContent\LaravelFilemanager\Models\IQContentTag + * IqContent\LaravelFilemanager\Models\IQContentFileTag * * @property int $id - * @property int $category_id - * @property string $name - * @property string $slug - * @property int $pos - * @property int $active + * @property int $file_id + * @property int $tag_id * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at - * @property-read \IqContent\LaravelFilemanager\Models\IQContentCategory $category - * @property-read \Illuminate\Database\Eloquent\Collection|\IqContent\LaravelFilemanager\Models\IQContentFileTag[] $file_tags - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag findSimilarSlugs($attribute, $config, $slug) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag query() - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereCategoryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag wherePos($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereSlug($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereUpdatedAt($value) + * @property-read \IqContent\LaravelFilemanager\Models\IQContentFile $file + * @property-read \IqContent\LaravelFilemanager\Models\IQContentTag $tag + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag query() + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag whereFileId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag whereTagId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag whereUpdatedAt($value) * @mixin \Eloquent - * @property-read int|null $file_tags_count */ - class IQContentTag extends \Eloquent {} -} - -namespace IqContent\LaravelFilemanager\Models{ -/** - * IqContent\LaravelFilemanager\Models\IQContentCategory - * - * @property int $id - * @property string $name - * @property string $slug - * @property int $pos - * @property int $active - * @property \Illuminate\Support\Carbon|null $created_at - * @property \Illuminate\Support\Carbon|null $updated_at - * @property-read \Illuminate\Database\Eloquent\Collection|\IqContent\LaravelFilemanager\Models\IQContentTag[] $tags - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory findSimilarSlugs($attribute, $config, $slug) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory query() - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereActive($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory wherePos($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereSlug($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereUpdatedAt($value) - * @mixin \Eloquent - * @property-read int|null $tags_count - * @property string|null $identifier - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereIdentifier($value) - */ - class IQContentCategory extends \Eloquent {} + class IQContentFileTag extends \Eloquent {} } namespace IqContent\LaravelFilemanager\Models{ @@ -4125,34 +5190,44 @@ namespace IqContent\LaravelFilemanager\Models{ * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFolder wherePos($value) * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFolder whereSlug($value) * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFolder whereUpdatedAt($value) - * @mixin \Eloquent * @property-read int|null $files_count * @property-read int|null $folders_count + * @method static \Illuminate\Database\Eloquent\Builder|IQContentFolder withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent */ class IQContentFolder extends \Eloquent {} } namespace IqContent\LaravelFilemanager\Models{ /** - * IqContent\LaravelFilemanager\Models\IQContentFileTag + * IqContent\LaravelFilemanager\Models\IQContentTag * * @property int $id - * @property int $file_id - * @property int $tag_id + * @property int $category_id + * @property string $name + * @property string $slug + * @property int $pos + * @property int $active * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at - * @property-read \IqContent\LaravelFilemanager\Models\IQContentFile $file - * @property-read \IqContent\LaravelFilemanager\Models\IQContentTag $tag - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag query() - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag whereFileId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag whereTagId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFileTag whereUpdatedAt($value) + * @property-read \IqContent\LaravelFilemanager\Models\IQContentCategory $category + * @property-read \Illuminate\Database\Eloquent\Collection|\IqContent\LaravelFilemanager\Models\IQContentFileTag[] $file_tags + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag findSimilarSlugs($attribute, $config, $slug) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag query() + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereCategoryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereUpdatedAt($value) + * @property-read int|null $file_tags_count + * @method static \Illuminate\Database\Eloquent\Builder|IQContentTag withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) * @mixin \Eloquent */ - class IQContentFileTag extends \Eloquent {} + class IQContentTag extends \Eloquent {} } diff --git a/app/Console/Commands/CleanupNewsletterBlockedEmails.php b/app/Console/Commands/CleanupNewsletterBlockedEmails.php new file mode 100644 index 0000000..f87ce0b --- /dev/null +++ b/app/Console/Commands/CleanupNewsletterBlockedEmails.php @@ -0,0 +1,122 @@ +info('Suche nach blockierten E-Mail-Adressen...'); + + $dryRun = $this->option('dry-run'); + + // Liste der blockierten Domains + $blockedDomains = [ + '@guest.booking.com', + '@messages.homeaway.com', + '@fewo.check24.de', + '@booking.com', + '@homeaway.com', + '@check24.de', + '@partner.booking.com', + ]; + + $stats = [ + 'found' => 0, + 'deleted' => 0, + ]; + + // Hole alle Newsletter-Kontakte + $contacts = NewsletterContact::all(); + + $this->info("Prüfe {$contacts->count()} Kontakte..."); + + $bar = $this->output->createProgressBar($contacts->count()); + $bar->start(); + + foreach ($contacts as $contact) { + $emailLower = strtolower($contact->email); + $isBlockedEmail = false; + + foreach ($blockedDomains as $domain) { + if (str_ends_with($emailLower, strtolower($domain))) { + $isBlockedEmail = true; + break; + } + } + + if ($isBlockedEmail) { + $stats['found']++; + + if ($dryRun) { + $this->newLine(); + $this->warn("Würde löschen: {$contact->email} (ID: {$contact->id})"); + } else { + // Log erstellen vor dem Löschen + $contact->logs()->create([ + 'action' => 'deleted', + 'description' => 'Kontakt entfernt - blockierte E-Mail-Domain (Buchungsplattform-Alias)', + ]); + + $contact->delete(); + $stats['deleted']++; + } + } + + $bar->advance(); + } + + $bar->finish(); + $this->newLine(2); + + // Statistiken ausgeben + if ($dryRun) { + $this->info('Dry-Run abgeschlossen!'); + $this->table( + ['Statistik', 'Anzahl'], + [ + ['Gefundene blockierte E-Mails', $stats['found']], + ] + ); + + if ($stats['found'] > 0) { + $this->newLine(); + $this->info('Führe den Befehl ohne --dry-run aus, um die Kontakte zu löschen:'); + $this->comment('php artisan newsletter:cleanup-blocked-emails'); + } + } else { + $this->info('Bereinigung abgeschlossen!'); + $this->table( + ['Statistik', 'Anzahl'], + [ + ['Gefundene blockierte E-Mails', $stats['found']], + ['Gelöschte Kontakte', $stats['deleted']], + ] + ); + } + + return 0; + } +} diff --git a/app/Console/Commands/ContactsFindDuplicates.php b/app/Console/Commands/ContactsFindDuplicates.php new file mode 100644 index 0000000..35ab2fb --- /dev/null +++ b/app/Console/Commands/ContactsFindDuplicates.php @@ -0,0 +1,160 @@ +info('Suche nach Duplikaten in der customer-Tabelle...'); + $this->newLine(); + + $groups = collect(); + + // ── HIGH: gleiche E-Mail ────────────────────────────────────────── + if ($this->shouldCheck('HIGH')) { + $emailDupes = DB::table('contacts') + ->select('email', DB::raw('COUNT(*) as cnt'), DB::raw('GROUP_CONCAT(id ORDER BY updated_at DESC) as ids')) + ->whereNotNull('email') + ->where('email', '!=', '') + ->whereNull('merged_into_id') + ->groupBy('email') + ->having('cnt', '>', 1) + ->get(); + + foreach ($emailDupes as $row) { + $groups->push([ + 'confidence' => 'HIGH', + 'reason' => 'E-Mail: ' . $row->email, + 'ids' => $row->ids, + 'count' => $row->cnt, + ]); + } + + $this->line(sprintf('HIGH (gleiche E-Mail): %d Gruppen', $emailDupes->count())); + } + + // ── MEDIUM: Name + Vorname + Geburtsdatum ──────────────────────── + if ($this->shouldCheck('MEDIUM')) { + $nameBdDupes = DB::table('contacts') + ->select( + 'name', 'firstname', 'birthdate', + DB::raw('COUNT(*) as cnt'), + DB::raw('GROUP_CONCAT(id ORDER BY updated_at DESC) as ids') + ) + ->whereNotNull('name') + ->whereNotNull('firstname') + ->whereNotNull('birthdate') + ->whereNull('merged_into_id') + ->groupBy('name', 'firstname', 'birthdate') + ->having('cnt', '>', 1) + ->get(); + + foreach ($nameBdDupes as $row) { + $groups->push([ + 'confidence' => 'MEDIUM', + 'reason' => "Name: {$row->firstname} {$row->name}, GD: {$row->birthdate}", + 'ids' => $row->ids, + 'count' => $row->cnt, + ]); + } + + $this->line(sprintf('MEDIUM (Name+GD): %d Gruppen', $nameBdDupes->count())); + } + + // ── LOW: Name + Vorname + PLZ ───────────────────────────────────── + if ($this->shouldCheck('LOW')) { + $nameZipDupes = DB::table('contacts') + ->select( + 'name', 'firstname', 'zip', + DB::raw('COUNT(*) as cnt'), + DB::raw('GROUP_CONCAT(id ORDER BY updated_at DESC) as ids') + ) + ->whereNotNull('name') + ->whereNotNull('firstname') + ->whereNotNull('zip') + ->where('zip', '!=', '') + ->whereNull('merged_into_id') + ->groupBy('name', 'firstname', 'zip') + ->having('cnt', '>', 1) + ->get(); + + foreach ($nameZipDupes as $row) { + $groups->push([ + 'confidence' => 'LOW', + 'reason' => "Name: {$row->firstname} {$row->name}, PLZ: {$row->zip}", + 'ids' => $row->ids, + 'count' => $row->cnt, + ]); + } + + $this->line(sprintf('LOW (Name+PLZ): %d Gruppen', $nameZipDupes->count())); + } + + $this->newLine(); + $this->info(sprintf('Gesamt: %d Duplikat-Gruppen gefunden', $groups->count())); + + if ($groups->isEmpty()) { + $this->info('Keine Duplikate — nichts zu tun.'); + return self::SUCCESS; + } + + // Tabellen-Ausgabe + $this->table( + ['Konfidenz', 'Grund', 'IDs (neueste zuerst)', 'Anzahl'], + $groups->map(fn ($g) => [$g['confidence'], $g['reason'], $g['ids'], $g['count']])->all() + ); + + // CSV-Export + if ($export = $this->option('export')) { + $this->exportCsv($groups->all(), $export); + $this->info("CSV gespeichert: {$export}"); + } else { + $this->newLine(); + $this->line('Tipp: --export=duplicates.csv für CSV-Export'); + $this->line('Tipp: php artisan contacts:merge-duplicates --dry-run zum Prüfen'); + } + + return self::SUCCESS; + } + + private function shouldCheck(string $level): bool + { + $filter = strtoupper((string) $this->option('confidence')); + return $filter === '' || $filter === $level; + } + + private function exportCsv(array $groups, string $path): void + { + $handle = fopen($path, 'w'); + fputcsv($handle, ['Konfidenz', 'Grund', 'IDs (neueste zuerst)', 'Anzahl']); + foreach ($groups as $group) { + fputcsv($handle, [$group['confidence'], $group['reason'], $group['ids'], $group['count']]); + } + fclose($handle); + } +} diff --git a/app/Console/Commands/ContactsMergeDuplicates.php b/app/Console/Commands/ContactsMergeDuplicates.php new file mode 100644 index 0000000..9aeeca6 --- /dev/null +++ b/app/Console/Commands/ContactsMergeDuplicates.php @@ -0,0 +1,233 @@ +dryRun = (bool) $this->option('dry-run'); + + if ($this->dryRun) { + $this->warn('DRY-RUN Modus — keine Daten werden verändert'); + } else { + $this->warn('ACHTUNG: Diese Operation verändert Produktionsdaten.'); + if (!$this->option('force') && !$this->confirm('Fortfahren?')) { + $this->info('Abgebrochen.'); + return self::SUCCESS; + } + } + + $this->newLine(); + + DB::transaction(function () { + $this->processLevel( + 'HIGH', + fn () => $this->findByEmail() + ); + + $this->processLevel( + 'MEDIUM', + fn () => $this->findByNameBirthdate() + ); + + $this->processLevel( + 'LOW', + fn () => $this->findByNameZip() + ); + }); + + $this->newLine(); + $this->info(sprintf( + '%s %d Duplikate zusammengeführt | %d leads aktualisiert | %d bookings aktualisiert', + $this->dryRun ? '[DRY-RUN]' : '', + $this->mergedCount, + $this->updatedLeads, + $this->updatedBookings + )); + + if ($this->dryRun) { + $this->newLine(); + $this->line('Zum Ausführen: php artisan contacts:merge-duplicates'); + } + + return self::SUCCESS; + } + + // ───────────────────────────────────────────────────────────────────────── + // Duplikat-Gruppen ermitteln + // ───────────────────────────────────────────────────────────────────────── + + private function findByEmail(): array + { + return DB::table('contacts') + ->select('email', DB::raw('GROUP_CONCAT(id ORDER BY updated_at DESC, id DESC) as ids')) + ->whereNotNull('email') + ->where('email', '!=', '') + ->whereNull('merged_into_id') + ->groupBy('email') + ->having(DB::raw('COUNT(*)'), '>', 1) + ->pluck('ids') + ->map(fn ($ids) => explode(',', $ids)) + ->all(); + } + + private function findByNameBirthdate(): array + { + return DB::table('contacts') + ->select(DB::raw('GROUP_CONCAT(id ORDER BY updated_at DESC, id DESC) as ids')) + ->whereNotNull('name') + ->whereNotNull('firstname') + ->whereNotNull('birthdate') + ->whereNull('merged_into_id') + ->groupBy('name', 'firstname', 'birthdate') + ->having(DB::raw('COUNT(*)'), '>', 1) + ->pluck('ids') + ->map(fn ($ids) => explode(',', $ids)) + ->all(); + } + + private function findByNameZip(): array + { + return DB::table('contacts') + ->select(DB::raw('GROUP_CONCAT(id ORDER BY updated_at DESC, id DESC) as ids')) + ->whereNotNull('name') + ->whereNotNull('firstname') + ->whereNotNull('zip') + ->where('zip', '!=', '') + ->whereNull('merged_into_id') + ->groupBy('name', 'firstname', 'zip') + ->having(DB::raw('COUNT(*)'), '>', 1) + ->pluck('ids') + ->map(fn ($ids) => explode(',', $ids)) + ->all(); + } + + // ───────────────────────────────────────────────────────────────────────── + // Verarbeitung + // ───────────────────────────────────────────────────────────────────────── + + private function processLevel(string $level, callable $finder): void + { + if ($filter = $this->option('confidence')) { + if (strtoupper($filter) !== $level) { + return; + } + } + + $groups = $finder(); + + if (empty($groups)) { + $this->line("[{$level}] Keine Duplikate."); + return; + } + + $this->line(sprintf('[%s] %d Gruppe(n) gefunden', $level, count($groups))); + + foreach ($groups as $ids) { + $masterId = (int) $ids[0]; // erster = neuester + $duplicateIds = array_map('intval', array_slice($ids, 1)); + + $this->line(sprintf( + ' Master: #%d ← Duplikate: %s', + $masterId, + implode(', ', array_map(fn ($id) => '#' . $id, $duplicateIds)) + )); + + foreach ($duplicateIds as $dupeId) { + $this->mergeInto($masterId, $dupeId); + } + } + } + + private function mergeInto(int $masterId, int $dupeId): void + { + // 1. Leads umhängen + $leadCount = DB::table('inquiries')->where('customer_id', $dupeId)->count(); + if ($leadCount > 0) { + $this->line(" lead.customer_id: {$leadCount} Zeile(n) → #{$masterId}"); + if (!$this->dryRun) { + DB::table('inquiries') + ->where('customer_id', $dupeId) + ->update(['customer_id' => $masterId]); + } + $this->updatedLeads += $leadCount; + } + + // 2. Bookings umhängen + $bookingCount = DB::table('booking')->where('customer_id', $dupeId)->count(); + if ($bookingCount > 0) { + $this->line(" booking.customer_id: {$bookingCount} Zeile(n) → #{$masterId}"); + if (!$this->dryRun) { + DB::table('booking') + ->where('customer_id', $dupeId) + ->update(['customer_id' => $masterId]); + } + $this->updatedBookings += $bookingCount; + } + + // 3. customer_mails umhängen + $mailCount = DB::table('customer_mails')->where('customer_id', $dupeId)->count(); + if ($mailCount > 0) { + $this->line(" customer_mails.customer_id: {$mailCount} Zeile(n) → #{$masterId}"); + if (!$this->dryRun) { + DB::table('customer_mails') + ->where('customer_id', $dupeId) + ->update(['customer_id' => $masterId]); + } + } + + // 4. lead_mails umhängen + $leadMailCount = DB::table('lead_mails')->where('customer_id', $dupeId)->count(); + if ($leadMailCount > 0) { + $this->line(" lead_mails.customer_id: {$leadMailCount} Zeile(n) → #{$masterId}"); + if (!$this->dryRun) { + DB::table('lead_mails') + ->where('customer_id', $dupeId) + ->update(['customer_id' => $masterId]); + } + } + + // 5. Duplikat als zusammengeführt markieren + if (!$this->dryRun) { + DB::table('contacts') + ->where('id', $dupeId) + ->update([ + 'merged_into_id' => $masterId, + 'merged_at' => now(), + ]); + } + + $this->mergedCount++; + } +} diff --git a/app/Console/Commands/SyncNewsletterFerienwohnungen.php b/app/Console/Commands/SyncNewsletterFerienwohnungen.php new file mode 100644 index 0000000..3630a9a --- /dev/null +++ b/app/Console/Commands/SyncNewsletterFerienwohnungen.php @@ -0,0 +1,254 @@ +info('Starte Synchronisation von Ferienwohnungs-Buchungen...'); + + $force = $this->option('force'); + + // Statistiken + $stats = [ + 'processed' => 0, + 'created' => 0, + 'updated' => 0, + 'skipped' => 0, + 'errors' => 0, + ]; + + // Hole alle Buchungen mit TravelUser und invoice_number + $query = TravelUserBookingFewo::with(['travel_user']) + ->whereNotNull('travel_user_id') + ->whereNotNull('invoice_number') + ->where('invoice_number', '!=', '') + // Nur wenn invoice_number eine reine Nummer ist (keine Storno etc.) + ->whereRaw('invoice_number REGEXP "^[0-9]+$"') + ->whereHas('travel_user', function ($q) { + $q->whereNotNull('email') + ->where('email', '!=', ''); + }) + // Nur Buchungen, bei denen die Reise bereits beendet ist (to_date in der Vergangenheit) + ->whereNotNull('to_date') + ->where('to_date', '<', now()); + + if (!$force) { + // Nur Buchungen der letzten 30 Tage (basierend auf Rückreisedatum) wenn nicht --force + $query->where('to_date', '>=', now()->subDays(30)); + } + + $bookings = $query->get(); + + $this->info("Verarbeite {$bookings->count()} Buchungen..."); + + $bar = $this->output->createProgressBar($bookings->count()); + $bar->start(); + + foreach ($bookings as $booking) { + try { + $stats['processed']++; + + $travelUser = $booking->travel_user; + + // Validiere E-Mail + if (!$travelUser || !$travelUser->email || !filter_var($travelUser->email, FILTER_VALIDATE_EMAIL)) { + $stats['skipped']++; + $bar->advance(); + continue; + } + + // Filtere Alias/Proxy E-Mail-Adressen von Buchungsplattformen + $blockedDomains = [ + '@guest.booking.com', + '@messages.homeaway.com', + '@fewo.check24.de', + '@booking.com', + '@homeaway.com', + '@check24.de', + '@partner.booking.com', + ]; + + $emailLower = strtolower($travelUser->email); + $isBlockedEmail = false; + foreach ($blockedDomains as $domain) { + if (str_ends_with($emailLower, strtolower($domain))) { + $isBlockedEmail = true; + break; + } + } + + if ($isBlockedEmail) { + $stats['skipped']++; + $bar->advance(); + continue; + } + + // Prüfe ob invoice_number wirklich eine reine Zahl ist + if (!preg_match('/^[0-9]+$/', $booking->invoice_number)) { + $stats['skipped']++; + $bar->advance(); + continue; + } + + // Generiere Hash für Duplikat-Erkennung + $syncHash = NewsletterContact::generateSyncHash( + $travelUser->email, + NewsletterContact::SOURCE_BOOKING_FERIENWOHNUNGEN + ); + + // Suche oder erstelle Kontakt + $contact = NewsletterContact::withTrashed() + ->where('email', strtolower(trim($travelUser->email))) + ->first(); + + $isNew = false; + + if (!$contact) { + // Neuer Kontakt + $contact = new NewsletterContact(); + $isNew = true; + $stats['created']++; + } else { + // Wenn gelöscht, wiederherstellen + if ($contact->trashed()) { + $contact->restore(); + } + $stats['updated']++; + } + + // Aktualisiere Kontaktdaten + $contact->email = strtolower(trim($travelUser->email)); + $contact->firstname = $travelUser->first_name ?: $contact->firstname; + $contact->lastname = $travelUser->last_name ?: $contact->lastname; + + // Setze Gruppe Ferienwohnungen + $contact->group_ferienwohnungen = true; + + // Source nur bei neuem Kontakt setzen (wenn noch nicht aus Kulturreisen) + if ($isNew) { + $contact->source = NewsletterContact::SOURCE_BOOKING_FERIENWOHNUNGEN; + $contact->subscribed_at = $booking->booking_date ? + \Carbon\Carbon::parse($booking->booking_date) : + $booking->created_at; + } + + // Referenz zum TravelUser + $contact->travel_user_id = $travelUser->id; + + // Aktualisiere Buchungsstatistiken + // Nur Buchungen mit invoice_number (reine Nummer) zählen + $userBookings = TravelUserBookingFewo::where('travel_user_id', $travelUser->id) + ->whereNotNull('invoice_number') + ->where('invoice_number', '!=', '') + ->whereRaw('invoice_number REGEXP "^[0-9]+$"') + ->count(); + + $contact->total_bookings_ferienwohnungen = $userBookings; + + // Letztes Buchungsdatum + $lastBooking = TravelUserBookingFewo::where('travel_user_id', $travelUser->id) + ->whereNotNull('invoice_number') + ->where('invoice_number', '!=', '') + ->whereRaw('invoice_number REGEXP "^[0-9]+$"') + ->orderBy('booking_date', 'DESC') + ->first(); + + if ($lastBooking && $lastBooking->booking_date) { + $lastBookingDate = \Carbon\Carbon::parse($lastBooking->booking_date); + if (!$contact->last_booking_at || $lastBookingDate->gt($contact->last_booking_at)) { + $contact->last_booking_at = $lastBookingDate; + } + } + + // Letztes Reiseenddatum (to_date) - nur abgeschlossene Reisen + $lastTravelEndBooking = TravelUserBookingFewo::where('travel_user_id', $travelUser->id) + ->whereNotNull('invoice_number') + ->where('invoice_number', '!=', '') + ->whereRaw('invoice_number REGEXP "^[0-9]+$"') + ->whereNotNull('to_date') + ->where('to_date', '<', now()) + ->orderBy('to_date', 'DESC') + ->first(); + + if ($lastTravelEndBooking && $lastTravelEndBooking->to_date) { + $lastTravelEndDate = \Carbon\Carbon::parse($lastTravelEndBooking->to_date); + if (!$contact->last_travel_end_date || $lastTravelEndDate->gt($contact->last_travel_end_date)) { + $contact->last_travel_end_date = $lastTravelEndDate; + } + } + + // Status + if ($isNew || $contact->status === NewsletterContact::STATUS_INACTIVE) { + $contact->status = NewsletterContact::STATUS_ACTIVE; + } + + $contact->sync_hash = $syncHash; + $contact->last_synced_at = now(); + + $contact->save(); + + // Log erstellen + if ($isNew) { + $contact->logs()->create([ + 'action' => 'booking_added', + 'description' => 'Kontakt durch Ferienwohnungs-Buchung erstellt', + 'metadata' => [ + 'booking_id' => $booking->id, + 'invoice_number' => $booking->invoice_number, + ], + ]); + } + } catch (\Exception $e) { + $stats['errors']++; + $this->error("Fehler bei Buchung {$booking->id}: " . $e->getMessage()); + } + + $bar->advance(); + } + + $bar->finish(); + $this->newLine(2); + + // Statistiken ausgeben + $this->info('Synchronisation abgeschlossen!'); + $this->table( + ['Statistik', 'Anzahl'], + [ + ['Verarbeitet', $stats['processed']], + ['Neu erstellt', $stats['created']], + ['Aktualisiert', $stats['updated']], + ['Übersprungen', $stats['skipped']], + ['Fehler', $stats['errors']], + ] + ); + + return 0; + } +} diff --git a/app/Console/Commands/SyncNewsletterKulturreisen.php b/app/Console/Commands/SyncNewsletterKulturreisen.php new file mode 100644 index 0000000..a6c5fbc --- /dev/null +++ b/app/Console/Commands/SyncNewsletterKulturreisen.php @@ -0,0 +1,227 @@ +info('Starte Synchronisation von Kulturreisen-Buchungen...'); + + $force = $this->option('force'); + + // Statistiken + $stats = [ + 'processed' => 0, + 'created' => 0, + 'updated' => 0, + 'skipped' => 0, + 'errors' => 0, + ]; + + // Hole alle Buchungen mit Kunden + $query = Booking::with(['customer', 'lead.status']) + ->whereNotNull('customer_id') + ->whereHas('customer', function ($q) { + $q->whereNotNull('email') + ->where('email', '!=', ''); + }) + // Nur Buchungen, bei denen die Reise bereits beendet ist (end_date in der Vergangenheit) + ->whereNotNull('end_date') + ->where('end_date', '<', now()); + + if (!$force) { + // Nur Buchungen der letzten 30 Tage (basierend auf Rückreisedatum) wenn nicht --force + $query->where('end_date', '>=', now()->subDays(30)); + } + + $bookings = $query->get(); + + $this->info("Verarbeite {$bookings->count()} Buchungen..."); + + $bar = $this->output->createProgressBar($bookings->count()); + $bar->start(); + + foreach ($bookings as $booking) { + try { + $stats['processed']++; + + $customer = $booking->customer; + + // Validiere E-Mail + if (!$customer || !$customer->email || !filter_var($customer->email, FILTER_VALIDATE_EMAIL)) { + $stats['skipped']++; + $bar->advance(); + continue; + } + + // Filtere Alias/Proxy E-Mail-Adressen von Buchungsplattformen + $blockedDomains = [ + '@guest.booking.com', + '@messages.homeaway.com', + '@fewo.check24.de', + '@booking.com', + '@homeaway.com', + '@check24.de', + '@partner.booking.com', + ]; + + $emailLower = strtolower($customer->email); + $isBlockedEmail = false; + foreach ($blockedDomains as $domain) { + if (str_ends_with($emailLower, strtolower($domain))) { + $isBlockedEmail = true; + break; + } + } + + if ($isBlockedEmail) { + $stats['skipped']++; + $bar->advance(); + continue; + } + + // Generiere Hash für Duplikat-Erkennung + $syncHash = NewsletterContact::generateSyncHash( + $customer->email, + NewsletterContact::SOURCE_BOOKING_KULTURREISEN + ); + + // Suche oder erstelle Kontakt + $contact = NewsletterContact::withTrashed() + ->where('email', strtolower(trim($customer->email))) + ->first(); + + $isNew = false; + + if (!$contact) { + // Neuer Kontakt + $contact = new NewsletterContact(); + $isNew = true; + $stats['created']++; + } else { + // Wenn gelöscht, wiederherstellen + if ($contact->trashed()) { + $contact->restore(); + } + $stats['updated']++; + } + + // Aktualisiere Kontaktdaten + $contact->email = strtolower(trim($customer->email)); + $contact->firstname = $customer->firstname ?: $contact->firstname; + $contact->lastname = $customer->name ?: $contact->lastname; + + // Setze Gruppe Kulturreisen + $contact->group_kulturreisen = true; + + // Source nur bei neuem Kontakt setzen + if ($isNew) { + $contact->source = NewsletterContact::SOURCE_BOOKING_KULTURREISEN; + $contact->subscribed_at = $booking->booking_date ?: $booking->created_at; + } + + // Referenz zum Customer + $contact->customer_id = $customer->id; + + // Aktualisiere Buchungsstatistiken + $customerBookings = Booking::where('customer_id', $customer->id)->count(); + $contact->total_bookings_kulturreisen = $customerBookings; + + // Letztes Buchungsdatum + $lastBooking = Booking::where('customer_id', $customer->id) + ->orderBy('booking_date', 'DESC') + ->first(); + + if ($lastBooking && $lastBooking->booking_date) { + $contact->last_booking_at = $lastBooking->booking_date; + } + + // Letztes Reiseenddatum (end_date) - nur abgeschlossene Reisen + $lastTravelEndBooking = Booking::where('customer_id', $customer->id) + ->whereNotNull('end_date') + ->where('end_date', '<', now()) + ->orderBy('end_date', 'DESC') + ->first(); + + if ($lastTravelEndBooking && $lastTravelEndBooking->end_date) { + if (!$contact->last_travel_end_date || $lastTravelEndBooking->end_date->gt($contact->last_travel_end_date)) { + $contact->last_travel_end_date = $lastTravelEndBooking->end_date; + } + } + + // Status + if ($isNew || $contact->status === NewsletterContact::STATUS_INACTIVE) { + $contact->status = NewsletterContact::STATUS_ACTIVE; + } + + $contact->sync_hash = $syncHash; + $contact->last_synced_at = now(); + + $contact->save(); + + // Log erstellen + if ($isNew) { + $contact->logs()->create([ + 'action' => 'booking_added', + 'description' => 'Kontakt durch Kulturreisen-Buchung erstellt', + 'metadata' => [ + 'booking_id' => $booking->id, + // Metadaten-Key bleibt `lead_id`; Wert kommt aus booking.inquiry_id. + 'lead_id' => $booking->inquiry_id, + ], + ]); + } + } catch (\Exception $e) { + $stats['errors']++; + $this->error("Fehler bei Buchung {$booking->id}: " . $e->getMessage()); + } + + $bar->advance(); + } + + $bar->finish(); + $this->newLine(2); + + // Statistiken ausgeben + $this->info('Synchronisation abgeschlossen!'); + $this->table( + ['Statistik', 'Anzahl'], + [ + ['Verarbeitet', $stats['processed']], + ['Neu erstellt', $stats['created']], + ['Aktualisiert', $stats['updated']], + ['Übersprungen', $stats['skipped']], + ['Fehler', $stats['errors']], + ] + ); + + return 0; + } +} diff --git a/app/Console/Commands/readme.md b/app/Console/Commands/readme.md new file mode 100644 index 0000000..5b30dca --- /dev/null +++ b/app/Console/Commands/readme.md @@ -0,0 +1,18 @@ +Newsletter-Synchronisation (wie gewohnt): + +# Normale Synchronisation (letzte 30 Tage) + +php artisan newsletter:sync-ferienwohnungenphp artisan newsletter:sync-kulturreisen + +# Vollständige Synchronisation + +php artisan newsletter:sync-ferienwohnungen --forcephp artisan newsletter:sync-kulturreisen --force +#Bereinigung bestehender blockierter E-Mails: + +# Erst testen (zeigt nur an, was gelöscht würde) + +php artisan newsletter:cleanup-blocked-emails --dry-run + +# Tatsächlich löschen + +php artisan newsletter:cleanup-blocked-emails diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index a8c5158..4a5f9fc 100755 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -22,10 +22,14 @@ class Kernel extends ConsoleKernel * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ - protected function schedule(Schedule $schedule) + protected function schedule(Schedule $schedule): void { - // $schedule->command('inspire') - // ->hourly(); + // Duplikate täglich um 02:00 Uhr automatisch zusammenführen (nur HIGH-Konfidenz = exakte E-Mail-Treffer) + $schedule->command('contacts:merge-duplicates --confidence=HIGH --force') + ->dailyAt('02:00') + ->withoutOverlapping() + ->runInBackground() + ->appendOutputTo(storage_path('logs/contacts-merge.log')); } /** @@ -35,7 +39,7 @@ class Kernel extends ConsoleKernel */ protected function commands() { - $this->load(__DIR__.'/Commands'); + $this->load(__DIR__ . '/Commands'); require base_path('routes/console.php'); } diff --git a/app/Exports/NewsletterExport.php b/app/Exports/NewsletterExport.php new file mode 100644 index 0000000..a42d56a --- /dev/null +++ b/app/Exports/NewsletterExport.php @@ -0,0 +1,76 @@ +contacts = $contacts; + } + + /** + * @return \Illuminate\Support\Collection + */ + public function collection() + { + return $this->contacts; + } + + /** + * @return array + */ + public function headings(): array + { + return [ + 'ID', + 'E-Mail', + 'Vorname', + 'Nachname', + 'Gruppe Kulturreisen', + 'Gruppe Ferienwohnungen', + 'Status', + 'Herkunft', + 'Buchungen Kulturreisen', + 'Buchungen Ferienwohnungen', + 'Letzte Buchung', + 'Letzte Reise', + 'Angemeldet am', + 'Abgemeldet am', + 'Erstellt am', + ]; + } + + /** + * @param NewsletterContact $contact + * @return array + */ + public function map($contact): array + { + return [ + $contact->id, + $contact->email, + $contact->firstname, + $contact->lastname, + $contact->group_kulturreisen ? 'Ja' : 'Nein', + $contact->group_ferienwohnungen ? 'Ja' : 'Nein', + $contact->status_label, + $contact->source_label, + $contact->total_bookings_kulturreisen, + $contact->total_bookings_ferienwohnungen, + $contact->last_booking_at ? $contact->last_booking_at->format('d.m.Y') : '', + $contact->last_travel_end_date ? $contact->last_travel_end_date->format('d.m.Y') : '', + $contact->subscribed_at ? $contact->subscribed_at->format('d.m.Y H:i') : '', + $contact->unsubscribed_at ? $contact->unsubscribed_at->format('d.m.Y H:i') : '', + $contact->created_at->format('d.m.Y H:i'), + ]; + } +} diff --git a/app/Helper/BookingDocument.php b/app/Helper/BookingDocument.php new file mode 100644 index 0000000..d153d89 --- /dev/null +++ b/app/Helper/BookingDocument.php @@ -0,0 +1,313 @@ +price > 0 ? true : false; + break; + case 'confirmation': + return $booking->hasDocument('registration') > 0 ? true : false; + break; + case 'storno': + return $booking->hasDocument('confirmation') > 0 ? true : false; + break; + case 'coupon': + return $booking->hasDocument('confirmation') > 0 ? true : false; + case 'voucher': + return $booking->hasDocument('confirmation') > 0 ? true : false; + case 'voucher_agency': + return $booking->hasDocument('confirmation') > 0 ? true : false; + + } + return false; + } + + /* + functions to make the html table for the booking documents + */ + public static function getFilesCount(){ + return self::$files_count++; + } + + public static function getBookingDocumentsHTMLTable($identifier, Booking $booking, $look = 'show'){ + $ret = ""; + $files = self::getBookingDocuments($identifier, $booking->id); + if($files && $files->count() > 0){ + $ret .= self::makeHTMLTable($files, $identifier, 'v3', $look); + } + $files = self::getV2BookingDocuments($identifier, $booking); + if($files && $files->count() > 0){ + $ret .= self::makeHTMLTable($files, $identifier, 'v2', $look); + } + + + return $ret; + } + + public static function getBookingDocuments($identifier, $booking_id){ + + switch($identifier){ + case 'registration': + $files = BookingDocumentModel::where('booking_id', $booking_id)->where('identifier', 'registration')->get(); + break; + case 'confirmation': + $files = BookingDocumentModel::where('booking_id', $booking_id)->where('identifier', 'confirmation')->get(); + break; + case 'storno': + $files = null; //BookingDocumentModel::where('booking_id', $booking_id)->where('identifier', 'storno')->get(); + break; + case 'coupon': + $files = null; //BookingDocumentModel::where('booking_id', $booking_id)->where('identifier', 'coupon')->get(); + break; + case 'voucher': + $files = BookingDocumentModel::where('booking_id', $booking_id)->where('identifier', 'voucher')->get(); + break; + case 'voucher_agency': + $files = BookingDocumentModel::where('booking_id', $booking_id)->where('identifier', 'voucher_agency')->get(); + break; + default: + $files = null; + } + return $files; + } + + + public static function getV2BookingDocuments($identifier, Booking $booking){ + + switch($identifier){ + case 'registration': + $files = $booking->booking_applications; + break; + case 'confirmation': + $files = $booking->booking_confirmations; + break; + case 'storno': + $files = $booking->booking_stornos; + break; + case 'coupon': + $files = $booking->coupons; + break; + case 'voucher': + $files = $booking->booking_vouchers; + break; + case 'voucher_agency': + $files = $booking->booking_voucher_agencys; + break; + default: + $files = null; + } + return $files; + } + + private static function makeHTMLTable($files, $identifier, $version, $look){ + $ret = ""; + + foreach($files as $file){ + ; + if($version === 'v2'){ + $file_details = self::getV2FileDetails($file, $identifier, $look); + } + if($version === 'v3'){ + $file_details = self::getV3FileDetails($file, $identifier, $look); + } + if(isset($file_details)){ + $ret .= ""; + $ret .= "".self::getFilesCount().""; + $ret .= ""; + $ret .= ""; + $ret .= " ".$file_details->name; + $ret .= ""; + $ret .= ""; + $ret .= "".$file_details->cell.""; + $ret .= "".$file_details->date.""; + $ret .= ""; + if($look === 'show'){ + $ret .= ""; + $ret .= ""; + $ret .= ""; + } + if($look === 'mail'){ + + $ret .= "'; + } + return ''; + }) + ->addColumn('id', function (Contact $contact) use ($showDeleted) { + if ($showDeleted) { + return '' . $contact->id . ''; + } + return '' . $contact->id . ''; + }) + ->addColumn('raw_id', fn(Contact $contact) => $contact->id) + ->addColumn('leads_count', fn(Contact $contact) => $contact->leads_count) + ->addColumn('bookings_count', fn(Contact $contact) => $contact->bookings_count) + ->addColumn('deleted_at', fn(Contact $contact) => $contact->deleted_at?->format('d.m.Y H:i') ?? '') + ->orderColumn('id', 'customer.id $1') + ->orderColumn('deleted_at', 'customer.deleted_at $1') + ->filterColumn('id', function ($query, $keyword) { + if ($keyword !== '') { + $query->where('contacts.id', 'LIKE', '%' . $keyword . '%'); + } + }) + ->filterColumn('name', function ($query, $keyword) { + if ($keyword !== '') { + $query->where(function ($q) use ($keyword) { + $q->where('name', 'LIKE', '%' . $keyword . '%') + ->orWhere('firstname', 'LIKE', '%' . $keyword . '%'); + }); + } + }) + ->filter(function ($query) use ($request) { + $location = $request->input('filter_location'); + if ($location && $location !== '') { + $query->where(function ($q) use ($location) { + $q->where('zip', 'LIKE', '%' . $location . '%') + ->orWhere('city', 'LIKE', '%' . $location . '%'); + }); + } + + $search = $request->input('search.value'); + if ($search && $search !== '') { + $query->where(function ($q) use ($search) { + $q->where('name', 'LIKE', '%' . $search . '%') + ->orWhere('firstname', 'LIKE', '%' . $search . '%') + ->orWhere('email', 'LIKE', '%' . $search . '%') + ->orWhere('phone', 'LIKE', '%' . $search . '%') + ->orWhere('phonemobile', 'LIKE', '%' . $search . '%'); + }); + } + }, true) + ->rawColumns(['action_edit', 'action_delete', 'id']) + ->make(true); + } +} diff --git a/app/Http/Controllers/CustomerController.php b/app/Http/Controllers/CustomerController.php index 54129ef..fc149ed 100755 --- a/app/Http/Controllers/CustomerController.php +++ b/app/Http/Controllers/CustomerController.php @@ -47,10 +47,14 @@ class CustomerController extends Controller public function store($id) { $data = Request::all(); + if(!isset($data['action'])){ + abort(403, 'keine Action'); + } + //save + $customer = $this->custRepo->updateCustomer($id, $data); + \Session()->flash('alert-save', '1'); if($data['action'] === 'saveCustomer'){ - $customer = $this->custRepo->updateCustomer($id, $data); - \Session()->flash('alert-save', '1'); return redirect(route('customer_detail', [$id]).'#collapseCustomerDetail'); } return back(); @@ -64,7 +68,7 @@ class CustomerController extends Controller public function getCustomers() { - $query = Customer::with('salutation')->select('customer.*'); + $query = Customer::with('salutation')->select('contacts.*'); return \DataTables::eloquent($query) ->addColumn('action_edit', function (Customer $customer) { diff --git a/app/Http/Controllers/CustomerFewoMailController.php b/app/Http/Controllers/CustomerFewoMailController.php index 434ee5a..edb0c85 100755 --- a/app/Http/Controllers/CustomerFewoMailController.php +++ b/app/Http/Controllers/CustomerFewoMailController.php @@ -70,7 +70,7 @@ class CustomerFewoMailController extends Controller $customer_mail->save(); } - return back(); + return back()->with('collapse_shows', $data['collapse_shows'] ? $data['collapse_shows'] : []); } public function delete($id){ @@ -128,14 +128,14 @@ class CustomerFewoMailController extends Controller }else{ \Session()->flash('alert-success', "Mail gesendet!"); } - return back(); + return back()->with('collapse_shows', $data['collapse_shows'] ? $data['collapse_shows'] : []); } public function replyMail(CustomerFewoMailRepository $customerFewoMailRepository){ $data = Request::all(); $customerFewoMailRepository->replyStore($data); \Session()->flash('alert-success', "Mail gespeichert!"); - return back(); + return back()->with('collapse_shows', $data['collapse_shows'] ? $data['collapse_shows'] : []); } public function getEmailTemplates() diff --git a/app/Http/Controllers/CustomerFileController.php b/app/Http/Controllers/CustomerFileController.php index fc5172b..47a84df 100755 --- a/app/Http/Controllers/CustomerFileController.php +++ b/app/Http/Controllers/CustomerFileController.php @@ -3,24 +3,25 @@ namespace App\Http\Controllers; -use App\Models\BookingApplication; -use App\Models\BookingConfirmation; -use App\Models\BookingStorno; -use App\Models\BookingVoucher; -use App\Models\Coupon; -use App\Models\FewoLodging; -use App\Models\InsuranceCertificate; -use App\Models\TravelInsurance; -use App\Repositories\CustomerFileRepository; -use App\Services\BookingFewo; -use App\Services\CreateCouponPDF; -use App\Services\CreatePDF; -use App\Services\Util; use Carbon; -use Illuminate\Database\Eloquent\Collection; -use Illuminate\Support\Facades\URL; use Request; use Response; +use App\Models\Coupon; +use App\Services\Util; +use App\Models\FewoLodging; +use App\Libraries\CreatePDF; +use App\Models\BookingStorno; +use App\Services\BookingFewo; +use App\Models\BookingVoucher; +use App\Models\TravelInsurance; +use App\Libraries\CreateCouponPDF; +use App\Models\BookingApplication; +use App\Models\BookingConfirmation; +use Illuminate\Support\Facades\URL; +use App\Models\BookingVoucherAgency; +use App\Models\InsuranceCertificate; +use App\Repositories\CustomerFileRepository; +use Illuminate\Database\Eloquent\Collection; class CustomerFileController extends Controller { @@ -45,20 +46,21 @@ class CustomerFileController extends Controller $content_disposition = $cd ? 'attachment' : 'inline'; $file = false; $filename = ""; + switch ($model){ - case 'booking_application': + case 'registration': if($booking_application = BookingApplication::find($id)){ $filename = "Buchungsauftrag-".$booking_application->booking->getBookingNumber().".pdf"; $file = base64_decode($booking_application->binary_data); } break; - case 'booking_confirmation': + case 'confirmation': if($booking_confirmation = BookingConfirmation::find($id)){ $filename = "Reisebestaetigung-".$booking_confirmation->booking->getBookingNumber().".pdf"; $file = base64_decode($booking_confirmation->binary_data); } break; - case 'booking_storno': + case 'storno': if($booking_stornos = BookingStorno::find($id)){ $filename = "Reisestornierung-".$booking_stornos->booking->getBookingNumber().".pdf"; $file = base64_decode($booking_stornos->binary_data); @@ -67,17 +69,23 @@ class CustomerFileController extends Controller case 'coupon': if($coupon = Coupon::find($id)){ $filename = "Gutschein-".$coupon->number.".pdf"; - $pdf = new CreateCouponPDF($coupon); $pdf->create(); return $pdf->output($filename, $cd); } break; - case 'booking_voucher': - if($booking_vouchers = BookingVoucher::find($id)){ - $filename = "Voucher-".$booking_vouchers->booking->getBookingNumber().".pdf"; - $file = base64_decode($booking_vouchers->binary_data); + case 'voucher': + if($booking_voucher = BookingVoucher::find($id)){ + $filename = "Voucher-".$booking_voucher->booking->getBookingNumber().".pdf"; + $file = base64_decode($booking_voucher->binary_data); + } + break; + + case 'voucher_agency': + if($booking_voucher_agency = BookingVoucherAgency::find($id)){ + $filename = "Voucher-Agentur-".$booking_voucher_agency->booking->getBookingNumber().".pdf"; + $file = base64_decode($booking_voucher_agency->binary_data); } break; case 'insurance_certificate': diff --git a/app/Http/Controllers/CustomerMailController.php b/app/Http/Controllers/CustomerMailController.php index eac562f..8f58ca1 100755 --- a/app/Http/Controllers/CustomerMailController.php +++ b/app/Http/Controllers/CustomerMailController.php @@ -91,7 +91,7 @@ class CustomerMailController extends Controller } - return back(); + return back()->with('collapse_shows', $data['collapse_shows'] ? $data['collapse_shows'] : []); } public function delete($id){ @@ -148,14 +148,14 @@ class CustomerMailController extends Controller }else{ \Session()->flash('alert-success', "Mail gesendet!"); } - return back(); + return back()->with('collapse_shows', $data['collapse_shows'] ? $data['collapse_shows'] : []); } public function replyMail(CustomerMailRepository $customerMailRepository){ $data = Request::all(); $customerMailRepository->replyStore($data); \Session()->flash('alert-success', "Mail gespeichert!"); - return back(); + return back()->with('collapse_shows', $data['collapse_shows'] ? $data['collapse_shows'] : []); } public function getEmailTemplates() diff --git a/app/Http/Controllers/DataTableController.php b/app/Http/Controllers/DataTableController.php index ffe3aa5..04422b5 100644 --- a/app/Http/Controllers/DataTableController.php +++ b/app/Http/Controllers/DataTableController.php @@ -3,7 +3,7 @@ namespace App\Http\Controllers; use App\Models\Booking; -use App\Services\HTMLHelper; +use App\Helper\HTMLHelper; use Carbon\Carbon; use Composer\DependencyResolver\Request; use DataTables; diff --git a/app/Http/Controllers/FileController.php b/app/Http/Controllers/FileController.php index 3c2b386..79fc3eb 100755 --- a/app/Http/Controllers/FileController.php +++ b/app/Http/Controllers/FileController.php @@ -13,67 +13,84 @@ class FileController extends Controller * * @return void */ - public function __construct() - { - } + public function __construct() {} - public function show($id = null, $disk = null, $do='file') + public function show($id = null, $disk = null, $do = 'file') { $path = ""; $filename = ""; - if ($disk === 'customer'){ - $file = \App\Models\CustomerFile::findOrFail($id); - $filename = $file->original_name; - $path = $file->getPath(); - } - if ($disk === 'travel_user'){ - $file = \App\Models\CustomerFewoFile::findOrFail($id); - $filename = $file->original_name; - $path = $file->getPath(); + + switch ($disk) { + case 'customer': + $file = \App\Models\CustomerFile::findOrFail($id); + $filename = $file->original_name; + $path = $file->getPath(); + break; + case 'travel_user': + $file = \App\Models\CustomerFewoFile::findOrFail($id); + $filename = $file->original_name; + $path = $file->getPath(); + break; + case 'booking': + $file = \App\Models\BookingFile::findOrFail($id); + $filename = $file->original_name; + $path = $file->getPath(); + break; + case 'general': + $file = \App\Models\GeneralFile::findOrFail($id); + $filename = $file->original_name; + $path = $file->getPath(); + break; + case 'booking_fewo': + $file = \App\Models\TravelUserBookingFile::findOrFail($id); + $filename = $file->original_name; + $path = $file->getPath(); + break; + case 'lead': + $file = \App\Models\LeadFile::findOrFail($id); + $filename = $file->original_name; + $path = $file->getPath(); + break; + case 'cms_file': + $file = \App\Models\CMSContent::findOrFail($id); + $filename = $file->name; + $path = $file->getPath(); + break; + case 'booking_document': + $file = \App\Models\BookingDocument::findOrFail($id); + $filename = $file->name; + $path = $file->getPath(); + break; } - if ($disk === 'booking'){ - $file = \App\Models\BookingFile::findOrFail($id); - $filename = $file->original_name; - $path = $file->getPath(); - } - - if ($disk === 'general'){ - $file = \App\Models\GeneralFile::findOrFail($id); - $filename = $file->original_name; - $path = $file->getPath(); - } - - if ($disk === 'booking_fewo'){ - $file = \App\Models\TravelUserBookingFile::findOrFail($id); - $filename = $file->original_name; - $path = $file->getPath(); - } - - if ($disk === 'lead'){ - $file = \App\Models\LeadFile::findOrFail($id); - $filename = $file->original_name; - $path = $file->getPath(); - } - - - if ($disk === 'cms_file'){ - $file = \App\Models\CMSContent::findOrFail($id); - $filename = $file->name; - $path = $file->getPath(); - } if (file_exists($path)) { - if($do === "download"){ - return Response::download($path, $filename); + + // Cache-Control Header für PDFs und andere Dateien, die sich häufig ändern + $headers = [ + 'Cache-Control' => 'no-cache, no-store, must-revalidate', + 'Pragma' => 'no-cache', + 'Expires' => '0' + ]; + + switch ($do) { + case 'file': + return Response::file($path, $headers); + break; + case 'download': + return Response::download($path, $filename, $headers); + break; + case 'url': + return $path . $filename; + break; } - return Response::file($path); } } - public function showExpert($type = null, $class = null, $year = null, $file = null, $do = null) { + public function showExpert($type = null, $class = null, $year = null, $file = null, $do = null) + { /*if ($type == 'xls') { $path = storage_path("app/export/"); @@ -81,35 +98,39 @@ class FileController extends Controller }*/ $path = ""; $filename = ""; - $headers = []; + $headers = [ + 'Cache-Control' => 'no-cache, no-store, must-revalidate', + 'Pragma' => 'no-cache', + 'Expires' => '0' + ]; - if ($class === 'invoices' || $class === 'infos'){ + if ($class === 'invoices' || $class === 'infos') { $headers = [ 'Content-Type: application/pdf', 'Pragma: no-cache', 'Cache-Control: no-store,no-cache, must-revalidate, post-check=0, pre-check=0' ]; - $dir = $year."/"; + $dir = $year . "/"; $filename = $file; if ($type === 'fewo') { - if(Storage::disk('fewo_invoices')->exists( $dir.$filename )){ - $path = Storage::disk('fewo_invoices')->path($dir.$filename); + if (Storage::disk('fewo_invoices')->exists($dir . $filename)) { + $path = Storage::disk('fewo_invoices')->path($dir . $filename); } } if ($type === 'fewo') { - if(Storage::disk('fewo_infos')->exists( $dir.$filename )){ - $path = Storage::disk('fewo_infos')->path($dir.$filename); + if (Storage::disk('fewo_infos')->exists($dir . $filename)) { + $path = Storage::disk('fewo_infos')->path($dir . $filename); } } } if (file_exists($path)) { - if($do === "download"){ + if ($do === "download") { return Response::download($path, $filename, $headers); } - if($do === "file"){ + if ($do === "file") { return Response::file($path, $headers); } } } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 766704e..0ea5796 100755 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -14,15 +14,6 @@ use Request; class HomeController extends Controller { - /** - * Create a new controller instance. - * - * @return void - */ - public function __construct() - { - } - /** * Show the application dashboard. * diff --git a/app/Http/Controllers/IQ/ContentTreeController.php b/app/Http/Controllers/IQ/ContentTreeController.php index cb8b862..63f1820 100755 --- a/app/Http/Controllers/IQ/ContentTreeController.php +++ b/app/Http/Controllers/IQ/ContentTreeController.php @@ -202,7 +202,6 @@ class ContentTreeController extends Controller $data['user_id'] = \Auth::user()->id; $data['active'] = isset($data['active']) ? true : false; $data['search'] = isset($data['search']) ? true : false; - if (isset($data['action'])) { switch ($data['action']) { case 'tree-content' : diff --git a/app/Http/Controllers/IQ/ItemController.php b/app/Http/Controllers/IQ/ItemController.php deleted file mode 100644 index 9beaf2c..0000000 --- a/app/Http/Controllers/IQ/ItemController.php +++ /dev/null @@ -1,31 +0,0 @@ - [], - 'lfm_helper' => $this->helper, - 'modal' => false, - ]; - return view('iq.content.assets.index', $data); - } - - public function modal(){ - $data = [ - 'models' => [], - 'lfm_helper' => $this->helper, - 'modal' => true, - ]; - return view('iq.content.assets.body', $data); - } -} diff --git a/app/Http/Controllers/LeadController.php b/app/Http/Controllers/LeadController.php index 3c96a75..a4d99fb 100755 --- a/app/Http/Controllers/LeadController.php +++ b/app/Http/Controllers/LeadController.php @@ -2,17 +2,19 @@ namespace App\Http\Controllers; -use Carbon; -use Request; use App\Models\Lead; use App\Models\LeadFile; use App\Models\LeadMail; use App\Models\LeadNotice; -use App\Models\StatusHistory; use App\Models\LeadParticipant; -use App\Repositories\LeadRepository; +use App\Models\StatusHistory; use App\Repositories\CustomerRepository; use App\Repositories\LeadFileRepository; +use App\Repositories\LeadRepository; +use App\Services\Util; +use Carbon; +use Request; +use Session; class LeadController extends Controller { @@ -38,6 +40,7 @@ class LeadController extends Controller public function detail($id) { + if($id === "new") { $lead = new Lead(); $id = 'new'; @@ -47,6 +50,7 @@ class LeadController extends Controller $lead->getPassolutionPDF(true); $id = $lead->id; } + $data = [ 'lead' => $lead, 'id' => $id, @@ -59,19 +63,34 @@ class LeadController extends Controller public function store($id) { $data = Request::all(); + if(!isset($data['action'])){ + abort(403, 'keine Action'); + } + //save + + if($data['action'] === 'createBooking'){ + $lead = $this->leadRepo->createBooking($id, $data); + \Session()->flash('alert-save', '1'); + return redirect(route('lead_detail', [$id]).'#collapseLeadBooking'); + } - if($data['action'] === 'saveCustomer'){ + + if($data['action'] === 'saveCustomer' || $data['action'] === 'saveLead' || $data['action'] === 'saveStatus' || $data['action'] === 'update_lead_participant'){ + //@dd($data); $customer = $this->custRepo->updateCustomerFromLead($id, $data); - \Session()->flash('alert-save', '1'); + $lead = $this->leadRepo->updateLead($id, $data); + $lead = $this->leadRepo->updateLeadParticipant($id, $data); + + } + if($data['action'] === 'saveCustomer'){ return redirect(route('lead_detail', [$id]).'#collapseLeadCustomer'); } - if($data['action'] === 'saveLead'){ - $lead = $this->leadRepo->updateLead($id, $data); - \Session()->flash('alert-save', '1'); return redirect(route('lead_detail', [$id]).'#collapseLeadDetail'); } - + if($data['action'] === 'update_lead_participant'){ + return redirect(route('lead_detail', [$lead->id])."#collapseBookingParticipant"); + } if($data['action'] === 'saveStatus'){ $lead = $this->leadRepo->updateLeadStatus($id, $data); \Session()->flash('alert-save', '1'); @@ -88,11 +107,7 @@ class LeadController extends Controller \Session()->flash('alert-save', '1'); return redirect(route('lead_detail', [$lead->id])."#collapseLeadNotice"); } - if($data['action'] === 'update_lead_participant'){ - $lead = $this->leadRepo->updateLeadParticipant($id, $data); - \Session()->flash('alert-save', '1'); - return redirect(route('lead_detail', [$lead->id])."#collapseBookingParticipant"); - } + return back(); @@ -165,6 +180,11 @@ class LeadController extends Controller if($del === 'lead') { $lead = Lead::findOrFail($id); + + if($lead->bookings->count()){ + \Session()->flash('alert-error', 'Kann nicht gelöscht werden, die Anfrage hat Buchungen'); + return redirect(route('lead_detail', [$lead->id])."#collapseLeadBooking"); + } //Files $leadFiles = LeadFile::where('lead_id', $lead->id)->get(); foreach ($leadFiles as $leadFile) { @@ -212,7 +232,7 @@ class LeadController extends Controller public function getLeads() { - $query = Lead::with('customer')->with('sf_guard_user')->with('status')->select('lead.*'); + $query = Lead::with('customer')->with('sf_guard_user')->with('status')->select('inquiries.*'); return \DataTables::eloquent($query) ->addColumn('action_edit', function (Lead $lead) { @@ -227,6 +247,10 @@ class LeadController extends Controller ->addColumn('request_date', function (Lead $lead) { return Carbon::parse($lead->request_date)->format(\Util::formatDateDB()); }) + ->addColumn('travel_country', function (Lead $lead) { + return $lead->getTravelCountryDestco(); + }) + ->addColumn('status', function (Lead $lead) { return $lead->getStatusBadge(); }) @@ -262,6 +286,7 @@ class LeadController extends Controller }) ->orderColumn('id', 'id $1') ->orderColumn('customer_id', 'customer_id $1') + ->orderColumn('request_date', 'request_date $1') ->orderColumn('status', 'status_id $1') ->orderColumn('last_lead_email', function ($query, $order) { @@ -271,7 +296,7 @@ class LeadController extends Controller // $q->select('sent_at')->where('sent_at', DB::raw("(select max('sent_at') customer_mails)")); //) })->orderBy( LeadMail::select('sent_at') - ->whereColumn('lead_id', 'lead.id') + ->whereColumn('lead_id', 'inquiries.id') ->orderBy('sent_at', 'DESC') ->limit(1) , $order); @@ -287,7 +312,7 @@ class LeadController extends Controller $query->where('customer_id', 'LIKE', '%'.$keyword.'%'); } }) - ->rawColumns(['action_edit', 'customer_id', 'sf_guard_user_id', 'id', 'status', 'last_lead_email', 'lead_notice', 'action_delete']) + ->rawColumns(['action_edit', 'customer_id', 'sf_guard_user_id', 'id', 'status', 'last_lead_email', 'travel_country', 'lead_notice', 'action_delete']) ->make(true); } diff --git a/app/Http/Controllers/LeadMailController.php b/app/Http/Controllers/LeadMailController.php index a2e928e..3f21591 100644 --- a/app/Http/Controllers/LeadMailController.php +++ b/app/Http/Controllers/LeadMailController.php @@ -54,7 +54,7 @@ class LeadMailController extends Controller \Session()->flash('alert-success', __('E-Mail weitergeleitet')); } - return back(); + return back()->with('collapse_shows', $data['collapse_shows'] ? $data['collapse_shows'] : []); } public function delete($id){ @@ -110,14 +110,14 @@ class LeadMailController extends Controller }else{ \Session()->flash('alert-success', "Mail gesendet!"); } - return back(); + return back()->with('collapse_shows', $data['collapse_shows'] ? $data['collapse_shows'] : []); } public function replyMail(LeadMailRepository $LeadMailRepository){ $data = Request::all(); $LeadMailRepository->replyStore($data); \Session()->flash('alert-success', "Mail gespeichert!"); - return back(); + return back()->with('collapse_shows', $data['collapse_shows'] ? $data['collapse_shows'] : []); } diff --git a/app/Http/Controllers/NavigationTreeController.php b/app/Http/Controllers/NavigationTreeController.php new file mode 100644 index 0000000..9c9c542 --- /dev/null +++ b/app/Http/Controllers/NavigationTreeController.php @@ -0,0 +1,165 @@ +navigationService = $navigationService; + } + + /** + * Zeigt die Navigationsbaum-Übersicht + * + * @return \Illuminate\View\View + */ + public function index() + { + return view('navigation.index'); + } + + /** + * Gibt die Navigationsbaum-Daten als JSON zurück (Frontend-Struktur) + * + * @param Request $request + * @return JsonResponse + */ + public function getData(Request $request): JsonResponse + { + try { + $includeHidden = $request->get('include_hidden', true); + $tree = $this->navigationService->getFrontendNavigationTree($includeHidden); + + return response()->json([ + 'success' => true, + 'data' => $tree, + 'meta' => [ + 'total_nodes' => $this->navigationService->countNodes($tree), + 'include_hidden' => $includeHidden, + 'structure' => 'frontend' + ] + ]); + } catch (\Exception $e) { + return response()->json([ + 'success' => false, + 'error' => $e->getMessage() + ], 500); + } + } + + /** + * Sucht im Navigationsbaum + * + * @param Request $request + * @return JsonResponse + */ + public function search(Request $request): JsonResponse + { + try { + $query = $request->get('query', ''); + $flatList = $this->navigationService->getFlatNavigationList(); + + // Filtere nach Suchbegriff + $results = array_filter($flatList, function ($node) use ($query) { + return stripos($node['title'], $query) !== false + || stripos($node['slug'], $query) !== false + || stripos($node['url'], $query) !== false; + }); + + return response()->json([ + 'success' => true, + 'data' => array_values($results), + 'meta' => [ + 'query' => $query, + 'total_results' => count($results) + ] + ]); + } catch (\Exception $e) { + return response()->json([ + 'success' => false, + 'error' => $e->getMessage() + ], 500); + } + } + + /** + * Exportiert den Navigationsbaum als JSON-Datei + * + * @param Request $request + * @return \Illuminate\Http\Response + */ + public function export(Request $request) + { + try { + $includeHidden = $request->get('include_hidden', true); + $tree = $this->navigationService->getFrontendNavigationTree($includeHidden); + + $filename = 'navigation-tree-frontend-' . date('Y-m-d-His') . '.json'; + $json = json_encode($tree, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + + return response($json) + ->header('Content-Type', 'application/json') + ->header('Content-Disposition', 'attachment; filename="' . $filename . '"'); + } catch (\Exception $e) { + return back()->with('error', 'Export fehlgeschlagen: ' . $e->getMessage()); + } + } + + /** + * Löscht den Cache + * + * @return \Illuminate\Http\RedirectResponse + */ + public function clearCache() + { + try { + $this->navigationService->clearCache(); + return back()->with('success', 'Navigation-Cache erfolgreich gelöscht'); + } catch (\Exception $e) { + return back()->with('error', 'Cache-Löschung fehlgeschlagen: ' . $e->getMessage()); + } + } + + /** + * Zeigt die Statistiken + * + * @return JsonResponse + */ + public function stats(): JsonResponse + { + try { + $allTree = $this->navigationService->getNavigationTree(false); + $activeTree = $this->navigationService->getNavigationTree(true); + + $flatList = $this->navigationService->getFlatNavigationList(); + + // Zähle verschiedene Typen + $stats = [ + 'total_pages' => count($flatList), + 'total_nodes' => $this->navigationService->countNodes($allTree), + 'active_nodes' => $this->navigationService->countNodes($activeTree), + 'inactive_nodes' => $this->navigationService->countNodes($allTree) - $this->navigationService->countNodes($activeTree), + 'travel_programs' => count(array_filter($flatList, fn($n) => $n['is_travel_program'])), + 'fewo_lodgings' => count(array_filter($flatList, fn($n) => $n['is_fewo_lodging'])), + 'country_pages' => count(array_filter($flatList, fn($n) => $n['is_country_page'])), + ]; + + return response()->json([ + 'success' => true, + 'data' => $stats + ]); + } catch (\Exception $e) { + return response()->json([ + 'success' => false, + 'error' => $e->getMessage() + ], 500); + } + } +} diff --git a/app/Http/Controllers/NewsletterController.php b/app/Http/Controllers/NewsletterController.php new file mode 100644 index 0000000..f6a78fb --- /dev/null +++ b/app/Http/Controllers/NewsletterController.php @@ -0,0 +1,391 @@ +middleware(['admin', '2fa']); + } + + /** + * Liste aller Newsletter-Kontakte + */ + public function index() + { + $data = [ + 'statistics' => $this->getStatistics(), + ]; + return view('newsletter.index', $data); + } + + /** + * DataTables Daten für die Liste + */ + public function getDatatable(Request $request) + { + $query = NewsletterContact::query() + ->select([ + 'id', + 'email', + 'firstname', + 'lastname', + 'group_kulturreisen', + 'group_ferienwohnungen', + 'status', + 'source', + 'total_bookings_kulturreisen', + 'total_bookings_ferienwohnungen', + 'last_booking_at', + 'last_travel_end_date', + 'created_at', + ]); + + // Filter nach Gruppe + if ($request->has('group') && $request->group != '') { + if ($request->group == 'kulturreisen') { + $query->where('group_kulturreisen', true); + } elseif ($request->group == 'ferienwohnungen') { + $query->where('group_ferienwohnungen', true); + } + } + + // Filter nach Status + if ($request->has('status') && $request->status != '') { + $query->where('status', $request->status); + } + + // Filter nach Source + if ($request->has('source') && $request->source != '') { + $query->where('source', $request->source); + } + + // Filter nach Datum der letzten Buchung (von) + if ($request->has('travel_from') && $request->travel_from != '') { + $query->whereDate('last_travel_end_date', '>=', Carbon::parse($request->travel_from)->format('Y-m-d H:i:s')); + } + + // Filter nach Datum der letzten Buchung (bis) + if ($request->has('travel_to') && $request->travel_to != '') { + $query->whereDate('last_travel_end_date', '<=', Carbon::parse($request->travel_to)->format('Y-m-d H:i:s')); + } + + return DataTables::of($query) + ->addColumn('full_name', function ($contact) { + return $contact->full_name ?: '-'; + }) + ->addColumn('groups', function ($contact) { + $html = ''; + if ($contact->group_kulturreisen) { + $html .= 'Kulturreisen '; + } + if ($contact->group_ferienwohnungen) { + $html .= 'Ferienwohnungen'; + } + return $html ?: '-'; + }) + ->addColumn('status_badge', function ($contact) { + return '' . $contact->status_label . ''; + }) + ->addColumn('total_bookings', function ($contact) { + $html = ''; + if ($contact->total_bookings_kulturreisen > 0) { + $html .= 'K: ' . $contact->total_bookings_kulturreisen . ' '; + } + if ($contact->total_bookings_ferienwohnungen > 0) { + $html .= 'F: ' . $contact->total_bookings_ferienwohnungen . ''; + } + return $html ?: '0'; + }) + ->addColumn('last_booking', function ($contact) { + return $contact->last_booking_at ? $contact->last_booking_at->format('d.m.Y') : '-'; + }) + ->addColumn('last_travel', function ($contact) { + return $contact->last_travel_end_date ? $contact->last_travel_end_date->format('d.m.Y') : '-'; + }) + ->addColumn('source_label', function ($contact) { + return $contact->source_label; + }) + ->addColumn('created', function ($contact) { + return $contact->created_at->format('d.m.Y'); + }) + ->addColumn('actions', function ($contact) { + $html = '
'; + $html .= ''; + $html .= ''; + $html .= '
'; + return $html; + }) + ->rawColumns(['groups', 'status_badge', 'total_bookings', 'actions']) + ->make(true); + } + + /** + * Detailansicht eines Kontakts + */ + public function detail($id) + { + $contact = NewsletterContact::with(['customer', 'travel_user', 'logs.user']) + ->findOrFail($id); + + $data = [ + 'contact' => $contact, + ]; + + return view('newsletter.detail', $data); + } + + /** + * Formular zum Bearbeiten eines Kontakts + */ + public function edit($id) + { + if ($id === 'new') { + $contact = new NewsletterContact(); + $contact->status = NewsletterContact::STATUS_ACTIVE; + $contact->source = NewsletterContact::SOURCE_MANUAL; + } else { + $contact = NewsletterContact::findOrFail($id); + } + + $data = [ + 'contact' => $contact, + 'id' => $id, + ]; + + return view('newsletter.edit', $data); + } + + /** + * Speichern eines Kontakts + */ + public function store($id, Request $request) + { + $rules = [ + 'email' => 'required|email', + 'status' => 'required|in:' . implode(',', [ + NewsletterContact::STATUS_ACTIVE, + NewsletterContact::STATUS_INACTIVE, + NewsletterContact::STATUS_UNSUBSCRIBED, + NewsletterContact::STATUS_BOUNCED, + ]), + ]; + + $validator = Validator::make($request->all(), $rules); + + if ($validator->fails()) { + return back() + ->withErrors($validator) + ->withInput(); + } + + if ($id === 'new') { + $contact = new NewsletterContact(); + $isNew = true; + } else { + $contact = NewsletterContact::findOrFail($id); + $isNew = false; + } + + // Speichere alte Werte für Log + $oldStatus = $contact->status; + $oldGroups = [ + 'kulturreisen' => $contact->group_kulturreisen, + 'ferienwohnungen' => $contact->group_ferienwohnungen, + ]; + + $contact->email = strtolower(trim($request->email)); + $contact->firstname = $request->firstname; + $contact->lastname = $request->lastname; + $contact->status = $request->status; + $contact->source = $request->source ?? NewsletterContact::SOURCE_MANUAL; + $contact->group_kulturreisen = $request->has('group_kulturreisen'); + $contact->group_ferienwohnungen = $request->has('group_ferienwohnungen'); + $contact->notes = $request->notes; + + if ($isNew) { + $contact->subscribed_at = now(); + } + + $contact->save(); + + // Log erstellen + if ($isNew) { + $contact->logs()->create([ + 'action' => 'subscribed', + 'description' => 'Kontakt manuell erstellt', + 'user_id' => auth()->id(), + ]); + } else { + // Status geändert? + if ($oldStatus !== $contact->status) { + $contact->logs()->create([ + 'action' => 'status_changed', + 'description' => 'Status geändert von ' . NewsletterContact::$statusLabels[$oldStatus] . ' zu ' . $contact->status_label, + 'user_id' => auth()->id(), + ]); + } + + // Gruppen geändert? + if ( + $oldGroups['kulturreisen'] !== $contact->group_kulturreisen || + $oldGroups['ferienwohnungen'] !== $contact->group_ferienwohnungen + ) { + $contact->logs()->create([ + 'action' => 'group_changed', + 'description' => 'Gruppenzugehörigkeit geändert', + 'user_id' => auth()->id(), + ]); + } + } + + \Session()->flash('alert-success', $isNew ? 'Kontakt erstellt' : 'Kontakt aktualisiert'); + + return redirect()->route('newsletter.detail', $contact->id); + } + + /** + * Kontakt löschen (soft delete) + */ + public function delete($id) + { + $contact = NewsletterContact::findOrFail($id); + + $contact->logs()->create([ + 'action' => 'unsubscribed', + 'description' => 'Kontakt gelöscht', + 'user_id' => auth()->id(), + ]); + + $contact->delete(); + + \Session()->flash('alert-success', 'Kontakt gelöscht'); + + return redirect()->route('newsletter.index'); + } + + /** + * Kontakt abmelden + */ + public function unsubscribe($id, Request $request) + { + $contact = NewsletterContact::findOrFail($id); + $contact->unsubscribe($request->reason); + + \Session()->flash('alert-success', 'Kontakt abgemeldet'); + + return back(); + } + + /** + * Kontakt wieder aktivieren + */ + public function resubscribe($id) + { + $contact = NewsletterContact::findOrFail($id); + $contact->resubscribe(); + + \Session()->flash('alert-success', 'Kontakt wieder aktiviert'); + + return back(); + } + + /** + * Synchronisation starten + */ + public function sync(Request $request) + { + $type = $request->get('type', 'all'); + $force = $request->has('force'); + + $output = []; + + if ($type === 'all' || $type === 'kulturreisen') { + Artisan::call('newsletter:sync-kulturreisen', $force ? ['--force' => true] : []); + $output['kulturreisen'] = Artisan::output(); + } + + if ($type === 'all' || $type === 'ferienwohnungen') { + Artisan::call('newsletter:sync-ferienwohnungen', $force ? ['--force' => true] : []); + $output['ferienwohnungen'] = Artisan::output(); + } + + \Session()->flash('alert-success', 'Synchronisation abgeschlossen'); + + return back()->with('sync_output', $output); + } + + /** + * Export von Kontakten + */ + public function export(Request $request) + { + $query = NewsletterContact::query(); + + // Filter nach Gruppe + if ($request->has('group') && $request->group != '') { + if ($request->group == 'kulturreisen') { + $query->where('group_kulturreisen', true); + } elseif ($request->group == 'ferienwohnungen') { + $query->where('group_ferienwohnungen', true); + } + } + + // Filter nach Status + if ($request->has('status') && $request->status != '') { + $query->where('status', $request->status); + } + + // Filter nach Source + if ($request->has('source') && $request->source != '') { + $query->where('source', $request->source); + } + + // Filter nach Datum der letzten Reise (von) + if ($request->has('travel_from') && $request->travel_from != '') { + $query->whereDate('last_travel_end_date', '>=', Carbon::parse($request->travel_from)->format('Y-m-d H:i:s')); + } + + // Filter nach Datum der letzten Reise (bis) + if ($request->has('travel_to') && $request->travel_to != '') { + $query->whereDate('last_travel_end_date', '<=', Carbon::parse($request->travel_to)->format('Y-m-d H:i:s')); + } + + $contacts = $query->get(); + + // Dateiname mit Datum und Filter-Infos + $group = $request->get('group', 'all'); + $status = $request->get('status', 'all'); + $filename = 'newsletter_' . $group . '_' . $status . '_' . date('Y-m-d') . '.csv'; + + return Excel::download(new NewsletterExport($contacts), $filename); + } + + /** + * Statistiken für Dashboard + */ + private function getStatistics() + { + return [ + 'total' => NewsletterContact::count(), + 'active' => NewsletterContact::where('status', NewsletterContact::STATUS_ACTIVE)->count(), + 'kulturreisen' => NewsletterContact::where('group_kulturreisen', true)->count(), + 'ferienwohnungen' => NewsletterContact::where('group_ferienwohnungen', true)->count(), + 'with_bookings' => NewsletterContact::withBookings()->count(), + 'multiple_bookers' => NewsletterContact::multipleBookers()->count(), + 'unsubscribed' => NewsletterContact::where('status', NewsletterContact::STATUS_UNSUBSCRIBED)->count(), + 'last_sync' => NewsletterContact::max('last_synced_at'), + ]; + } +} diff --git a/app/Http/Controllers/RequestController.php b/app/Http/Controllers/RequestController.php index 4986700..a02f566 100755 --- a/app/Http/Controllers/RequestController.php +++ b/app/Http/Controllers/RequestController.php @@ -2,19 +2,19 @@ namespace App\Http\Controllers; -use Request; -use DataTables; -use Carbon\Carbon; -use App\Models\Status; use App\Models\Airline; +use App\Models\Airport; use App\Models\Booking; -use App\Models\SfGuardUser; use App\Models\CustomerMail; +use App\Models\SfGuardUser; +use App\Models\Status; +use App\Models\Sym\TravelCountry; use App\Models\TravelAgenda; use App\Models\TravelCompany; -use App\Models\Sym\TravelCountry; -use App\Models\TravelCountryService; use App\Repositories\CustomerMailRepository; +use Carbon\Carbon; +use DataTables; +use Request; class RequestController extends Controller { @@ -22,15 +22,27 @@ class RequestController extends Controller public function __construct() { - $this->middleware(['admin', '2fa']); + $this->middleware(['admin', '2fa']); } public function index($step = false) { + // Get distinct travel_country_ids from bookings that are not null + $usedCountryIds = Booking::whereNotNull('travel_country_id') + ->distinct() + ->pluck('travel_country_id'); + + // Fetch the corresponding TravelCountry models and create an associative array [id => name] + $travel_countries = TravelCountry::whereIn('id', $usedCountryIds) + ->pluck('name', 'id') // Use country id as key + ->toArray(); + + //dd($travel_countries); // Keep this for debugging if needed - $travel_countries = Booking::join('travel_country', 'travel_country_id', '=', 'travel_country.id')->get()->pluck('name', 'travel_country_id')->unique()->toArray(); $filter_lead_status = Status::get()->pluck('name', 'id')->toArray(); $filter_travel_company = TravelCompany::get()->pluck('name', 'id')->toArray(); + $filter_airports = Airport::get()->pluck('name', 'id')->toArray(); + $filter_paying_out = Booking::$paying_out_types; $filter_paying_out_status = Booking::$paying_out_status_types; $filter_refund = Booking::$refund_types; @@ -56,8 +68,10 @@ class RequestController extends Controller 'filter_refund' => $filter_refund, 'filter_xx_tkt' => $filter_xx_tkt, 'filter_airlines' => $filter_airlines, - 'filter_sf_guard_user' => $filter_sf_guard_user + 'filter_sf_guard_user' => $filter_sf_guard_user, + 'filter_airports' => $filter_airports, ]; + return view('request.index', $data); } @@ -75,7 +89,7 @@ class RequestController extends Controller wirte old where has state to new has travel_documents $bs = Booking::whereHas('arrangements', function($q){ $q->where('state', '!=', NULL); - })->where('lead_id', '!=', NULL)->where('new_drafts', 0)->get(); + })->where('inquiry_id', '!=', NULL)->where('new_drafts', 0)->get(); foreach ($bs as $b){ $b->travel_documents = true; @@ -84,57 +98,62 @@ class RequestController extends Controller } die(); */ - private function getSearchRequests(){ + private function getSearchRequests() + { - $query = Booking::with('lead')->with('customer')->with('customer_mails')->with('customer_mails')->select('booking.*')->where('lead_id', '!=', NULL); + $query = Booking::with('lead')->with('customer')->with('customer_mails')->with('customer_mails')->select('booking.*')->where('inquiry_id', '!=', NULL); - if(Request::get('full_firstname_search') != ""){ + if (Request::get('full_firstname_search') != "") { $query->whereHas('customer', function ($q) { - $q->where('firstname', 'LIKE', '%'.Request::get('full_firstname_search').'%'); - }); } - if(Request::get('full_lastname_search') != ""){ - $query->whereHas('customer', function ($q) { - $q->where('name', 'LIKE', '%'.Request::get('full_lastname_search').'%'); + $q->where('firstname', 'LIKE', '%' . Request::get('full_firstname_search') . '%'); }); } - if(Request::get('travel_option_country_id') != ""){ - $country_ids = TravelCountry::where('contact_lands', 'LIKE', '%"'.Request::get('travel_option_country_id').'"%')->get()->pluck('id'); + if (Request::get('full_lastname_search') != "") { + $query->whereHas('customer', function ($q) { + $q->where('name', 'LIKE', '%' . Request::get('full_lastname_search') . '%'); + }); + } + if (Request::get('travel_option_country_id') != "") { + $country_ids = TravelCountry::where('contact_lands', 'LIKE', '%"' . Request::get('travel_option_country_id') . '"%')->get()->pluck('id'); $country_ids[] = Request::get('travel_option_country_id'); $query->whereIn('travel_country_id', $country_ids); } - if(Request::get('travel_option_agenda_id') != ""){ + if (Request::get('travel_option_agenda_id') != "") { $query->where('travelagenda_id', '=', Request::get('travel_option_agenda_id')); } - if(Request::get('travel_option_company_id') != ""){ + if (Request::get('travel_option_company_id') != "") { $query->where('travel_company_id', '=', Request::get('travel_option_company_id')); } - if(Request::get('travel_option_lead_status_id') != ""){ + if (Request::get('travel_option_lead_status_id') != "") { $query->whereHas('lead', function ($q) { $q->whereIn('status_id', Request::get('travel_option_lead_status_id')); }); } - if(Request::get('travel_option_paying_out') != ""){ + if (Request::get('travel_option_paying_out') != "") { $query->where('paying_out', '=', Request::get('travel_option_paying_out')); } - if(Request::get('travel_option_paying_out_status') != ""){ + if (Request::get('travel_option_paying_out_status') != "") { $query->where('paying_out_status', '=', Request::get('travel_option_paying_out_status')); } - if(Request::get('travel_option_refund') != ""){ + if (Request::get('travel_option_refund') != "") { $query->where('refund', '=', Request::get('travel_option_refund')); } - if(Request::get('travel_option_xx_tkt') != ""){ + if (Request::get('travel_option_xx_tkt') != "") { $query->where('xx_tkt', '=', Request::get('travel_option_xx_tkt')); } - if(Request::get('travel_option_airline_id') != ""){ - $query->where('airline_ids', 'LIKE', '%'.Request::get('travel_option_airline_id').'%'); + if (Request::get('travel_option_airline_id') != "") { + $query->where('airline_ids', 'LIKE', '%' . Request::get('travel_option_airline_id') . '%'); + } + if (Request::get('travel_option_airport_id') != "") { + $query->where('airport_id', '=', Request::get('travel_option_airport_id')); } // $query->where('end_date', '<=', $now); - if(Request::get('travel_option_search')){ + if (Request::get('travel_option_search')) { $now = Carbon::now(); - switch (Request::get('travel_option_search')){ + switch (Request::get('travel_option_search')) { case 'before_2': $query->whereBetween('start_date', [Carbon::now()->modify('-2 month'), $now]); @@ -156,242 +175,245 @@ class RequestController extends Controller break; } - }else{ + } else { $start = null; $end = null; - if(Request::get('arrival_start_date') != ""){ + if (Request::get('arrival_start_date') != "") { $arrStart = explode(".", Request::get('arrival_start_date')); - if(count($arrStart) == 3){ + if (count($arrStart) == 3) { $start = Carbon::create($arrStart[2], $arrStart[1], $arrStart[0], 0, 0, 0); } } - if(Request::get('arrival_end_date') != ""){ + if (Request::get('arrival_end_date') != "") { $arrEnd = explode(".", Request::get('arrival_end_date')); - if(count($arrEnd) == 3){ + if (count($arrEnd) == 3) { $end = Carbon::create($arrEnd[2], $arrEnd[1], $arrEnd[0], 23, 59, 59); } } - if($start && $end){ + if ($start && $end) { $query->whereBetween('start_date', [$start, $end]); } - if($start && !$end){ + if ($start && !$end) { $query->where('start_date', '>=', $start); } - if(!$start && $end){ + if (!$start && $end) { $query->where('start_date', '<=', $end); } $start = null; $end = null; - if(Request::get('departure_start_date') != ""){ + if (Request::get('departure_start_date') != "") { $arrStart = explode(".", Request::get('departure_start_date')); - if(count($arrStart) == 3){ + if (count($arrStart) == 3) { $start = Carbon::create($arrStart[2], $arrStart[1], $arrStart[0], 0, 0, 0); } } - if(Request::get('departure_end_date') != ""){ + if (Request::get('departure_end_date') != "") { $arrEnd = explode(".", Request::get('departure_end_date')); - if(count($arrEnd) == 3){ + if (count($arrEnd) == 3) { $end = Carbon::create($arrEnd[2], $arrEnd[1], $arrEnd[0], 23, 59, 59); } } - if($start && $end){ + if ($start && $end) { $query->whereBetween('end_date', [$start, $end]); } - if($start && !$end){ + if ($start && !$end) { $query->where('end_date', '>=', $start); } - if(!$start && $end){ + if (!$start && $end) { $query->where('end_date', '<=', $end); } } - if(Request::get('sort_travel_country_id') != ""){ + if (Request::get('sort_travel_country_id') != "") { $query->where('travel_country_id', '=', Request::get('sort_travel_country_id')); } - if(Request::get('sort_travelagenda_id') != ""){ + if (Request::get('sort_travelagenda_id') != "") { $query->where('travelagenda_id', '=', Request::get('sort_travelagenda_id')); } - if(Request::get('sort_sf_guard_user_id') != ""){ + if (Request::get('sort_sf_guard_user_id') != "") { $query->where('sf_guard_user_id', '=', Request::get('sort_sf_guard_user_id')); } - if(Request::get('sort_travel_documents') != ""){ + if (Request::get('sort_travel_documents') != "") { $query->where('travel_documents', '=', Request::get('sort_travel_documents')); } - if(Request::get('full_lead_id_search') != ""){ - $query->where('lead_id', 'LIKE', '%'.Request::get('full_lead_id_search'). '%'); + if (Request::get('full_lead_id_search') != "") { + $query->where('inquiry_id', 'LIKE', '%' . Request::get('full_lead_id_search') . '%'); } - if(Request::get('full_booking_id_search') != ""){ - $query->where('id', 'LIKE', '%'.Request::get('full_booking_id_search').'%'); + if (Request::get('full_booking_id_search') != "") { + $query->where('id', 'LIKE', '%' . Request::get('full_booking_id_search') . '%'); } return $query; } - public function getAjaxRequests(){ + public function getAjaxRequests() + { $data = Request::all(); - - if(Request::ajax()) { - if(isset($data['action']) && $data['action'] === "get_popover_booking_services") { + if (Request::ajax()) { + if (isset($data['action']) && $data['action'] === "get_popover_booking_services") { $booking = Booking::findOrFail($data['booking_id']); $ret = ""; $count = false; - foreach($booking->travel_country->getContactLandsModels() as $TravelCountry){ - if($TravelCountry->stern_travel_country){ - $hl = $TravelCountry->stern_travel_country->name."
"; + foreach ($booking->travel_country->getContactLandsModels() as $TravelCountry) { + if ($TravelCountry->stern_travel_country) { + $hl = $TravelCountry->stern_travel_country->name . "
"; $tmp = ""; - foreach($TravelCountry->stern_travel_country->travel_country_services as $travel_country_service){ + foreach ($TravelCountry->stern_travel_country->travel_country_services as $travel_country_service) { $tmp .= \App\Models\BookingCountryService::getStatus($travel_country_service->id, $booking->id) ? - ' '.$travel_country_service->name.'' : - ' '.$travel_country_service->name.''; + ' ' . $travel_country_service->name . '' : + ' ' . $travel_country_service->name . ''; $tmp .= '
'; } - if($tmp !== ""){ - $ret .= $hl.$tmp; + if ($tmp !== "") { + $ret .= $hl . $tmp; } } } - if($booking->service_provider_entries->count()){ - foreach($booking->service_provider_entries as $service_provider_entry){ - if($service_provider_entry->service_provider->service_provider_services->count()){ - $hl = $service_provider_entry->service_provider->name."
"; + if ($booking->service_provider_entries->count()) { + foreach ($booking->service_provider_entries as $service_provider_entry) { + if ($service_provider_entry->service_provider->service_provider_services->count()) { + $hl = $service_provider_entry->service_provider->name . "
"; $tmp = ""; - foreach($service_provider_entry->service_provider->service_provider_services as $service_provider_service){ + foreach ($service_provider_entry->service_provider->service_provider_services as $service_provider_service) { $tmp .= \App\Models\BookingProviderService::getStatus($service_provider_service->id, $booking->id) ? - ' '.$service_provider_service->name.'' : - ' '.$service_provider_service->name.''; + ' ' . $service_provider_service->name . '' : + ' ' . $service_provider_service->name . ''; $tmp .= '
'; } - if($tmp !== ""){ - $ret .= $hl.$tmp; + if ($tmp !== "") { + $ret .= $hl . $tmp; } } } } - if($booking->booking_service_items->count()){ - foreach($booking->booking_service_items as $booking_service_item){ - if($booking_service_item->travel_company->travel_company_services->count()){ - $hl = $booking_service_item->travel_company->name."
"; + if ($booking->booking_service_items->count()) { + foreach ($booking->booking_service_items as $booking_service_item) { + if ($booking_service_item->travel_company->travel_company_services->count()) { + $hl = $booking_service_item->travel_company->name . "
"; $tmp = ""; - foreach($booking_service_item->travel_company->travel_company_services as $travel_company_service){ + foreach ($booking_service_item->travel_company->travel_company_services as $travel_company_service) { $tmp .= \App\Models\BookingCompanyService::getStatus($travel_company_service->id, $booking->id) ? - ' '.$travel_company_service->name.'' : - ' '.$travel_company_service->name.''; + ' ' . $travel_company_service->name . '' : + ' ' . $travel_company_service->name . ''; $tmp .= '
'; } - if($tmp !== ""){ - $ret .= $hl.$tmp; + if ($tmp !== "") { + $ret .= $hl . $tmp; } } } } - return $ret === "" ? 'keine Leistungen definiert' : $ret; + return $ret === "" ? 'keine Leistungen definiert' : $ret; } - - if(isset($data['action']) && $data['action'] === "get_popover_booking_notice"){ + + if (isset($data['action']) && $data['action'] === "get_popover_booking_notice") { $booking = Booking::findOrFail($data['booking_id']); $ret = ""; - if($booking->booking_notices->count()){ + if ($booking->booking_notices->count()) { $booking_notice = $booking->booking_notices->first(); return $booking_notice->getSmallerMessage(500); } - return $ret === "" ? 'keine E-Notiz' : $ret; + return $ret === "" ? 'keine E-Notiz' : $ret; } - if(isset($data['action']) && $data['action'] === "get_popover_booking_last_email"){ + if (isset($data['action']) && $data['action'] === "get_popover_booking_last_email") { $booking = Booking::findOrFail($data['booking_id']); $ret = ""; - if($booking->customer_mails->count()){ + if ($booking->customer_mails->count()) { $customer_mail = $booking->customer_mails_sent_at->last(); - return "
".$customer_mail->subject."
".$customer_mail->message; - } - return $ret === "" ? 'keine E-Mail' : $ret; + return "
" . $customer_mail->subject . "
" . $customer_mail->message; + } + return $ret === "" ? 'keine E-Mail' : $ret; } - if(isset($data['action']) && $data['action'] === "get_popover_booking_participants_pass"){ + if (isset($data['action']) && $data['action'] === "get_popover_booking_participants_pass") { $booking = Booking::findOrFail($data['booking_id']); $ret = ""; - if($booking->participant_firstname){ - $ret .= $booking->participant_pass ? - ' '.$booking->participant_firstname." ".$booking->participant_lastname.'' : - ' '.$booking->participant_firstname." ".$booking->participant_lastname.''; - $ret .= "
"; + if ($booking->participant_firstname) { + $ret .= $booking->participant_pass ? + ' ' . $booking->participant_firstname . " " . $booking->participant_lastname . '' : + ' ' . $booking->participant_firstname . " " . $booking->participant_lastname . ''; + $ret .= "
"; } - if($booking->participants->count()){ - foreach($booking->participants as $participant){ + if ($booking->participants->count()) { + foreach ($booking->participants as $participant) { $ret .= $participant->participant_pass ? - ' '.$participant->participant_firstname." ".$participant->participant_lastname.'' : - ' '.$participant->participant_firstname." ".$participant->participant_lastname.''; + ' ' . $participant->participant_firstname . " " . $participant->participant_lastname . '' : + ' ' . $participant->participant_firstname . " " . $participant->participant_lastname . ''; $ret .= "
"; } } return $ret === "" ? 'keine Teilnehmer' : $ret; } - + $query = $this->getSearchRequests(); $ret = $query->get()->pluck('travelagenda_id', 'id')->unique()->toArray(); return TravelAgenda::whereIn('id', $ret)->get()->pluck('name', 'id'); } } - public function loadModal(){ + public function loadModal() + { $data = Request::all(); $ret = ""; - if(Request::ajax()){ - if($data['action'] === 'new-customer-mail'){ + if (Request::ajax()) { + if ($data['action'] === 'new-customer-mail') { $data['customers'] = []; $query = $this->getSearchRequests(); $bookings = $query->orderBy('id', 'DESC')->limit(50)->get(); - foreach ($bookings as $booking){ + foreach ($bookings as $booking) { $tmp = []; $tmp['email'] = $booking->customer ? $booking->customer->email : ""; - $tmp['name'] = $booking->customer ? $booking->customer->firstname." ".$booking->customer->name." | " : "- | "; - $tmp['name'] .= $booking->travel_country_id ? $booking->travel_country->name." | " : "- | "; - $tmp['name'] .= $booking->travelagenda_id ? $booking->travel_agenda->name."" : "-"; + $tmp['name'] = $booking->customer ? $booking->customer->firstname . " " . $booking->customer->name . " | " : "- | "; + $tmp['name'] .= $booking->travel_country_id ? $booking->travel_country->name . " | " : "- | "; + $tmp['name'] .= $booking->travelagenda_id ? $booking->travel_agenda->name . "" : "-"; $data['customers'][$booking->id] = $tmp; } $ret = CustomerMailRepository::loadModal($data); } - if($data['action'] === 'show-customer-mail'){ + if ($data['action'] === 'show-customer-mail') { $booking = Booking::findOrFail($data['booking_id']); $ret = ""; - if($booking->customer_mails->count()){ + if ($booking->customer_mails->count()) { $ret = CustomerMailRepository::loadModal($data); - } + } } } - return response()->json(['response' => $data, 'html'=>$ret]); + return response()->json(['response' => $data, 'html' => $ret]); } public function getRequests() { $query = $this->getSearchRequests(); - return DataTables::eloquent($query) - ->addColumn('action_booking_edit', function (Booking $booking) { - return ''; - }) + ->addColumn('action_booking_edit', function (Booking $booking) { + return ''; + }) ->addColumn('id', function (Booking $booking) { - return ''.$booking->id.''; + return '' . $booking->id . ''; }) ->addColumn('action_lead_edit', function (Booking $booking) { - return ''; + return ''; }) ->addColumn('lead_id', function (Booking $booking) { - return ''.$booking->lead_id.''; + return '' . $booking->inquiry_id . ''; }) ->addColumn('travel_country_id', function (Booking $booking) { - return ''.($booking->travel_country_id ? $booking->travel_country->name : "-").''; + return '' . ($booking->travel_country_id ? $booking->travel_country->name : "-") . ''; }) ->addColumn('travelagenda_id', function (Booking $booking) { - return ''.($booking->travelagenda_id ? $booking->travel_agenda->name : "-").''; + return '' . ($booking->travelagenda_id ? $booking->travel_agenda->name : "-") . ''; }) ->addColumn('travel_company_id', function (Booking $booking) { - return ''.($booking->travel_company ? $booking->travel_company->name : "-").''; + return '' . ($booking->travel_company ? $booking->travel_company->name : "-") . ''; + }) + ->addColumn('airport_id', function (Booking $booking) { + return '' . ($booking->airport ? $booking->airport->name : "-") . ''; }) ->addColumn('comfort', function (Booking $booking) { return $booking->comfort ? ' ' : ''; @@ -406,92 +428,94 @@ class RequestController extends Controller return $booking->travel_documents ? '' : ''; }) ->addColumn('booking_services', function (Booking $booking) { - return $booking->hasBookingServicesUnchecked() ? '' : - ''; + return $booking->hasBookingServicesUnchecked() ? '' : + ''; }) ->addColumn('booking_notice', function (Booking $booking) { - return $booking->booking_notices->count() ? '' : + return $booking->booking_notices->count() ? '' : ''; }) ->addColumn('sf_guard_user_id', function (Booking $booking) { - return ''.($booking->sf_guard_user_id? $booking->sf_guard_user->first_name." ".$booking->sf_guard_user->last_name : "-").''; + return '' . ($booking->sf_guard_user_id ? $booking->sf_guard_user->first_name . " " . $booking->sf_guard_user->last_name : "-") . ''; }) ->addColumn('lead.status_id', function (Booking $booking) { - if($booking->lead){ + if ($booking->lead) { return $booking->lead->getStatusBadge($booking); } return '-'; }) ->addColumn('last_customer_email', function (Booking $booking) { - if($booking->customer_mails->count()){ - $customer_mail = $booking->customer_mails_sent_at->last(); - $badge = $customer_mail->is_answer ? 'badge-default' : 'badge-secondary'; - $badge = !$customer_mail->send ? $badge : 'badge-success'; - return 'customer_mails->count()) { + $customer_mail = $booking->customer_mails_sent_at->last(); + $badge = $customer_mail->is_answer ? 'badge-default' : 'badge-secondary'; + $badge = !$customer_mail->send ? $badge : 'badge-success'; + return ' - ' - .($customer_mail->send ? '' : '').' ' - .$customer_mail->sent_at.' + data-route="' . route('requests_modal_load') . '"> + ' + . ($customer_mail->send ? '' : '') . ' ' + . $customer_mail->sent_at . ' '; } return '-'; - }) ->addColumn('booking_participants_pass', function (Booking $booking) { - return $booking->hasBookingParticipantsPass() ? '' : - ''; + return $booking->hasBookingParticipantsPass() ? '' : + ''; }) - + ->addColumn('paying_out', function (Booking $booking) { $icon = ""; $badge = $booking->getPayingOutColor(); - if($booking->paying_out_status == 1){ //offen + if ($booking->paying_out_status == 1) { //offen $icon = ' '; } - if($booking->paying_out_status == 2){ //erledigt + if ($booking->paying_out_status == 2) { //erledigt $badge = 'success'; $icon = ' '; } - return ''.$icon.$booking->getPayingOutType().''; + return '' . $icon . $booking->getPayingOutType() . ''; }) ->addColumn('paying_out_status', function (Booking $booking) { - return ''.$booking->getPayingOutStatusType().''; + return '' . $booking->getPayingOutStatusType() . ''; }) ->addColumn('airline_ids', function (Booking $booking) { - return $booking->airline_ids ? ''. $booking->getAirlinesAsNames().'' : '-'; + return $booking->airline_ids ? '' . $booking->getAirlinesAsNames() . '' : '-'; }) ->addColumn('refund', function (Booking $booking) { - return ''.$booking->getRefundTypeList().''; + return '' . $booking->getRefundTypeList() . ''; }) ->addColumn('hold', function (Booking $booking) { return $booking->hold ? ' ' : ''; }) ->addColumn('xx_tkt', function (Booking $booking) { - return ''.$booking->getXxTktTypeList().''; + return '' . $booking->getXxTktTypeList() . ''; }) ->orderColumn('last_customer_email', function ($query, $order) { - $query->whereHas('customer_mails', - function ($q) use ($order) { - // $q->select('sent_at')->where('sent_at', DB::raw("(select max('sent_at') customer_mails)")); //) - })->orderBy( + $query->whereHas( + 'customer_mails', + function ($q) use ($order) { + // $q->select('sent_at')->where('sent_at', DB::raw("(select max('sent_at') customer_mails)")); //) + } + )->orderBy( CustomerMail::select('sent_at') ->whereColumn('booking_id', 'booking.id') ->orderBy('sent_at', 'DESC') - ->limit(1) - , $order); + ->limit(1), + $order + ); }) - /* + /* ->filterColumn('travelagenda_id', function($query, $keyword) { if($keyword != ""){ $query->whereRaw("travelagenda_id = ?", $keyword); @@ -499,7 +523,7 @@ class RequestController extends Controller } }) */ - ->orderColumn('lead_id', 'lead_id $1') + ->orderColumn('lead_id', 'inquiry_id $1') ->orderColumn('id', 'id $1') ->orderColumn('travel_country_id', 'travel_country_id $1') ->orderColumn('travelagenda_id', 'travelagenda_id $1') @@ -515,9 +539,7 @@ class RequestController extends Controller ->orderColumn('xx_tkt', 'xx_tkt_date $1') ->orderColumn('comfort', 'comfort $1') //->orderColumn('travel_documents', 'travel_documents $1') - ->rawColumns(['action_lead_edit', 'comfort', 'lead_id', 'booking_participants_pass', 'action_booking_edit', 'travel_country_id', 'travelagenda_id', 'travel_company_id', 'sf_guard_user_id', 'airline_ids', 'lead.status_id', 'last_customer_email', 'id', 'travel_documents', 'booking_services', 'booking_notice', 'paying_out', 'paying_out_status', 'airline_id', 'refund', 'hold', 'xx_tkt']) + ->rawColumns(['action_lead_edit', 'comfort', 'lead_id', 'booking_participants_pass', 'action_booking_edit', 'travel_country_id', 'travelagenda_id', 'travel_company_id', 'sf_guard_user_id', 'airline_ids', 'lead.status_id', 'last_customer_email', 'id', 'travel_documents', 'booking_services', 'booking_notice', 'paying_out', 'paying_out_status', 'airline_id', 'airport_id', 'refund', 'hold', 'xx_tkt']) ->make(true); } } - - diff --git a/app/Http/Controllers/Settings/AirportController.php b/app/Http/Controllers/Settings/AirportController.php new file mode 100644 index 0000000..350d3a6 --- /dev/null +++ b/app/Http/Controllers/Settings/AirportController.php @@ -0,0 +1,65 @@ +middleware(['superadmin', '2fa']); + } + public function index($step = false) + { + $data = [ + 'airports' => Airport::all(), + ]; + return view('settings.airport.index', $data); + } + + public function update(){ + + $data = Request::all(); + if($data['id'] === "new"){ + $model = Airport::create([ + 'code' => $data['code'], + 'name' => $data['name'], + 'city' => $data['city'], + 'country' => $data['country'], + 'active' => isset($data['active']) ? true : false, + ]); + }else{ + $model = Airport::find($data['id']); + $model->name = $data['name']; + $model->code = $data['code']; + $model->city = isset($data['city']) ? $data['city'] : NULL; + $model->country = isset($data['country']) ? $data['country'] : NULL; + $model->active = isset($data['active']) ? true : false; + $model->save(); + } + + \Session()->flash('alert-save', '1'); + return redirect(route('admin_settings_airport')); + } + + public function delete($id){ + + if(Booking::where('airport_id', $id)->count()){ + \Session()->flash('alert-error', 'Eintrag wird verwendet'); + return redirect()->back(); + } + $model = Airport::findOrFail($id); + $model->delete(); + \Session()->flash('alert-success', 'Eintrag gelöscht'); + return redirect()->back(); + + } + +} + + diff --git a/app/Http/Controllers/Settings/EmailsController.php b/app/Http/Controllers/Settings/EmailsController.php index a754d9b..aac961e 100755 --- a/app/Http/Controllers/Settings/EmailsController.php +++ b/app/Http/Controllers/Settings/EmailsController.php @@ -18,6 +18,8 @@ class EmailsController extends Controller protected $identifier_booking_file; protected $identifier_fewo_file; + protected $identifier_lead_file; + public function __construct() { diff --git a/app/Http/Controllers/Settings/ServiceProviderController.php b/app/Http/Controllers/Settings/ServiceProviderController.php index a8214e3..12539e6 100755 --- a/app/Http/Controllers/Settings/ServiceProviderController.php +++ b/app/Http/Controllers/Settings/ServiceProviderController.php @@ -31,6 +31,7 @@ class ServiceProviderController extends Controller $model = new ServiceProvider(); $id = 'new'; $model->active = 1; + $model->id = 0; }else{ $model = ServiceProvider::findOrFail($id); $id = $model->id; @@ -49,7 +50,6 @@ class ServiceProviderController extends Controller public function update($id){ $data = Request::all(); - if(isset($data['update-action'])){ if($data['update-action'] === 'save-service-provider-service'){ $data['active'] = true;//isset($data['active']) ? true : false; @@ -70,7 +70,6 @@ class ServiceProviderController extends Controller $data['contact_emails'] = isset($data['contact_emails']) ? Util::_explodeLines($data['contact_emails']) : null; - if($id === "new"){ $model = ServiceProvider::create($data); }else{ @@ -87,8 +86,17 @@ class ServiceProviderController extends Controller public function delete($id, $del="service_provider"){ if($del === 'service_provider') { - abort(404, 'Noch keine Funktion'); + //abort(403, 'Noch keine Funktion'); $model = ServiceProvider::findOrFail($id); + if($model->service_provider_entries->count() > 0){ + \Session()->flash('alert-error', 'Der Leistungträger kann nicht gelöscht werden, dieser hat Einträge'); + return redirect()->back(); + } + + if($model->service_provider_services->count() > 0){ + \Session()->flash('alert-error', 'Der Leistungträger kann nicht gelöscht werden, dieser hat Einträge Service'); + return redirect()->back(); + } $model->delete(); \Session()->flash('alert-success', 'Eintrag gelöscht'); return redirect()->back(); diff --git a/app/Http/Controllers/Settings/TravelAgendaController.php b/app/Http/Controllers/Settings/TravelAgendaController.php index 8794e04..27e4e5d 100755 --- a/app/Http/Controllers/Settings/TravelAgendaController.php +++ b/app/Http/Controllers/Settings/TravelAgendaController.php @@ -48,8 +48,8 @@ class TravelAgendaController extends Controller public function delete($id){ - if(Booking::where('travelagenda_id', $id)->count()){ - \Session()->flash('alert-error', 'Eintrag wird verwendet'); + if(Booking::where('travelagenda_id', $id)->count()){ + \Session()->flash('alert-error', 'Eintrag wird bei Buchnungen verwendet'); return redirect()->back(); } diff --git a/app/Http/Controllers/Settings/TravelArrivalPointController.php b/app/Http/Controllers/Settings/TravelArrivalPointController.php new file mode 100644 index 0000000..2982acf --- /dev/null +++ b/app/Http/Controllers/Settings/TravelArrivalPointController.php @@ -0,0 +1,62 @@ +middleware(['superadmin', '2fa']); + } + + public function index($step = false) + { + $data = [ + 'travel_arrival_point' => TravelArrivalPoint::all(), + ]; + return view('settings.travel_arrival_point.index', $data); + } + + + public function update(){ + + $data = Request::all(); + if($data['id'] === "new"){ + $model = TravelArrivalPoint::create([ + 'name' => $data['name'], + 'active' => isset($data['active']) ? true : false, + 'travel_country_id' => $data['travel_country_id'], + + ]); + }else{ + $model = TravelArrivalPoint::find($data['id']); + $model->name = $data['name']; + $model->active = isset($data['active']) ? true : false; + $model->travel_country_id = $data['travel_country_id']; + $model->save(); + } + + \Session()->flash('alert-save', '1'); + return redirect(route('admin_settings_travel_arrival_point')); + } + + public function delete($id){ + + $model = TravelArrivalPoint::findOrFail($id); + if($model->travel_programs->count() > 0){ + \Session()->flash('alert-error', 'Eintrag wird bei Reiseprogrammen verwendet'); + return redirect()->back(); + } + $model->delete(); + \Session()->flash('alert-success', 'Eintrag gelöscht'); + return redirect()->back(); + } + +} + + diff --git a/app/Http/Controllers/Settings/TravelCategoryController.php b/app/Http/Controllers/Settings/TravelCategoryController.php new file mode 100644 index 0000000..e7b27b9 --- /dev/null +++ b/app/Http/Controllers/Settings/TravelCategoryController.php @@ -0,0 +1,67 @@ +middleware(['superadmin', '2fa']); + } + + public function index($step = false) + { + $data = [ + 'travel_category' => TravelCategory::all(), + ]; + return view('settings.travel_category.index', $data); + } + + + public function update(){ + + $data = Request::all(); + if($data['id'] === "new"){ + $model = TravelCategory::create([ + 'name' => $data['name'], + 'active' => isset($data['active']) ? true : false + + ]); + }else{ + $model = TravelCategory::find($data['id']); + $model->name = $data['name']; + $model->active = isset($data['active']) ? true : false; + $model->save(); + } + + \Session()->flash('alert-save', '1'); + return redirect(route('admin_settings_travel_category')); + } + + public function delete($id){ + + $model = TravelCategory::findOrFail($id); + if($model->bookings->count() > 0){ + \Session()->flash('alert-error', 'Eintrag wird bei Buchnungen verwendet'); + return redirect()->back(); + } + if($model->travel_programs->count() > 0){ + \Session()->flash('alert-error', 'Eintrag wird bei Programmen verwendet'); + return redirect()->back(); + } + if($model->leads->count() > 0){ + \Session()->flash('alert-error', 'Eintrag wird bei Anfragen verwendet'); + return redirect()->back(); + } + $model->delete(); + \Session()->flash('alert-success', 'Eintrag gelöscht'); + return redirect()->back(); + } + +} + + diff --git a/app/Http/Controllers/Settings/TravelCompanyController.php b/app/Http/Controllers/Settings/TravelCompanyController.php index 10d7621..110c32c 100755 --- a/app/Http/Controllers/Settings/TravelCompanyController.php +++ b/app/Http/Controllers/Settings/TravelCompanyController.php @@ -27,11 +27,11 @@ class TravelCompanyController extends Controller public function detail($id, $step = false) { - if($id === "new") { + if ($id == "new") { $model = new TravelCompany(); $id = 'new'; $model->active = 1; - }else{ + } else { $model = TravelCompany::findOrFail($id); $id = $model->id; } @@ -45,20 +45,21 @@ class TravelCompanyController extends Controller return view('settings.travel_company.detail', $data); } - public function update($id){ + public function update($id) + { $data = Request::all(); - if(isset($data['update-action'])){ - if($data['update-action'] === 'save-travel-company-service'){ - $data['active'] = true;//isset($data['active']) ? true : false; + if (isset($data['update-action'])) { + if ($data['update-action'] === 'save-travel-company-service') { + $data['active'] = true; //isset($data['active']) ? true : false; $travel_company = TravelCompany::findOrFail($id); $data['travel_company_id'] = $travel_company->id; - if($data['travel_company_service_id'] === 'new'){ + if ($data['travel_company_service_id'] === 'new') { $model = TravelCompanyService::create($data); - }else{ + } else { $model = TravelCompanyService::find($data['travel_company_service_id']); $model->fill($data); $model->save(); @@ -69,9 +70,9 @@ class TravelCompanyController extends Controller } $data['contact_emails'] = isset($data['contact_emails']) ? Util::_explodeLines($data['contact_emails']) : null; - if($id === "new"){ + if ($id === "new") { $model = TravelCompany::create($data); - }else{ + } else { $model = TravelCompany::find($id); $model->fill($data); $model->save(); @@ -79,12 +80,12 @@ class TravelCompanyController extends Controller \Session()->flash('alert-save', '1'); return redirect(route('admin_settings_travel_company_detail', [$model->id, $data['action']])); - } - public function delete($id, $del="travel_company"){ + public function delete($id, $del = "travel_company") + { - if($del === 'travel_country') { + if ($del === 'travel_country') { abort(404, 'Noch keine Funktion'); $model = TravelCompany::findOrFail($id); $model->delete(); @@ -92,11 +93,11 @@ class TravelCompanyController extends Controller return redirect()->back(); } - if($del === 'company_service'){ + if ($del === 'company_service') { $service = TravelCompanyService::findOrFail($id); $travel_company = $service->travel_company; //check as entry - if($service->booking_company_services->count() > 0){ + if ($service->booking_company_services->count() > 0) { \Session()->flash('alert-error', 'Die Leistung kann nicht gelöscht werden, diese hat Einträge bei den Buchungen'); return redirect(route('admin_settings_travel_company_detail', [$travel_company->id, 'services'])); } @@ -105,7 +106,4 @@ class TravelCompanyController extends Controller return redirect(route('admin_settings_travel_company_detail', [$travel_company->id, 'services'])); } } - } - - diff --git a/app/Http/Controllers/Settings/TravelCountryController.php b/app/Http/Controllers/Settings/TravelCountryController.php index 72ff519..60f6cfb 100755 --- a/app/Http/Controllers/Settings/TravelCountryController.php +++ b/app/Http/Controllers/Settings/TravelCountryController.php @@ -38,11 +38,11 @@ class TravelCountryController extends Controller public function detail($id, $step = false) { - if($id === "new") { + if ($id == "new") { $model = new TravelCountry(); $id = 'new'; $model->active_backend = 1; - }else{ + } else { $model = TravelCountry::findOrFail($id); $id = $model->id; } @@ -62,15 +62,15 @@ class TravelCountryController extends Controller { $data = Request::all(); - if(isset($data['update-action'])){ - if($data['update-action'] === 'save-travel-county-service'){ - $data['active'] = true;//isset($data['active']) ? true : false; + if (isset($data['update-action'])) { + if ($data['update-action'] === 'save-travel-county-service') { + $data['active'] = true; //isset($data['active']) ? true : false; $travel_country = TravelCountry::findOrFail($id); $data['travel_country_id'] = $travel_country->id; $data['crm_travel_country_id'] = $travel_country->crm_id; - if($data['travel_county_service_id'] === 'new'){ + if ($data['travel_county_service_id'] === 'new') { $model = TravelCountryService::create($data); - }else{ + } else { $model = TravelCountryService::find($data['travel_county_service_id']); $model->fill($data); $model->save(); @@ -81,7 +81,7 @@ class TravelCountryController extends Controller } $data['contact_emails'] = isset($data['contact_emails']) ? Util::_explodeLines($data['contact_emails']) : null; - if(!isset($data['contact_lands'])){ + if (!isset($data['contact_lands'])) { $data['contact_lands'] = null; } $data['action'] = isset($data['action']) ? $data['action'] : false; @@ -90,9 +90,9 @@ class TravelCountryController extends Controller $data['active_frontend'] = isset($data['active_frontend']) ? true : false; $data['active_backend'] = isset($data['active_backend']) ? true : false; */ - if($id === "new"){ + if ($id === "new") { $model = TravelCountry::create($data); - }else{ + } else { $model = TravelCountry::find($id); $model->fill($data); $model->save(); @@ -106,11 +106,11 @@ class TravelCountryController extends Controller } //TODO for this time $tc = \App\Models\Sym\TravelCountry::find($model->crm_id); - if(!$tc){ + if (!$tc) { $tc = \App\Models\Sym\TravelCountry::create($data); $model->crm_id = $tc->id; $model->save(); - }else { + } else { $tc->fill($data); $tc->save(); } @@ -119,17 +119,18 @@ class TravelCountryController extends Controller } - public function delete($id, $del="travel_country"){ + public function delete($id, $del = "travel_country") + { - if($del === 'travel_country'){ + if ($del === 'travel_country') { $model = TravelCountry::findOrFail($id); - if($model->travel_nationality_requirements){ - foreach($model->travel_nationality_requirements as $travel_nationality_requirement){ + if ($model->travel_nationality_requirements) { + foreach ($model->travel_nationality_requirements as $travel_nationality_requirement) { $travel_nationality_requirement->delete(); } } $tc = \App\Models\Sym\TravelCountry::find($model->crm_id); - if($tc){ + if ($tc) { $tc->delete(); } $model->delete(); @@ -137,7 +138,7 @@ class TravelCountryController extends Controller return redirect()->back(); } - if($del === 'general_file'){ + if ($del === 'general_file') { $general_file = GeneralFile::findOrFail($id); $travel_country = $general_file->travel_country; $fileRepo = new GeneralFileRepository($general_file); @@ -146,23 +147,18 @@ class TravelCountryController extends Controller $general_file->delete(); \Session()->flash('alert-success', 'Datei gelöscht'); return redirect(route('admin_settings_travel_country_detail', [$travel_country->id, 'data'])); - } - if($del === 'country_service'){ + if ($del === 'country_service') { $travel_country_service = TravelCountryService::findOrFail($id); $travel_country = $travel_country_service->travel_country; //check as entry - if($travel_country_service->booking_country_services->count() > 0){ + if ($travel_country_service->booking_country_services->count() > 0) { \Session()->flash('alert-error', 'Die Leistung kann nicht gelöscht werden, diese hat Einträge bei den Buchungen'); return redirect(route('admin_settings_travel_country_detail', [$travel_country->id, 'services'])); } $travel_country_service->delete(); \Session()->flash('alert-success', 'Eintrag gelöscht'); return redirect(route('admin_settings_travel_country_detail', [$travel_country->id, 'services'])); - } - } } - - diff --git a/app/Http/Controllers/Settings/TravelGerneralNotesController.php b/app/Http/Controllers/Settings/TravelGerneralNotesController.php new file mode 100644 index 0000000..304b4b0 --- /dev/null +++ b/app/Http/Controllers/Settings/TravelGerneralNotesController.php @@ -0,0 +1,56 @@ +middleware(['superadmin', '2fa']); + } + + public function index($step = false) + { + $data = [ + 'gerneral_notes' => TravelGerneralNote::all(), + ]; + return view('settings.gerneral_notes.index', $data); + } + + public function update(){ + $data = Request::all(); + if($data['id'] === "new"){ + $model = TravelGerneralNote::create([ + 'name' => $data['name'], + 'text' => $data['text'] + ]); + }else{ + $model = TravelGerneralNote::find($data['id']); + $model->name = $data['name']; + $model->text = $data['text']; + $model->save(); + } + + \Session()->flash('alert-save', '1'); + return redirect(route('admin_settings_gerneral_notes')); + } + + public function delete($id){ + $model = TravelGerneralNote::findOrFail($id); + if($model->travel_programs->count() > 0){ + \Session()->flash('alert-error', 'Eintrag wird bei Reiseprogrammen verwendet'); + return redirect()->back(); + } + $model->delete(); + \Session()->flash('alert-success', 'Eintrag gelöscht'); + return redirect()->back(); + } + +} + + diff --git a/app/Http/Controllers/SyS/SysController.php b/app/Http/Controllers/SyS/SysController.php new file mode 100644 index 0000000..f8773b3 --- /dev/null +++ b/app/Http/Controllers/SyS/SysController.php @@ -0,0 +1,65 @@ +middleware(['sysadmin', '2fa']); + } + + public function index() + { + return view('sys.index'); + } + + public function tool($serve) + { + switch ($serve) { + case 'reimport': + return ReImport::show(); + break; + case 'calcu': + dd('check App\Services\SyS\ReCalcu'); + break; + case 'tree': + dd('check App\Services\SyS\Import'); + break; + case 'clean_tree_code': + dd('check App\Services\SyS\Import'); + break; + case 'media_insert': + dd('check App\Services\SyS\Import'); + break; + case 'import': + dd('check App\Services\SyS\Import'); + break; + } + abort(403, 'not found tool'); + } + + + public function store($serve) + { + switch ($serve) { + case 'reimport': + return ReImport::store(); + break; + + } + abort(403, 'not found tool'); + } + + + + + + +} diff --git a/app/Http/Controllers/SyS/Tools/ContentLinkController.php b/app/Http/Controllers/SyS/Tools/ContentLinkController.php deleted file mode 100755 index ffa13a1..0000000 --- a/app/Http/Controllers/SyS/Tools/ContentLinkController.php +++ /dev/null @@ -1,731 +0,0 @@ -middleware(['sysadmin', '2fa']); - } - - public function filterHTML(){ - - } - //content_links - public function index() - { - /*$query = Booking::with('booking_draft_items')->select('booking.*')->where('new_drafts', true); - - $query->whereHas('booking_draft_items', function ($q) { - $q->where('comfort', true); - }); - $bookings = $query->get(); - foreach ($bookings as $booking){ - $booking->comfort = true; - $booking->save(); - } -*/ - dd("nothing"); - $val = []; - $text = ""; - /* $travelGuides = TravelGuide::all(); - foreach ($travelGuides as $travelGuide){ - if(strpos($travelGuide->full_text, "


") !== false){ - $val[$travelGuide->id] = "


"; - } - } - - foreach ($travelGuides as $travelGuide){ - if(strpos($travelGuide->full_text, "id] = "full_text; - - // $new_text = preg_replace('/]*>([\s\S]*?)<\/h1[^>]*>/', '', $TravelGuide->full_text); - -*/ - $data = [ - 'text' => $text, - 'values' => $val, - ]; - return view('sys.tools.links', $data); - - } - - public function store() - { - return redirect()->back(); - } - - //tree - public function tree() - { - $text = ""; - $val = []; - $trees = IQContentTree::all(); - foreach ($trees as $tree){ - foreach ($tree->iq_content_tree_nodes as $tree_node){ - - $text .= $tree_node->id." -- ".$tree_node->title."\n"; - foreach ($tree_node->iq_content_sites as $site){ - if($site->travel_guide && $site->identifier === null){ - $identifier = $site->travel_guide->scope === 1 ? 'long' : 'short'; - //$site->identifier = $site->travel_guide->scope === 1 ? 'long' : 'short'; - $text .= "-- ".$site->id." -- ".$identifier."\n"; - } - } - } - } - $data = [ - 'text' => $text, - 'values' => $val, - ]; - return view('sys.tools.trees', $data); - } - - public function treeStore() - { - $trees = IQContentTree::all(); - foreach ($trees as $tree){ - foreach ($tree->iq_content_tree_nodes as $tree_node){ - - foreach ($tree_node->iq_content_sites as $site){ - if($site->travel_guide){ - $site->identifier = $site->travel_guide->scope === 1 ? 'long' : 'short'; - $site->save(); - } - } - } - } - return redirect()->back(); - } - - - //clean_tree_code - public function cleanTreeCode(){ - $val = []; - $text = ""; - - $travelGuide = TravelGuide::find(166); - $text = $travelGuide->full_text; - - $data = [ - 'new_text' => \App\Services\Util::cleanHTML($text), - 'full_text' => $travelGuide->full_text, - 'values' => $val, - ]; - return view('sys.tools.clean', $data); - } - - public function cleanTreeCodeStore(){ - $this->cleanTextTravelGuide(); - return redirect()->back(); - } - - public function cleanTextTravelGuide() - { - $TravelGuides = TravelGuide::all(); - foreach ($TravelGuides as $travelGuide){ - $new_text = \App\Services\Util::cleanHTML($travelGuide->full_text); - if(strcmp($travelGuide->full_text, $new_text) != 0){ - $travelGuide->full_text = $new_text; - $travelGuide->save(); - var_dump($travelGuide->id); - echo "
"; - } - } - die("done"); - } - - //media_insert - public function mediaInsert(){ - $val = []; - $text = ""; - $data = [ - 'text' => $text, - 'values' => $val, - ]; - return view('sys.tools.insert', $data); - } - - public function mediaInsertStore(){ - $val = []; - - $data = Request::all(); - $text = $data['text']; - - if($data['action'] === 'insert'){ - $lines = explode(PHP_EOL, $text); - $FolderC = new FolderController(); - $FileC = new FileController(); - - foreach ($lines as $line){ - $sep = explode(';', $line); - if(isset($sep[0]) && isset($sep[1]) && isset($sep[2])){ - //youtube //main dir - $working_dir = "/shares/youtube/".$sep[0]; - $folder_name = $sep[1]; - - $folder = $FolderC->makeFolder($working_dir, $folder_name); - $working_dir = $working_dir."/".$folder_name; - $file = $FileC->makeYoutube($working_dir, $sep[2]); - $val[] = $file.' - '.$sep[2]." | ".$working_dir; - } - } - } - if($data['action'] === 'youtube_ids'){ - $TravelGuides = TravelGuide::all(); - foreach ($TravelGuides as $travelGuide){ - $this->findYoutubeLinks($val, $travelGuide); - - /* */ - } - } - if($data['action'] === 'replace_youtube_links') { - $TravelGuides = TravelGuide::all(); - foreach ($TravelGuides as $travelGuide){ - $this->replaceYoutubeLinks($val, $travelGuide); - - /* */ - } - } - - if($data['action'] === 'replace_youtube_div') { - $this->replaceYoutubeDiv($val, TravelGuide::find(335)); - $TravelGuides = TravelGuide::all(); - foreach ($TravelGuides as $travelGuide){ - $this->replaceYoutubeDiv($val, $travelGuide); - - /* */ - } - } - - - $data = [ - 'text' => $text, - 'values' => $val, - ]; - return view('sys.tools.insert', $data); - - } - -//import - public function import() - { - $text = ""; - $val = []; - - $data = [ - 'text' => $text, - 'values' => $val, - ]; - return view('sys.tools.import', $data); - } - - public function importStore() - { - - $data = Request::all(); - - $lines = explode(PHP_EOL, $data['text']); - - if($data['action'] === 'import_TN'){ - foreach ($lines as $line){ - $ex = explode(';', $line); - $t_n = TravelNationality::whereName(trim($ex[1]))->first(); - if($t_n){ - $t_n->nat = $ex[0]; - $t_n->save(); - }else{ - TravelNationality::create([ - 'name' => trim($ex[1]), - 'nat' => $ex[0], - 'active' => false, - ] - ); - } - } - } - - if($data['action'] === 'import_CT') { - foreach ($lines as $line){ - $ex = explode(';', $line); - $t_c = TravelCountry::whereName(trim($ex[1]))->first(); - if($t_c){ - dump($t_c->name); - $t_c->destco = $ex[0]; - $t_c->save(); - - $tc = \App\Models\Sym\TravelCountry::find($t_c->crm_id); - $tc->destco = $ex[0]; - $tc->save(); - } - } - dd(""); - } - - return redirect()->back(); - } - - - private function replaceYoutubeDiv(&$val, $travelGuide) - { - $ret = []; - $dom = new \DOMDocument('1.0', 'utf-8'); - @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8')); - $links = $dom->getElementsByTagName('iframe'); - foreach ($links as $link) { - if($link->parentNode->parentNode->nodeName === 'div'){ - if($link->parentNode->parentNode->getAttribute('itemprop') === 'video'){ - if($link->parentNode->parentNode->getAttribute('class') === 'mediaA'){ - if($link->parentNode->parentNode->parentNode->getAttribute('itemprop') === 'video'){ - - $need = $link->parentNode->parentNode; - $replace = $link->parentNode->parentNode->parentNode; - $replace->parentNode->insertBefore($dom->importNode($need, true), $replace->nextSibling); - $replace->parentNode->removeChild($replace); - $html = $dom->saveHTML(); - - $travelGuide->full_text = $html; - $travelGuide->save(); - $val[] = 'replace - '.$travelGuide->id; - - }else{ - // dump("notfound itemprop over class mediaA".$travelGuide->id); - $val[] = 'notfound - itemprop over class mediaA - '.$travelGuide->id; - - //in - - foreach ($link->parentNode->parentNode->childNodes as $node){ - if($node->nodeName === 'h2'){ - - if($node->firstChild->nodeName === '#text'){ - - $span = $dom->createElement('span', htmlspecialchars($node->nodeValue)); - - $span->setAttribute('itemprop', 'name'); - $h2 = $dom->createElement('h2'); - $h2->appendChild($span); - - $node->parentNode->replaceChild($h2, $node); - $html = $dom->saveHTML(); - - $travelGuide->full_text = $html; - $travelGuide->save(); - $val[] = 'replace h2 - '.$travelGuide->id; - - - } - - - - - - - } - } - // - - } - //dump("found M div ".$travelGuide->id); - }else{ - // dump("notfound class mediaA".$travelGuide->id); - $val[] = 'notfound - class mediaA - '.$travelGuide->id; - } - }else{ - // dump("notfound div ".$travelGuide->id); - $val[] = 'notfound - video - '.$travelGuide->id; - - - } - // dump($travelGuide->id); - }else{ - //dump("notfound".$travelGuide->id); - $val[] = 'notfound - div - '.$travelGuide->id; - } - } - - - return $ret; - } - - private function replaceYoutubeLinks(&$val, $travelGuide) - { - $ret = []; - $dom = new \DOMDocument('1.0', 'utf-8'); - @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8')); - $links = $dom->getElementsByTagName('iframe'); - foreach ($links as $link) { - - $src = $link->getAttribute('src'); - - - // - $replace = false; - $reLink = false; - if($link->parentNode->nodeName === 'div'){ - if($link->parentNode->getAttribute('class') === 'video-container'){ - if($link->parentNode->parentNode->getAttribute('class') === 'mediaA' && $link->parentNode->parentNode->getAttribute('itemprop') !== 'video'){ - $replace = $link->parentNode->parentNode; - $reLink = $link->parentNode; - }else{ - $val[] = 'found - manual - '.$travelGuide->id; - } - }else{ - $val[] = 'first div - manual - '.$travelGuide->id; - - } - - }elseif ($link->parentNode->nodeName === 'p'){ - if($link->parentNode->parentNode->nodeName === 'div'){ - if($link->parentNode->parentNode->getAttribute('itemprop') === 'video'){ - //replace div - $replace = $link->parentNode->parentNode; - $reLink = $link->parentNode; - }else{ - //replace p - $replace = $link->parentNode; - $reLink = $link; - } - }else{ - $replace = $link->parentNode; - $reLink = $link; - } - - }else{ - $val[] = 'else div - manual - '.$travelGuide->id; - } - if($replace){ - - $id = preg_replace('/http.*?embed\//i', '', $src); - $videoID = preg_replace('#[&\?].+$#', '', $id); - $identifier = Str::slug(pre_slug($videoID), '-'); - $IQContentFile = IQContentFile::whereIdentifier($identifier)->first(); - if($IQContentFile) { - - $video = new \DOMDocument('1.0', 'utf-8'); - $makeText = '
'; - $makeText .= '

' . $IQContentFile->content['title'] . '

'; - $makeText .= ''; - $makeText .= ''; - $makeText .= ''; - $makeText .= ''; - $makeText .= '
'; - $makeText .= '

'.$IQContentFile->content['description'].'

'; - $makeText = str_replace('&', '&', $makeText); - $video->loadHTML($makeText); - $replace->insertBefore($dom->importNode($video->documentElement, true), $reLink->nextSibling); - $replace->removeChild($reLink); - $html = $dom->saveHTML(); - - $travelGuide->full_text = $html; - $travelGuide->save(); - - $val[] = 'replace - '.$travelGuide->id; - } - - - } - } - - - return $ret; - } - - private function findYoutubeLinks(&$val, $travelGuide) - { - $ret = []; - $dom = new \DOMDocument('1.0', 'utf-8'); - @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8')); - - $links = $dom->getElementsByTagName('iframe'); - foreach ($links as $link) { - - $src = $link->getAttribute('src'); - - $id = preg_replace('/http.*?embed\//i', '', $src); - $videoID = preg_replace('#[&\?].+$#', '', $id); - - $identifier = Str::slug(pre_slug($videoID), '-'); - $count = IQContentFile::whereIdentifier($identifier)->count(); - - if($count === 0){ - $ret[$videoID] = $count; - $val[] = "weitere;Travel-Guide;".$videoID.";"; - } - } - return $ret; - } - //private? - public function h1ToTitleTravelGuide() - { - $TravelGuides = TravelGuide::all(); - foreach ($TravelGuides as $travelGuide){ - if(strpos($travelGuide->full_text,'

' )){ - $dom = new \DOMDocument('1.0', 'utf-8'); - @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8')); - $elements = $dom->getElementsByTagName('h1'); - - foreach ($elements as $element) { - if($element->nodeValue != ""){ - var_dump($travelGuide->id); - var_dump($element->nodeValue); - echo "
"; - var_dump($travelGuide->name); - echo "
"; - echo "--"; - echo "
"; - - $new_text = preg_replace('/]*>([\s\S]*?)<\/h1[^>]*>/', '', $travelGuide->full_text); - - $travelGuide->name = $element->nodeValue; - $travelGuide->full_text = $new_text; - $travelGuide->save(); - } - } - } - } - die("done"); - } - - public function readNodeAndSaveToTree(){ - $input = Request::all(); - $ret = []; - if(isset($input['text'])){ - $out = $this->ul_to_array($input['text']); - $this->array_to_nodes($out); - } - die("done"); - $data = [ - 'text' => $input['text'], - 'values' => $ret, - ]; - return view('iq.tools.links', $data); - } - - public function array_to_nodes($array, $lvl = 1, $parent_id = 1, $pos=100){ - - - if(is_array($array)){ - foreach ($array as $node){ - if(isset($node['slug'])){ - - $slug = substr($node['slug'], 0, 80); - // $slug = substr($node['slug'], 0, strrpos($slug, " ")); - - $name = substr($node['name'], 0, 255); - // $name = substr($node['name'], 0, strrpos($name, " ")); - - - $data = [ - 'tree_id' => 1, - 'parent_id' => $parent_id, - 'lvl' => $lvl, - 'name' => $name, - 'identifier' => $slug, - 'active' => false, - 'pos' => $pos++, - ]; - $tree_node = IQContentTreeNode::create($data); - - - $travel_guides = TravelGuide::whereSlug($node['slug'])->get(); - foreach ($travel_guides as $travel_guide){ - if(IQContentSite::whereTreeNodeId($tree_node->id)->whereTravelGuideId($travel_guide->id)->count() == 0) { - IQContentSite::create(['tree_node_id' => $tree_node->id, 'travel_guide_id' => $travel_guide->id]); - } - } - - - } - if(isset($node['children']) && is_array($node['children'])){ - $this->array_to_nodes($node['children'], $lvl + 1, $tree_node->id, $pos); - } - } - } - - } - - public function ul_to_array($ol){ - if(is_string($ol)){ - if(!$ol = simplexml_load_string($ol)) { - trigger_error("Syntax error in UL/LI structure"); - return FALSE; - } - return $this->ul_to_array($ol); - } else if(is_object($ol)){ - $output = array(); - foreach($ol->li as $li){ - - $tmp = false; - if(isset($li->ol)){ - $tmp = $this->ul_to_array($li->ol); - } - - if($li->count()){ - - $str = (string) $li; - - $a = new \SimpleXMLElement($li->children()->asXML()); - $str = (string) $a[0]." ".$str; - $str = str_replace("\n", "", $str); - $str = str_replace("\r", "", $str); - $str = str_replace("\t", "", $str); - $str = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $str); - - if(trim($str) !== "" && $str !== null){ - $slug = (string) $a['href']; - $link = explode("/", $slug); - - $link1 = array_pop($link); - $link1 = str_replace('.htm', '',$link1); - $output[] = ['slug'=> $link1, 'name'=>$str, 'children'=>$tmp]; - } - }else{ - $str = (string) $li; - $str = str_replace("\n", "", $str); - $str = str_replace("\r", "", $str); - $str = str_replace("\t", "", $str); - if(trim($str) !== "" && $str !== null){ - - $output[] = ['slug'=>'', 'name'=>$str, 'children'=>$tmp]; - } - } - - } - return $output; - } else { - return FALSE; - } - } - - public function rindex() - { - $data = [ - 'text' => "", - 'values' => [], - ]; - return view('iq.content.tools.redirects', $data); - } - - public function rstore() - { - - $iqContentTree = IQContentTree::find(2); - $this->makeTree($iqContentTree); - $input = Request::all(); - $ret = []; - - if(isset($input['text'])){ - - - $dom = new \DOMDocument('1.0', 'utf-8'); - @$dom->loadHTML(mb_convert_encoding($input['text'], 'HTML-ENTITIES', 'UTF-8')); - - $tags = ['ol']; - foreach ($tags as $tag){ - $domElements = []; - $elements = $dom->getElementsByTagName($tag)->item(0); - - foreach($elements as $node){ - foreach($node->childNodes as $child) { - $ret[] = array($child->nodeName => $child->nodeValue); - } - } - } - - /* $tags = ['a']; foreach ($tags as $tag){ - $domElements = []; - $elements = $dom->getElementsByTagName($tag); - foreach ($elements as $element) { - $domElements[] = $element; - - } - foreach ($domElements as $domElement) { - $r = "-----"; - $href = $domElement->getAttribute('href'); - $link = explode("/", $href); - - $link1 = array_pop($link); - $link1 = str_replace('.html', '',$link1); - $link1 = str_replace('-', '',$link1); - if(isset($this->tree[$link1])){ - $r = $this->tree[$link1]; - }else{ - $link1 = array_pop($link); - $link1 = str_replace('.html', '',$link1); - $link1 = str_replace('-', '',$link1); - if(isset($this->tree[$link1])){ - $r = $this->tree[$link1]; - } - } - - $ret[] = "Redirect 301 /".$href." ".$r; - - } - }*/ - - } - $data = [ - 'text' => $input['text'], - 'values' => $ret, - ]; - - return view('iq.content.tools.redirects', $data); - - } - - public function makeTree(IQContentTree $iq_content_tree, $lvl = 0, $parent_id = false, $url = "") - { - - if ($parent_id) { - //where('active', true) - $tree_nodes = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl)->where('active', true)->where('parent_id', $parent_id)->orderBy('pos', 'ASC')->get(); - } else { - - $url = "/" . $iq_content_tree->identifier . "/"; - $tree_nodes = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl)->where('active', true)->orderBy('pos', 'ASC')->get(); - } - - foreach ($tree_nodes as $node) { - $children = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl + 1)->where('active', true)->where('parent_id', $node->id)->count(); - $this->tree[str_replace('-', '', $node->identifier)] = url($url . $node->identifier); - - if ($children) { - $this->makeTree($iq_content_tree, $lvl + 1, $node->id, $url . $node->identifier . "/"); - - } - } - return true; - } - - - -} diff --git a/app/Http/Controllers/TravelContentController.php b/app/Http/Controllers/TravelContentController.php new file mode 100644 index 0000000..e025062 --- /dev/null +++ b/app/Http/Controllers/TravelContentController.php @@ -0,0 +1,154 @@ +middleware(['admin', '2fa']); + } + + public function index($step = false) + { + $data = [ + 'travelProgramOverviews' => Page::whereTemplate('travelProgramOverview')->get(), + 'step' => $step + ]; + return view('travel.content.index', $data); + + + } + + public function detail($id) + { + if($id === "new") { + $id = 'new'; + + }else{ + $page = Page::findOrFail($id); + $id = $page->id; + } + $data = [ + 'model' => $page, + 'id' => $id, + ]; + return view('travel.content.detail', $data); + } + + public function store($id) + { + $data = Request::all(); + if($id === "new") { + //$draft = new Draft(); + }else{ + $page = Page::findOrFail($id); + } + + if(Page::whereSlug($data['slug'])->where('id', '!=', $page->id)->count() > 0){ + $data['slug'] = ""; + } + + $page->title = $data['title']; + $page->title_short = $data['title_short']; + $page->pagetitle = $data['pagetitle']; + $page->slug = $data['slug']; + $page->description = $data['description']; + $page->content_new = $data['content_new']; + $page->status = $data['status']; + $page->show_in_navi = $data['show_in_navi']; + $page->save(); + + + \Session()->flash('alert-save', '1'); + return redirect(route('travel_content_detail', [$page->id])); + } + + public function subDetail($id) + { + if($id === "new") { + $id = 'new'; + + }else{ + $page = Page::findOrFail($id); + $id = $page->id; + } + $data = [ + 'model' => $page, + 'id' => $id, + ]; + return view('travel.content.sub_detail', $data); + } + + public function subStore($id) + { + $data = Request::all(); + if($id === "new") { + //$draft = new Draft(); + }else{ + $page = Page::findOrFail($id); + } + + if(Page::whereSlug($data['slug'])->where('id', '!=', $page->id)->count() > 0){ + $data['slug'] = ""; + } + $page->title = $data['title']; + $page->pagetitle = $data['pagetitle']; + $page->slug = $data['slug']; + $page->description = $data['description']; + $page->status = $data['status']; + $page->show_in_navi = $data['show_in_navi']; + $page->order = $data['order']; + + $page->travel_program = $data['travel_program'] > 0 ? $data['travel_program'] : null; + + $page->save(); + + + \Session()->flash('alert-save', '1'); + return redirect(route('travel_content_sub_detail', [$page->id])); + } + + + public function load(){ + $data = Request::all(); + $ret = ""; + if(Request::ajax()) { + if($data['action'] === "modal-copy-page") { + if($data['id'] > 0){ + $value = Page::findOrFail($data['id']); + $ret = view('travel.content.modal_copy', compact('value'))->render(); + } + } + } + return response()->json(['response' => $data, 'html'=>$ret]); + } + + + + public function update(){ + + $data = Request::all(); + + if($data['action'] === 'page-copy'){ + if($data['page_copy_id'] > 0){ + $model = Page::findOrFail($data['page_copy_id']); + $newModel = $model->replicate(); + $newModel->date = null; + //slug unique + // $newModel->slug + $newModel->created_at = now(); + $newModel->save(); + } + + \Session()->flash('alert-save', '1'); + return redirect(route('travel_content_detail', [$data['id']])); + } + } +} + + diff --git a/app/Http/Controllers/TravelProgramController.php b/app/Http/Controllers/TravelProgramController.php index 6fd3111..61d21b8 100755 --- a/app/Http/Controllers/TravelProgramController.php +++ b/app/Http/Controllers/TravelProgramController.php @@ -48,11 +48,29 @@ class TravelProgramController extends Controller public function store($id) { + //TODO new must have an extra funtction! $data = Request::all(); - $program = $this->travelProgramRepo->update($data); - \Session()->flash('alert-save', '1'); - return redirect(route('travel_program_detail', [$program->id])); + if(!isset($data['action'])){ + abort(403, 'keine Action'); + } + //save + $program = $this->travelProgramRepo->updateGeneral($id, $data); + $program = $this->travelProgramRepo->updateDetail($id, $data); + $program = $this->travelProgramRepo->updatePage($id, $data); + \Session()->flash('alert-save', '1'); + + + if($data['action'] === 'saveGeneral'){ + return redirect(route('travel_program_detail', [$program->id])."#collapseBookingNotice"); + } + if($data['action'] === 'saveDetails'){ + return redirect(route('travel_program_detail', [$program->id])."#collapseTravelProgramDetails"); + } + if($data['action'] === 'savePage'){ + return redirect(route('travel_program_detail', [$program->id])."#collapseTravelProgramPage"); + } + return redirect(route('travel_program_detail', [$id])); } /* @@ -68,6 +86,7 @@ class TravelProgramController extends Controller \Session()->flash('alert-save', '1'); return redirect(route('travel_program_detail', [$data['program_id']])); } + public function classDelete($id){ $travel_class = TravelClass::findOrFail($id); $pId = $travel_class->program_id; diff --git a/app/Http/Controllers/TravelUserBookingFewoController.php b/app/Http/Controllers/TravelUserBookingFewoController.php index 44fd91a..f2089dd 100755 --- a/app/Http/Controllers/TravelUserBookingFewoController.php +++ b/app/Http/Controllers/TravelUserBookingFewoController.php @@ -3,21 +3,23 @@ namespace App\Http\Controllers; -use App\Mail\MailSendFeWoInvoice; -use App\Mail\MailSendFeWoService; -use App\Mail\MailSendFeWoInfo; +use Request; +use App\Services\Util; use App\Models\CMSContent; use App\Models\FewoLodging; +use App\Mail\MailSendFeWoInfo; use App\Models\FewoReservation; -use App\Models\TravelBookingFewoChannel; -use App\Models\TravelUserBookingFewo; -use App\Models\TravelUserBookingFewoNotice; -use App\Models\TravelUserBookingFile; -use App\Repositories\BookingFewoFileRepository; -use App\Repositories\TravelUserBookingFewoRepository; -use App\Services\Util; +use App\Models\CustomerFewoFile; +use App\Mail\MailSendFeWoInvoice; +use App\Mail\MailSendFeWoService; use Illuminate\Support\Facades\Mail; -use Request; +use App\Models\TravelUserBookingFewo; +use App\Models\TravelUserBookingFile; +use App\Models\TravelBookingFewoChannel; +use App\Models\TravelUserBookingFewoNotice; +use App\Repositories\BookingFewoFileRepository; +use App\Repositories\CustomerFewoFileRepository; +use App\Repositories\TravelUserBookingFewoRepository; class TravelUserBookingFewoController extends Controller { @@ -82,6 +84,10 @@ class TravelUserBookingFewoController extends Controller public function store($id) { $data = Request::all(); + if(!isset($data['action'])){ + abort(403, 'keine Action'); + } + if($data['action'] === 'save_notice'){ $travel_user_booking_fewo = $this->userBookingFewoRepo->updateNotice($id, $data); \Session()->flash('alert-save', '1'); @@ -93,7 +99,6 @@ class TravelUserBookingFewoController extends Controller return redirect(route('travel_user_booking_fewo_detail', [$travel_user_booking_fewo->id])."#collapseBookingNotice"); } - if($data['action'] === 'saveAll'){ return $this->userBookingFewoRepo->update($id, $data); } @@ -147,8 +152,12 @@ class TravelUserBookingFewoController extends Controller if($data['action'] === 'sendInfosMailtoUser') { $travel_user_booking_fewo = TravelUserBookingFewo::findOrFail($id); if($travel_user_booking_fewo->travel_user_id && $travel_user_booking_fewo->travel_user->email){ + $mail_files = []; + if(isset($data['info_mail_files'])){ + $mail_files = $this->setMailInfoFiles($data['info_mail_files'], $travel_user_booking_fewo); + } $mail_bbc = config('mail.mail_bbc'); - Mail::to($travel_user_booking_fewo->travel_user->email)->bcc($mail_bbc)->send(new MailSendFeWoInfo($travel_user_booking_fewo)); + Mail::to($travel_user_booking_fewo->travel_user->email)->bcc($mail_bbc)->send(new MailSendFeWoInfo($travel_user_booking_fewo, $mail_files)); $send_info_mail = $travel_user_booking_fewo->send_info_mail; $send_info_mail[] = [date('H:i d.m.Y') => $travel_user_booking_fewo->travel_user->email]; $travel_user_booking_fewo->send_info_mail = $send_info_mail; @@ -195,6 +204,51 @@ class TravelUserBookingFewoController extends Controller } } + private function setMailInfoFiles($info_mail_files, $travel_user_booking_fewo) + { + $files = []; + $ret = []; + //read files + foreach($info_mail_files as $mail_file){ + if($mail_file === 'fewo_instruction_pdf'){ + $files[] = [ + 'target' => route('customer_file_show', ['fewo_instruction_pdf', $travel_user_booking_fewo->fewo_lodging->id, 'stream']), + 'name' => \App\Services\BookingFewo::getFeWoInstructionPDFName($travel_user_booking_fewo->fewo_lodging) + ]; + }else{ + if($file = \App\Models\CMSContent::getModelBySlug($mail_file)){ + $files[] = [ + 'target' => $file->getURL(), + 'name' => $file->name + ]; + } + } + } + //store files + foreach($files as $file){ + $arrContextOptions=array( + "ssl"=>array( + "verify_peer"=>false, + "verify_peer_name"=>false, + ), + ); + $contents = file_get_contents($file['target'], false, stream_context_create($arrContextOptions)); + $mine = Util::getMimeFromHeader($http_response_header); + $extension = Util::getExtensionFromMime($mine); + $fileRepo = new CustomerFewoFileRepository(new CustomerFewoFile()); + $fileRepo->_set('disk', 'travel_user'); + $fileRepo->_set('dir', '/attachment/'.date('Y/m').'/'); + $fileRepo->_set('travel_user_id', $travel_user_booking_fewo->travel_user_id); + $fileRepo->_set('customer_fewo_mail_id', NULL); + $fileRepo->_set('identifier', 'fewo_info_mail_user'); + $fileRepo->_set('originalName', $file['name']); + $fileRepo->_set('mine', $mine); + $fileRepo->_set('extension', $extension); + $ret[] = $fileRepo->storeReturnFile($contents); + } + return $ret; + } + public function getAjaxRequests(){ @@ -301,6 +355,7 @@ class TravelUserBookingFewoController extends Controller }) ->addColumn('is_calendar', function (TravelUserBookingFewo $travel_user_booking_fewo) { $back = "
"; + $back .= get_active_badge($travel_user_booking_fewo->is_calendar_traum_fewo, "Traum Direkt")." "; $back .= get_active_badge($travel_user_booking_fewo->is_calendar_fewo_direct, "FEWO Direkt")." "; $back .= get_active_badge($travel_user_booking_fewo->is_calendar_hrs, "HRS")." "; $back .= get_active_badge($travel_user_booking_fewo->is_calendar_stern_tours, "STERN TOURS"); diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 511c00a..ed04b00 100755 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -14,7 +14,7 @@ class Kernel extends HttpKernel * @var array */ protected $middleware = [ - \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, + \Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, @@ -39,19 +39,17 @@ class Kernel extends HttpKernel ], 'api' => [ - 'throttle:60,1', - 'bindings', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + 'throttle:api', ], ]; /** - * The application's route middleware. + * The application's route middleware aliases. * - * These middleware may be assigned to groups or used individually. - * - * @var array + * @var array */ - protected $routeMiddleware = [ + protected $middlewareAliases = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, '2fa' => \App\Http\Middleware\MiddleGoogle2FA::class, diff --git a/app/Http/Middleware/AuthGoogle2FA.php b/app/Http/Middleware/AuthGoogle2FA.php deleted file mode 100644 index 37d9cb1..0000000 --- a/app/Http/Middleware/AuthGoogle2FA.php +++ /dev/null @@ -1,24 +0,0 @@ -init($request); - - if(!Auth::user()->isGoogle2Fa()){ - return $AuthGoogle2FA->makeActiveOneTimePasswordResponse(); - } - if ($AuthGoogle2FA->isAuthenticated()) { - return $next($request); - } - return $AuthGoogle2FA->makeRequestOneTimePasswordResponse(); - } -} - diff --git a/app/Http/Middleware/Google2FA.php b/app/Http/Middleware/Google2FA.php deleted file mode 100644 index 1bf49af..0000000 --- a/app/Http/Middleware/Google2FA.php +++ /dev/null @@ -1,24 +0,0 @@ -init($request); - - if(!Auth::user()->isGoogle2Fa()){ - return $AuthGoogle2FA->makeActiveOneTimePasswordResponse(); - } - if ($AuthGoogle2FA->isAuthenticated()) { - return $next($request); - } - return $AuthGoogle2FA->makeRequestOneTimePasswordResponse(); - } -} - diff --git a/app/Http/Middleware/Google2FAAuth.php b/app/Http/Middleware/Google2FAAuth.php deleted file mode 100644 index 15b67db..0000000 --- a/app/Http/Middleware/Google2FAAuth.php +++ /dev/null @@ -1,25 +0,0 @@ -boot($request); - dd(Auth::user()->isGoogle2Fa()); - if(Auth::user()->isGoogle2Fa()){ - - } - if ($authenticator->isAuthenticated()) { - return $next($request); - } - - return $authenticator->makeRequestOneTimePasswordResponse(); - } -} - diff --git a/app/Http/Middleware/MiddleGoogle2FA.php b/app/Http/Middleware/MiddleGoogle2FA.php index 42c3334..f6ecfdc 100644 --- a/app/Http/Middleware/MiddleGoogle2FA.php +++ b/app/Http/Middleware/MiddleGoogle2FA.php @@ -11,7 +11,6 @@ class MiddleGoogle2FA public function handle($request, Closure $next) { $AuthGoogle2FA = app(AuthGoogle2FA::class)->init($request); - if(!Auth::user()->isGoogle2Fa()){ \App\Services\MyGoogle2FA::logout(); return $AuthGoogle2FA->makeActiveOneTimePasswordResponse(); diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php index 7daf51f..c05530f 100755 --- a/app/Http/Middleware/TrustProxies.php +++ b/app/Http/Middleware/TrustProxies.php @@ -2,8 +2,8 @@ namespace App\Http\Middleware; +use Illuminate\Http\Middleware\TrustProxies as Middleware; use Illuminate\Http\Request; -use Fideloper\Proxy\TrustProxies as Middleware; class TrustProxies extends Middleware { @@ -19,5 +19,11 @@ class TrustProxies extends Middleware * * @var int */ - protected $headers = Request::HEADER_X_FORWARDED_ALL; + protected $headers = + Request::HEADER_X_FORWARDED_FOR | + Request::HEADER_X_FORWARDED_HOST | + Request::HEADER_X_FORWARDED_PORT | + Request::HEADER_X_FORWARDED_PROTO | + Request::HEADER_X_FORWARDED_PREFIX | + Request::HEADER_X_FORWARDED_AWS_ELB; } diff --git a/app/Services/CreateCouponPDF.php b/app/Libraries/CreateCouponPDF.php similarity index 99% rename from app/Services/CreateCouponPDF.php rename to app/Libraries/CreateCouponPDF.php index 5f51beb..d4b06b2 100644 --- a/app/Services/CreateCouponPDF.php +++ b/app/Libraries/CreateCouponPDF.php @@ -1,8 +1,9 @@ view = $view; + $this->disk = $disk; + $this->prepath = Storage::disk($disk)->path(''); + + } + + public function create($data, $name='test.pdf', $output='stream', $path = false){ + + header('Content-type: text/html; charset=UTF-8') ;//chrome + //dd($data); + + $pdf = app('dompdf.wrapper'); + $pdf->getDomPDF()->set_option("enable_php", true); + $pdf->loadView($this->view, $data); + $pdf->setPaper('A4', 'portrait'); + + if($output === 'stream'){ + //file??? + return $pdf->stream($name); + } + if($output === 'download'){ + //download + return $pdf->download($name); + } + + if($output === 'save'){ + if($path){ + $pdf->save($path.$name); + return $path.$name; + } + } + } + + public function merger($dir, $filename, $template){ + $pdfMerger = new MyPDFMerger(); + $pdfMerger->addPDF($this->prepath.$dir.$filename); + $file = $pdfMerger->myMerge('string', $filename, $template); + Storage::disk($this->disk)->put($dir.$filename, $file); + } + + public function setPrePath($path){ + $this->prepath = $path; + } + +} +?> diff --git a/app/Services/CreatePDF.php b/app/Libraries/CreatePDFCoupon.php similarity index 81% rename from app/Services/CreatePDF.php rename to app/Libraries/CreatePDFCoupon.php index baf5be7..b5d450c 100644 --- a/app/Services/CreatePDF.php +++ b/app/Libraries/CreatePDFCoupon.php @@ -1,11 +1,11 @@ getDomPDF()->set_option("enable_php", true); $pdf->loadView($this->view, $data); - $pdf->setPaper('A4', 'portrait'); + $customPaper = array(0, 0, 595.28, 283,47); + $pdf->setPaper($customPaper, 'portrait'); + // $pdf->setPaper('A4', 'portrait'); if($output === 'stream'){ return $pdf->stream($name); diff --git a/app/Libraries/MyPDFMerger.php b/app/Libraries/MyPDFMerger.php new file mode 100644 index 0000000..419ec53 --- /dev/null +++ b/app/Libraries/MyPDFMerger.php @@ -0,0 +1,190 @@ +_rewritepages($pages); + } + + $this->_files[] = array($filepath, $pages); + } else { + throw new \exception("Could not locate PDF on '$filepath'"); + } + + return $this; + } + + + public function myMerge($outputmode = 'browser', $outputpath = 'newfile.pdf', $theme = false) + { + //$theme = false; + if (!isset($this->_files) || !is_array($this->_files)): throw new \exception("No PDFs to merge."); + endif; + + $fpdi = new \setasign\Fpdi\Fpdi(); + $first = 1; + + + //merger operations + foreach ($this->_files as $file) { + $filename = $file[0]; + $filepages = $file[1]; + + + $count = $fpdi->setSourceFile($filename); + + //add the pages + if ($filepages == 'all') { + for ($i = 1; $i <= $count; $i++) { + $count = $fpdi->setSourceFile($filename); + $template = $fpdi->importPage($i); + $size = $fpdi->getTemplateSize($template); + $orientation = ($size['height'] > $size['width']) ? 'P' : 'L'; + $fpdi->AddPage($orientation, array($size['width'], $size['height'])); + if ($theme) { + $fpdi->setSourceFile(__DIR__ . '/../../public/pdf/' . $theme . '-' . $first . '.pdf'); + if ($first == 1) { + $first = 2; + } + $backId = $fpdi->importPage(1); + $fpdi->useTemplate($backId); + } + $fpdi->useTemplate($template); + } + } else { + foreach ($filepages as $page) { + $count = $fpdi->setSourceFile($filename); + if (!$template = $fpdi->importPage($page)): throw new \exception("Could not load page '$page' in PDF '$filename'. Check that the page exists."); + endif; + $size = $fpdi->getTemplateSize($template); + $orientation = ($size['h'] > $size['w']) ? 'P' : 'L'; + + $fpdi->AddPage($orientation, array($size['w'], $size['h'])); + if ($theme) { + $fpdi->setSourceFile(__DIR__ . '/../../public/pdf/' . $theme . '-' . $first . '.pdf'); + if ($first == 1) { + $first = 2; + } + $backId = $fpdi->importPage(1); + $fpdi->useTemplate($backId); + } + + $fpdi->useTemplate($template); + } + } + //after first file (invoice) on bpaper + $slug = false; + } + + //output operations + $mode = $this->_switchmode($outputmode); + + if ($mode == 'S') { + return $fpdi->Output($outputpath, 'S'); + } else { + if ($fpdi->Output($outputpath, $mode) == '') { + return true; + } else { + throw new \exception("Error outputting PDF to '$outputmode'."); + return false; + } + } + } + + /** + * FPDI uses single characters for specifying the output location. Change our more descriptive string into proper format. + * @param $mode + * @return Character + */ + private function _switchmode($mode) + { + switch (strtolower($mode)) { + case 'download': + return 'D'; + break; + case 'browser': + return 'I'; + break; + case 'file': + return 'F'; + break; + case 'string': + return 'S'; + break; + default: + return 'I'; + break; + } + } + + /** + * Takes our provided pages in the form of 1,3,4,16-50 and creates an array of all pages + * @param $pages + * @return array + * @throws exception + */ + private function _rewritepages($pages) + { + $pages = str_replace(' ', '', $pages); + $part = explode(',', $pages); + + //parse hyphens + foreach ($part as $i) { + $ind = explode('-', $i); + + if (count($ind) == 2) { + $x = $ind[0]; //start page + $y = $ind[1]; //end page + + if ($x > $y): throw new \exception("Starting page, '$x' is greater than ending page '$y'."); + return false; + endif; + + //add middle pages + while ($x <= $y): $newpages[] = (int)$x; + $x++; + endwhile; + } else { + $newpages[] = (int)$ind[0]; + } + } + + return $newpages; + } +} + + +/* +$pdf = new PDFMerger; + +$pdf->addPDF('samplepdfs/one.pdf', '1, 3, 4') + ->addPDF('samplepdfs/two.pdf', '1-2') + ->addPDF('samplepdfs/three.pdf', 'all') + ->merge('file', 'samplepdfs/TEST2.pdf'); + + //REPLACE 'file' WITH 'browser', 'download', 'string', or 'file' for output options + //You do not need to give a file path for browser, string, or download - just the name. +*/ \ No newline at end of file diff --git a/app/Mail/MailSendFeWoInfo.php b/app/Mail/MailSendFeWoInfo.php index d026520..b7f5182 100644 --- a/app/Mail/MailSendFeWoInfo.php +++ b/app/Mail/MailSendFeWoInfo.php @@ -14,12 +14,15 @@ class MailSendFeWoInfo extends Mailable protected $travel_user_booking_fewo; public $subject; + public $files; - public function __construct(TravelUserBookingFewo $travel_user_booking_fewo) + public function __construct(TravelUserBookingFewo $travel_user_booking_fewo, $files = []) { $this->travel_user_booking_fewo = $travel_user_booking_fewo; $this->subject = __('STERN TOURS Anreiseinfo FEWO'); + $this->files = $files; + } public function build() @@ -40,18 +43,33 @@ class MailSendFeWoInfo extends Mailable 'mine' => 'application/pdf', ); - return $this->view('emails.info') + $message = $this->view('emails.info') ->with([ 'salutation' => $salutation, 'copy1line' => $this->travel_user_booking_fewo->info_mail_text, 'copy2line' => "", 'greetings' => __('Best regards'), 'model' => $this->travel_user_booking_fewo, - ]) - ->attach($file1['path'], [ - 'as' => $file1['name'], - 'mime' => $file1['mine'], - ]) - ; + ]); + $message->attach($file1['path'], [ + 'as' => $file1['name'], + 'mime' => $file1['mine'], + ]); + + foreach ($this->files as $file) { + $message->attach($file->getPath(),[ + 'as' => $file->original_name, + 'mime' => $file->mine, + ]); // attach each file + } + + return $message; } -} \ No newline at end of file + +} + + +//path = \Storage::disk('lead')->path($this->dir.$this->filename); +//name = +//'mine' => 'application/pdf', + diff --git a/app/Models/Account.php b/app/Models/Account.php index 2a0f760..3cd9e4d 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -21,10 +21,10 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @method static bool|null restore() * @method static \Illuminate\Database\Query\Builder|\App\Models\Account withTrashed() * @method static \Illuminate\Database\Query\Builder|\App\Models\Account withoutTrashed() - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Account newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Account newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Account query() + * @mixin \Eloquent */ class Account extends Model { @@ -32,7 +32,10 @@ class Account extends Model use SoftDeletes; - protected $dates = ['deleted_at']; + protected $casts = [ + 'deleted_at' => 'datetime', + ]; + public function user() diff --git a/app/Models/Airline.php b/app/Models/Airline.php index b83cf55..fc4dd1c 100644 --- a/app/Models/Airline.php +++ b/app/Models/Airline.php @@ -30,13 +30,13 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Airline whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Airline whereNameFull($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Airline whereUpdatedAt($value) - * @mixin \Eloquent * @property string|null $flight_info * @property string|null $check_in * @property string|null $baggage * @method static \Illuminate\Database\Eloquent\Builder|Airline whereBaggage($value) * @method static \Illuminate\Database\Eloquent\Builder|Airline whereCheckIn($value) * @method static \Illuminate\Database\Eloquent\Builder|Airline whereFlightInfo($value) + * @mixin \Eloquent */ class Airline extends Model { diff --git a/app/Models/Airport.php b/app/Models/Airport.php new file mode 100644 index 0000000..84ebe91 --- /dev/null +++ b/app/Models/Airport.php @@ -0,0 +1,54 @@ + 'bool' + ]; + + protected $fillable = [ + 'code', + 'name', + 'city', + 'country', + 'active' + ]; +} diff --git a/app/Models/AnswerQuestion.php b/app/Models/AnswerQuestion.php index 666041f..96e6580 100644 --- a/app/Models/AnswerQuestion.php +++ b/app/Models/AnswerQuestion.php @@ -32,12 +32,12 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion whereQuestion($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion whereQuestionText($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion whereUpdatedAt($value) - * @mixin \Eloquent * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentFaq[] $iq_content_faq * @property-read int|null $iq_content_faq_count * @property int|null $i_q_content_category_id * @property-read \App\Models\IQContentCategory|null $iq_content_category * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\AnswerQuestion whereIQContentCategoryId($value) + * @mixin \Eloquent */ class AnswerQuestion extends Model { diff --git a/app/Models/Arrangement.php b/app/Models/Arrangement.php index cda2ba6..b2111d0 100644 --- a/app/Models/Arrangement.php +++ b/app/Models/Arrangement.php @@ -40,6 +40,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement whereTypeId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement whereTypeS($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Arrangement whereViewPosition($value) + * @property-read \App\Models\ArrangementType|null $arrangement_type * @mixin \Eloquent */ class Arrangement extends Model @@ -54,14 +55,12 @@ class Arrangement extends Model 'view_position' => 'int', 'booking_id' => 'int', 'type_id' => 'int', - 'in_pdf' => 'bool' + 'in_pdf' => 'bool', + 'state' => 'datetime', + 'begin' => 'datetime', + 'end' => 'datetime', ]; - protected $dates = [ - 'state', - 'begin', - 'end' - ]; protected $fillable = [ 'template_id', @@ -85,4 +84,52 @@ class Arrangement extends Model { return $this->belongsTo(ArrangementTemplate::class, 'template_id'); } + + public function arrangement_type() + { + return $this->belongsTo(ArrangementType::class, 'type_id'); + } + + public function getDataAsMap() + { + $rawData = $this->attributes['data_s']; + $data = json_decode('{'. $rawData .'}', true); + if (is_array($data)) + { + return $data; + } + $entries = preg_split("/[\r\n;]+\s*/", $rawData, -1, PREG_SPLIT_NO_EMPTY); + $ret = array(); + foreach ($entries as $entry) + { + $map = preg_split('/:\s*/', $entry, -1, PREG_SPLIT_NO_EMPTY); + if (count($map) == 2) + { + $ret[$map[0]] = $map[1]; + } + } + return $ret; + } + + public function getDataS() + { + $rawData = $this->attributes['data_s']; + $data = json_decode('{'. $rawData .'}', true); + if (is_array($data)) + { + $str = ''; + $i = 0; + foreach ($data as $k => $v) + { + if (++$i > 0) + { + $str .= ''; + } + $str .= $k .' '. $v; + } + return $str; + } + return $rawData; + } + } diff --git a/app/Models/Booking.php b/app/Models/Booking.php index 7ae553e..f3bf11c 100644 --- a/app/Models/Booking.php +++ b/app/Models/Booking.php @@ -9,6 +9,7 @@ namespace App\Models; use Carbon\Carbon; use App\Services\Util; use App\Services\Passolution; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Collection; @@ -18,7 +19,7 @@ use Illuminate\Database\Eloquent\Collection; * @property int $id * @property Carbon $booking_date * @property int $customer_id - * @property int $lead_id + * @property int $inquiry_id * @property bool $new_drafts * @property int $sf_guard_user_id * @property int $branch_id @@ -66,6 +67,7 @@ use Illuminate\Database\Eloquent\Collection; * @property Collection|BookingInvoice[] $booking_invoices * @property Collection|BookingServiceItem[] $booking_service_items * @property Collection|BookingVoucher[] $booking_vouchers + * @property Collection|BookingVoucherAgency[] $booking_voucher_agencys * @property Collection|Coupon[] $coupons * @property Collection|InsuranceCertificate[] $insurance_certificates * @property Collection|Participant[] $participants @@ -116,7 +118,6 @@ use Illuminate\Database\Eloquent\Collection; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereTravelagendaId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Booking whereWebsiteId($value) - * @mixin \Eloquent * @property-read int|null $service_provider_entries_count * @property float|null $canceled * @property float|null $price_canceled @@ -155,6 +156,7 @@ use Illuminate\Database\Eloquent\Collection; * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\BookingStorno[] $booking_stornos * @property-read int|null $booking_stornos_count * @property-read int|null $booking_vouchers_count + * @property-read int|null $booking_voucher_agencys_count * @property-read int|null $travel_insurances_count * @property string|null $origin_start_date * @property \Illuminate\Support\Carbon|null $lawyer_date @@ -188,96 +190,113 @@ use Illuminate\Database\Eloquent\Collection; * @property-read \App\Models\BookingStorno|null $booking_strono * @method static \Illuminate\Database\Eloquent\Builder|Booking whereAirlineIds($value) * @method static \Illuminate\Database\Eloquent\Builder|Booking whereParticipantPass($value) + * @property int|null $insurance_offer + * @property int|null $airport_id + * @property-read \App\Models\Airport|null $airport + * @property-read Collection $booking_documents + * @property-read int|null $booking_documents_count + * @property-read Collection $customer_mails_reverse + * @property-read int|null $customer_mails_reverse_count + * @property-read \App\Models\Salutation|null $participant_salutation + * @method static \Illuminate\Database\Eloquent\Builder|Booking whereAirportId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Booking whereInsuranceOffer($value) + * @mixin \Eloquent */ class Booking extends Model { + use HasFactory; + protected $connection = 'mysql'; protected $table = 'booking'; - protected $casts = [ - 'customer_id' => 'int', - 'lead_id' => 'int', - 'new_drafts' => 'bool', - 'sf_guard_user_id' => 'int', - 'branch_id' => 'int', - 'service_fee' => 'float', - 'travel_country_id' => 'int', - 'travel_category_id' => 'int', - 'pax' => 'int', - 'coupon_id' => 'int', - 'website_id' => 'int', - 'participant_salutation_id' => 'int', - 'travel_company_id' => 'int', - 'travel_documents' => 'bool', - 'price' => 'float', - 'price_total' => 'float', - 'deposit_total' => 'float', - 'final_payment' => 'float', - 'travelagenda_id' => 'int', + protected $casts = [ + 'customer_id' => 'int', + 'inquiry_id' => 'int', + 'offer_id' => 'int', + 'new_drafts' => 'bool', + 'sf_guard_user_id' => 'int', + 'branch_id' => 'int', + 'airport_id' => 'int', + 'service_fee' => 'float', + 'travel_country_id' => 'int', + 'travel_category_id' => 'int', + 'pax' => 'int', + 'coupon_id' => 'int', + 'website_id' => 'int', + 'participant_salutation_id' => 'int', + 'travel_company_id' => 'int', + 'travel_documents' => 'bool', + 'price' => 'float', + 'price_total' => 'float', + 'deposit_total' => 'float', + 'final_payment' => 'float', + 'travelagenda_id' => 'int', 'paying_out' => 'int', 'hold' => 'int', //'airline_id' => 'int', 'refund' => 'int', 'xx_tkt' => 'int', + 'insurance_offer' => 'int', 'is_rail_fly' => 'bool', 'comfort' => 'bool', 'airline_ids' => 'array', - 'participant_pass' => 'bool' - ]; - - protected $dates = [ - 'booking_date', - 'start_date', - 'end_date', - 'participant_birthdate', - 'final_payment_date', - 'refund_date', - 'lawyer_date', - 'xx_tkt_date' - + 'participant_pass' => 'bool', + 'booking_date' => 'datetime', + 'start_date' => 'datetime', + 'end_date' => 'datetime', + 'participant_birthdate' => 'datetime', + 'final_payment_date' => 'datetime', + 'refund_date' => 'datetime', + 'lawyer_date' => 'datetime', + 'xx_tkt_date' => 'datetime', ]; - protected $fillable = [ - 'booking_date', - 'customer_id', - 'lead_id', - 'new_drafts', - 'sf_guard_user_id', - 'branch_id', - 'service_fee', - 'travel_country_id', - 'travel_category_id', - 'pax', - 'coupon_id', - 'title', + + + protected $fillable = [ + 'booking_date', + 'customer_id', + 'inquiry_id', + 'offer_id', + 'new_drafts', + 'sf_guard_user_id', + 'branch_id', + 'service_fee', + 'travel_country_id', + 'travel_category_id', + 'pax', + 'coupon_id', + 'title', 'comfort', - 'start_date', - 'end_date', - 'website_id', - 'travel_number', - 'participant_name', - 'participant_firstname', - 'participant_birthdate', - 'participant_salutation_id', + 'start_date', + 'end_date', + 'website_id', + 'travel_number', + 'participant_name', + 'participant_firstname', + 'participant_birthdate', + 'participant_salutation_id', 'participant_pass', 'nationality_id', - 'ev_number', - 'merlin_knr', - 'merlin_order_number', - 'travel_company_id', - 'travel_documents', - 'price', + 'ev_number', + 'merlin_knr', + 'merlin_order_number', + 'travel_company_id', + 'travel_documents', + 'price', 'price_canceled', - 'price_total', + 'price_total', 'price_balance', - 'deposit_total', - 'final_payment', - 'final_payment_date', - 'travelagenda_id', + 'deposit_total', + 'final_payment', + 'final_payment_date', + 'travelagenda_id', + 'insurance_offer', 'paying_out', 'paying_out_status', //'airline_id', + 'airport_id', 'airline_ids', 'refund', 'refund_date', @@ -288,10 +307,10 @@ class Booking extends Model 'filekey', 'is_rail_fly', 'notice', - ]; + ]; - public static $paying_out_types = [ - 0 => '-', + public static $paying_out_types = [ + 0 => '-', 1 => 'Gutschein', 2 => 'Auszahlung', 3 => 'Umbuchung', @@ -311,6 +330,12 @@ class Booking extends Model 2 => 'erledigt', ]; + public static $insurance_offer_types = [ + 0 => '-', + 1 => 'Nein, keine Reiseversicherung gewünscht', + 2 => 'Ja, ich wünsche ein Reiseversicherungsangebot' + ]; + public static $paying_out_status_types = [ 0 => '-', 1 => 'offen', @@ -323,8 +348,8 @@ class Booking extends Model ]; public static $customer_mail_dirs = [ - 11 => ['name' => 'Entwürfe', 'icon'=>'ion-md-create'], - 12 => ['name' => 'Papierkorb', 'icon'=>'ion-md-trash'], + 11 => ['name' => 'Entwürfe', 'icon' => 'ion-md-create'], + 12 => ['name' => 'Papierkorb', 'icon' => 'ion-md-trash'], ]; protected $paying_out_colors = [ 0 => '', @@ -355,42 +380,67 @@ class Booking extends Model protected $passolutionPDFs = []; - /*public function branch() + /*public function branch() { return $this->belongsTo(Branch::class); }*/ - public function coupon() - { - return $this->belongsTo(Coupon::class); - } + public function coupon() + { + return $this->belongsTo(Coupon::class); + } - public function customer() - { - return $this->belongsTo(Customer::class); - } + public function customer() + { + return $this->belongsTo(Customer::class); + } - public function lead() - { - return $this->belongsTo(Lead::class); - } + /** + * Lead/Inquiry der Buchung. + * FK-Spalte `inquiry_id` (vormals `lead_id` — Modul 3 Phase 2 Rename). + * Methodenname bleibt `lead()` für Legacy-Kompatibilität; {@see self::inquiry()} + * ist der fachlich korrekte Alias und sollte in neuem Code verwendet werden. + */ + public function lead() + { + return $this->belongsTo(Lead::class, 'inquiry_id'); + } - public function sf_guard_user() - { - return $this->belongsTo(SfGuardUser::class); - } + public function inquiry() + { + return $this->belongsTo(Lead::class, 'inquiry_id'); + } - public function travel_category() - { - return $this->belongsTo(TravelCategory::class); - } + /** + * Angebot, aus dem diese Buchung entstanden ist (Modul 6, Ticket B8). + * Nullable — nicht jede Buchung hat einen Angebots-Vorlauf. + */ + public function offer() + { + return $this->belongsTo(\App\Models\Offer::class); + } - public function travel_company() - { - return $this->belongsTo(TravelCompany::class); - } + public function sf_guard_user() + { + return $this->belongsTo(SfGuardUser::class); + } - /* public function travel_country() + public function travel_category() + { + return $this->belongsTo(TravelCategory::class); + } + + public function travel_company() + { + return $this->belongsTo(TravelCompany::class); + } + + public function airport() + { + return $this->belongsTo(Airport::class, 'airport_id'); + } + + /* public function travel_country() { return $this->belongsTo(TravelCountry::class, 'travel_country_id', 'crm_id'); }*/ @@ -401,59 +451,64 @@ class Booking extends Model return $this->belongsTo(\App\Models\Sym\TravelCountry::class, 'travel_country_id', 'id'); } - public function travel_agenda() - { - return $this->belongsTo(TravelAgenda::class, 'travelagenda_id'); - } - - /*public function airline() + public function travel_agenda() + { + return $this->belongsTo(TravelAgenda::class, 'travelagenda_id'); + } + + /*public function airline() { return $this->belongsTo(Airline::class, 'airline_id'); } */ - public function arrangements() - { - return $this->hasMany(Arrangement::class); - } + public function arrangements() + { + return $this->hasMany(Arrangement::class)->orderBy('view_position', 'DESC'); + } - public function arrangement_types() - { - return $this->hasMany(ArrangementType::class); - } + public function arrangement_types() + { + return $this->hasMany(ArrangementType::class); + } - public function booking_draft_items() - { - return $this->hasMany(BookingDraftItem::class)->orderBy('pos', 'ASC'); - } + public function booking_draft_items() + { + return $this->hasMany(BookingDraftItem::class)->orderBy('pos', 'ASC'); + } - public function booking_service_items() - { - return $this->hasMany(BookingServiceItem::class); - } + public function booking_service_items() + { + return $this->hasMany(BookingServiceItem::class); + } - public function coupons() - { - return $this->hasMany(Coupon::class); - } + public function coupons() + { + return $this->hasMany(Coupon::class); + } - public function insurance_certificates() - { - return $this->hasMany(InsuranceCertificate::class); - } + public function insurance_certificates() + { + return $this->hasMany(InsuranceCertificate::class); + } - public function participants() - { - return $this->hasMany(Participant::class); - } + public function participants() + { + return $this->hasMany(Participant::class); + } - public function service_provider_entries() - { - return $this->hasMany(ServiceProviderEntry::class); - } + public function participant_salutation() + { + return $this->belongsTo(Salutation::class, 'participant_salutation_id'); + } + + public function service_provider_entries() + { + return $this->hasMany(ServiceProviderEntry::class); + } public function customer_mails() @@ -461,6 +516,11 @@ class Booking extends Model return $this->hasMany(CustomerMail::class, 'booking_id', 'id'); } + public function customer_mails_reverse() + { + return $this->hasMany(CustomerMail::class, 'booking_id', 'id')->orderBy('id', 'DESC'); + } + public function customer_mails_sent_at() { return $this->hasMany(CustomerMail::class, 'booking_id')->orderBy('sent_at', 'ASC'); @@ -482,9 +542,9 @@ class Booking extends Model } public function booking_stornos() - { - return $this->hasMany(BookingStorno::class); - } + { + return $this->hasMany(BookingStorno::class); + } /*public function booking_invoices() { @@ -492,20 +552,30 @@ class Booking extends Model }*/ public function booking_vouchers() - { - return $this->hasMany(BookingVoucher::class); - } + { + return $this->hasMany(BookingVoucher::class); + } - public function travel_insurances() - { - return $this->hasMany(TravelInsurance::class); - } + public function booking_voucher_agencys() + { + return $this->hasMany(BookingVoucherAgency::class); + } + + public function travel_insurances() + { + return $this->hasMany(TravelInsurance::class); + } public function booking_files() { return $this->hasMany(BookingFile::class); } + public function booking_documents() + { + return $this->hasMany(BookingDocument::class, 'booking_id'); + } + public function booking_country_services() { return $this->hasMany(BookingCountryService::class, 'booking_id'); @@ -545,17 +615,17 @@ class Booking extends Model } public function booking_strono() - { - return $this->hasOne(BookingStorno::class); - } - + { + return $this->hasOne(BookingStorno::class); + } + public function getAirlinesAsNames() { $ret = ""; - if($this->airline_ids){ - foreach($this->airline_ids as $airline_id){ - if($Airline = Airline::find($airline_id)){ - $ret .= $Airline->name." "; + if ($this->airline_ids) { + foreach ($this->airline_ids as $airline_id) { + if ($Airline = Airline::find($airline_id)) { + $ret .= $Airline->name . " "; } } } @@ -563,13 +633,13 @@ class Booking extends Model } public function getAirlinesIds() { - if($this->airline_ids){ + if ($this->airline_ids) { return implode('', $this->airline_ids); } return ""; - } - public function hasBookingServicesUnchecked(){ + public function hasBookingServicesUnchecked() + { $country_services = true; $provider_services = true; $company_services = true; @@ -578,101 +648,102 @@ class Booking extends Model $has_provider_services = false; $has_company_services = false; - if($this->travel_country){ - foreach($this->travel_country->getContactLandsModels() as $TravelCountry){ - if($TravelCountry->stern_travel_country){ - if($TravelCountry->stern_travel_country->travel_country_services->count()){ + if ($this->travel_country) { + foreach ($this->travel_country->getContactLandsModels() as $TravelCountry) { + if ($TravelCountry->stern_travel_country) { + if ($TravelCountry->stern_travel_country->travel_country_services->count()) { $has_country_services = true; } } } } - - if($has_country_services && !$this->booking_country_services->count() || $this->booking_country_services_checked->count() || - ($this->booking_country_services->count() !== TravelCountryService::where('crm_travel_country_id', '=', $this->travel_country_id)->count())){ - $country_services = false; + if ( + $has_country_services && !$this->booking_country_services->count() || $this->booking_country_services_checked->count() || + ($this->booking_country_services->count() !== TravelCountryService::where('crm_travel_country_id', '=', $this->travel_country_id)->count()) + ) { + $country_services = false; } - foreach($this->service_provider_entries as $service_provider_entry){ - if($service_provider_entry->service_provider && $service_provider_entry->service_provider->service_provider_services->count()){ + foreach ($this->service_provider_entries as $service_provider_entry) { + if ($service_provider_entry->service_provider && $service_provider_entry->service_provider->service_provider_services->count()) { $has_provider_services = true; } } - if($has_provider_services && !$this->booking_provider_services->count() || $this->booking_provider_services_checked->count()){ - if($this->service_provider_entries->count()){ + if ($has_provider_services && !$this->booking_provider_services->count() || $this->booking_provider_services_checked->count()) { + if ($this->service_provider_entries->count()) { $provider_services = false; } } - foreach($this->booking_service_items as $booking_service_item){ - if($booking_service_item->travel_company && $booking_service_item->travel_company->travel_company_services->count()){ + foreach ($this->booking_service_items as $booking_service_item) { + if ($booking_service_item->travel_company && $booking_service_item->travel_company->travel_company_services->count()) { $has_company_services = true; } } - if($has_company_services && !$this->booking_company_services->count() || $this->booking_company_services_checked->count()){ - if($this->booking_service_items->count()){ - $company_services = false; - + if ($has_company_services && !$this->booking_company_services->count() || $this->booking_company_services_checked->count()) { + if ($this->booking_service_items->count()) { + $company_services = false; } } - if(!$has_country_services && !$has_provider_services && !$has_company_services){ + if (!$has_country_services && !$has_provider_services && !$has_company_services) { return false; } - if($country_services && $provider_services && $company_services){ + if ($country_services && $provider_services && $company_services) { return true; - } return false; } - public function hasBookingParticipantsPass(){ - if($this->participant_firstname){ - if(!$this->participant_pass){ + public function hasBookingParticipantsPass() + { + if ($this->participant_firstname) { + if (!$this->participant_pass) { return false; } } - if($this->participants->count()){ - foreach($this->participants as $participant){ - if(!$participant->participant_pass){ + if ($this->participants->count()) { + foreach ($this->participants as $participant) { + if (!$participant->participant_pass) { return false; } } } return true; } - - public function getPassolutionPDF($create = false, $resync = false){ + + public function getPassolutionPDF($create = false, $resync = false) + { $nats = []; - if(count($this->passolutionPDFs)){ - return $this->passolutionPDFs; + if (count($this->passolutionPDFs)) { + return $this->passolutionPDFs; } - if(!$this->travel_country){ - return $this->passolutionPDFs; + if (!$this->travel_country) { + return $this->passolutionPDFs; } - + $destco = $this->travel_country->destco; - if($this->travel_nationality){ + if ($this->travel_nationality) { $nats[$this->travel_nationality->nat] = $this->travel_nationality->nat; } - if($this->participants->count()){ - foreach ($this->participants as $participant){ - if($participant->travel_nationality){ + if ($this->participants->count()) { + foreach ($this->participants as $participant) { + if ($participant->travel_nationality) { $nats[$participant->travel_nationality->nat] = $participant->travel_nationality->nat; } } } - - if(empty($nats)){ - $nats['de'] = 'de'; - } - foreach ($nats as $nat){ + + if (empty($nats)) { + $nats['de'] = 'de'; + } + foreach ($nats as $nat) { $data = [ 'nat' => $nat, 'destco' => $destco, @@ -681,11 +752,12 @@ class Booking extends Model $passolution = new Passolution($data); $this->passolutionPDFs[] = $passolution->findOrCreatePDF($create, $resync); } - return $this->passolutionPDFs; + return $this->passolutionPDFs; } - public function resyncPassolutionPDF(){ - return $this->getPassolutionPDF(true, true); + public function resyncPassolutionPDF() + { + return $this->getPassolutionPDF(true, true); } public function calculate_price_total() @@ -695,31 +767,38 @@ class Booking extends Model $travel_price_children = 0; $total_adult = 0; $total_children = 0; + $travel_adult = 0; + $travel_children = 0; foreach ($this->booking_draft_items as $booking_draft_item) { - //24 Rundreise - if($booking_draft_item->draft_type_id == 24){ + //24 Rundreise ist der Grundeintrag für die Reise + if ($booking_draft_item->draft_type_id == 24) { $travel_draft_item = $booking_draft_item; continue; } $prices = $booking_draft_item->getItemPrice(); - //Grundpreis Reise - if($booking_draft_item->draft_type_id == 30){ + //Grundpreis Reise //pro Persopn im Zimmer + if ($booking_draft_item->draft_type_id == 30) { $travel_price_adult += $prices['adult']; $travel_price_children += $prices['children']; + $travel_adult += $booking_draft_item->adult; + $travel_children += $booking_draft_item->children; } $total_adult += $prices['adult']; $total_children += $prices['children']; } - if($travel_draft_item){ + + + if ($travel_draft_item) { $travel_draft_item->setPriceAdultRaw($travel_price_adult); $travel_draft_item->setPriceChildrenRaw($travel_price_children); + $travel_draft_item->adult = $travel_adult; + $travel_draft_item->children = $travel_children; $travel_draft_item->save(); } - $this->price = $total_adult + $total_children; + $this->price_total = $this->getPriceRaw() + $this->getServiceTotal(true); $this->save(); - } public function getPriceAttribute() @@ -790,7 +869,7 @@ class Booking extends Model public function findBeforeDraftItemRelation($reid) { $before = false; - foreach($this->booking_draft_items as $booking_draft_items) { + foreach ($this->booking_draft_items as $booking_draft_items) { if ($booking_draft_items->id == $reid) { return $before; } @@ -802,8 +881,8 @@ class Booking extends Model public function findAfterDraftItemRelation($reid) { $next = false; - foreach($this->booking_draft_items as $booking_draft_items) { - if($next){ + foreach ($this->booking_draft_items as $booking_draft_items) { + if ($next) { return $booking_draft_items; } if ($booking_draft_items->id == $reid) { @@ -813,41 +892,54 @@ class Booking extends Model return false; } - public function getStartDateFormat(){ - if(!$this->attributes['start_date']){ return ""; } + public function getStartDateFormat() + { + if (!$this->attributes['start_date']) { + return ""; + } return Carbon::parse($this->attributes['start_date'])->format(\Util::formatDateDB()); } - public function getEndDateFormat(){ - if(!$this->attributes['end_date']){ return ""; } + public function getEndDateFormat() + { + if (!$this->attributes['end_date']) { + return ""; + } return Carbon::parse($this->attributes['end_date'])->format(\Util::formatDateDB()); } - public function getBookingDateFormat(){ - if(!$this->attributes['booking_date']){ return ""; } + public function getBookingDateFormat() + { + if (!$this->attributes['booking_date']) { + return ""; + } return Carbon::parse($this->attributes['booking_date'])->format(\Util::formatDateDB()); } - public function getFinalPaymentDateFormat(){ - if(!$this->attributes['final_payment_date']){ return ""; } + public function getFinalPaymentDateFormat() + { + if (!$this->attributes['final_payment_date']) { + return ""; + } return Carbon::parse($this->attributes['final_payment_date'])->format(\Util::formatDateDB()); } - public function isCanceled(){ + public function isCanceled() + { return ($this->attributes['canceled'] !== null); } //erlös #getRevenueFactor - public function proceeds($raw = false){ + public function proceeds($raw = false) + { $proceeds = $this->attributes['price'] - $this->attributes['price_balance'] - $this->getServiceProviderPaymentsFactorTotal(true); return $raw ? $proceeds : Util::_number_format($proceeds); - } public function getServiceTotal($raw = false) { $total = 0; - foreach ($this->booking_service_items as $booking_service_item){ + foreach ($this->booking_service_items as $booking_service_item) { $total += $booking_service_item->getServicePriceRaw(); } return $raw ? $total : Util::_number_format($total); @@ -857,7 +949,7 @@ class Booking extends Model public function getServiceProviderPaymentsFactorTotal($raw = false) { $total = 0; - foreach ($this->service_provider_entries as $entry){ + foreach ($this->service_provider_entries as $entry) { $total += $entry->getAmountRaw() / $entry->getFactortRaw(); } return $raw ? $total : Util::_number_format($total); @@ -866,15 +958,16 @@ class Booking extends Model public function getServiceProviderPaymentsTotal($raw = false) { $total = 0; - foreach ($this->service_provider_entries as $entry){ + foreach ($this->service_provider_entries as $entry) { $total += $entry->getAmountRaw(); } return $raw ? $total : Util::_number_format($total); } - public function getKontoNumber(){ + public function getKontoNumber() + { - switch ($this->ev_number){ + switch ($this->ev_number) { case 'E01': return '4011'; break; @@ -887,40 +980,48 @@ class Booking extends Model case 'E04': return '4014'; break; - } return $this->ev_number; } public function getBookingNumber() { - if ($this->lead) - { + if ($this->lead) { return $this->lead->id; } return null; } - public function getPayingOutType(){ + public function getPayingOutType() + { return isset(self::$paying_out_types[$this->paying_out]) ? self::$paying_out_types[$this->paying_out] : '-'; } - public function getPayingOutStatusType(){ + public function getInsuranceOfferType() + { + return isset(self::$insurance_offer_types[$this->insurance_offer]) ? self::$insurance_offer_types[$this->insurance_offer] : '-'; + } + + public function getPayingOutStatusType() + { return isset(self::$paying_out_status_types[$this->paying_out_status]) ? self::$paying_out_status_types[$this->paying_out_status] : '-'; } - public function getRefundType(){ + public function getRefundType() + { return isset(self::$refund_types[$this->refund]) ? self::$refund_types[$this->refund] : '-'; } - public function getXxTktType(){ + public function getXxTktType() + { return isset(self::$xx_tkt_types[$this->xx_tkt]) ? self::$xx_tkt_types[$this->xx_tkt] : '-'; } - public function getXxTktTypeList(){ - if(isset(self::$xx_tkt_types[$this->xx_tkt])){ - if($this->xx_tkt == 1 && $this->xx_tkt_date){ + public function getXxTktTypeList() + { + if (isset(self::$xx_tkt_types[$this->xx_tkt])) { + if ($this->xx_tkt == 1 && $this->xx_tkt_date) { return Carbon::parse($this->xx_tkt_date)->format('d.m.Y'); } return self::$xx_tkt_types[$this->xx_tkt]; @@ -928,9 +1029,10 @@ class Booking extends Model return "-"; } - public function getRefundTypeList(){ - if(isset(self::$refund_types[$this->refund])){ - if($this->refund == 1 && $this->refund_date){ + public function getRefundTypeList() + { + if (isset(self::$refund_types[$this->refund])) { + if ($this->refund == 1 && $this->refund_date) { return Carbon::parse($this->refund_date)->format('d.m.Y'); } return self::$refund_types[$this->refund]; @@ -938,30 +1040,65 @@ class Booking extends Model return "-"; } - public function getPayingOutColor(){ + public function getPayingOutColor() + { return isset($this->paying_out_colors[$this->paying_out]) ? $this->paying_out_colors[$this->paying_out] : ''; } - public function getPayingOutStatusColor(){ + public function getPayingOutStatusColor() + { return isset($this->paying_out_status_colors[$this->paying_out_status]) ? $this->paying_out_status_colors[$this->paying_out_status] : ''; } - public function getRefundColor(){ + public function getRefundColor() + { return isset($this->refund_colors[$this->refund]) ? $this->refund_colors[$this->refund] : '-'; } - public function getXxTktColor(){ + public function getXxTktColor() + { return isset($this->xx_tkt_colors[$this->xx_tkt]) ? $this->xx_tkt_colors[$this->xx_tkt] : '-'; } - public function countCustomerMailsBy($dir, $subdir=false){ + public function countCustomerMailsBy($dir, $subdir = false) + { - if($dir === 11){ + if ($dir === 11) { return $this->customer_mails->where('draft', true)->where('dir', '!=', 12)->count(); } - if($subdir){ - return $this->customer_mails->where('dir', $dir)->where('subdir', $subdir)->count(); + if ($subdir) { + return $this->customer_mails->where('dir', $dir)->where('subdir', $subdir)->count(); } return $this->customer_mails->where('dir', $dir)->count(); } + + /*DOCUMENTS*/ + + public function hasDocument($identifier) + { + return $this->booking_documents->where('identifier', $identifier)->count() ? true : false; + } + + public function getDocument($identifier) + { + return $this->booking_documents->where('identifier', $identifier)->first(); + } + + public function isDepositPossible($maxIntervalDays = false) + { + $maxIntervalDays = $maxIntervalDays ? $maxIntervalDays : config('booking.max_interval_days'); + $diffInDays = $this->booking_date->diffInDays($this->start_date, false); + return $diffInDays > $maxIntervalDays; + } + + public function getConfirmationDeposit($percentageRate = false) + { + $percentageRate = $percentageRate ? $percentageRate : config('booking.deposit_percentage_rate'); + return ($this->isDepositPossible() ? round($this->getPriceRaw() * $percentageRate / 100) : 0); + } + + public function getConfirmationFinalPayment() + { + return $this->getPriceRaw() - $this->getConfirmationDeposit(); + } } diff --git a/app/Models/BookingConfirmation.php b/app/Models/BookingConfirmation.php index fccce72..bb5e69f 100644 --- a/app/Models/BookingConfirmation.php +++ b/app/Models/BookingConfirmation.php @@ -48,12 +48,10 @@ class BookingConfirmation extends Model 'total' => 'float', 'deposit' => 'float', 'final_payment' => 'float', + 'deposit_payment_date' => 'datetime', + 'final_payment_date' => 'datetime', ]; - protected $dates = [ - 'deposit_payment_date', - 'final_payment_date' - ]; protected $fillable = [ 'booking_id', diff --git a/app/Models/BookingCountryService.php b/app/Models/BookingCountryService.php index da1b92c..f5e03e5 100644 --- a/app/Models/BookingCountryService.php +++ b/app/Models/BookingCountryService.php @@ -28,9 +28,9 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereTravelCountryServiceId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereUpdatedAt($value) - * @mixin \Eloquent * @property int|null $status * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingCountryService whereStatus($value) + * @mixin \Eloquent */ class BookingCountryService extends Model { diff --git a/app/Models/BookingDocument.php b/app/Models/BookingDocument.php new file mode 100644 index 0000000..2f9f830 --- /dev/null +++ b/app/Models/BookingDocument.php @@ -0,0 +1,157 @@ + 'int', + 'customer_id' => 'int', + 'lead_id' => 'int', + 'size' => 'int', + 'data' => 'object', + 'status' => 'int', + 'booking_storno_id' => 'int', + 'coupon_id' => 'int', + 'date' => 'datetime', + ]; + + + protected $fillable = [ + 'booking_id', + 'customer_id', + 'lead_id', + 'coupon_id', + 'booking_storno_id', // + 'identifier', + 'filename', + 'dir', + 'original_name', + 'ext', + 'mine', + 'size', + 'date', + 'data', + 'status' + ]; + /* Je nach identifier können verschiebene stati gesetzt werden + coupon 0 = nicht eingelöst 1 = eingelöst + */ + protected $status_type = [ + 0 => 'offen', + 1 => 'erledigt', + ]; + + + public function booking() + { + return $this->belongsTo(Booking::class); + } + + public function customer() + { + return $this->belongsTo(Customer::class); + } + + public function lead() + { + return $this->belongsTo(Lead::class); + } + + public function coupon_id() + { + return $this->belongsTo(Coupon::class); + } + + public function booking_storno() + { + return $this->belongsTo(BookingStorno::class); + } + + public function getURL($do=false){ + return route('storage_file', [$this->id, 'booking_document', $do]); + } + + public function getPath(){ + return \Storage::disk('public')->path($this->dir.$this->filename); + + } + + public function deleteFile(){ + if(\Storage::disk('public')->exists($this->dir.$this->filename)){ + \Storage::disk('public')->delete($this->dir.$this->filename); + } + } + public function formatBytes($precision = 2) + { + $size = $this->size; + + if ($size > 0) { + $size = (int) $size; + $base = log($size) / log(1024); + $suffixes = array(' bytes', ' KB', ' MB', ' GB', ' TB'); + + return round(pow(1024, $base - floor($base)), $precision) . $suffixes[floor($base)]; + } else { + return $size; + } + } +} diff --git a/app/Models/BookingDraftItem.php b/app/Models/BookingDraftItem.php index f15a40a..02a44e9 100644 --- a/app/Models/BookingDraftItem.php +++ b/app/Models/BookingDraftItem.php @@ -55,7 +55,6 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereTravelClassId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereTravelProgramId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem whereUpdatedAt($value) - * @mixin \Eloquent * @property int|null $fewo_lodging_id * @property float|null $price * @property-read \App\Models\Booking $booking @@ -64,6 +63,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingDraftItem query() + * @mixin \Eloquent */ class BookingDraftItem extends Model { @@ -115,7 +115,7 @@ class BookingDraftItem extends Model return $this->belongsTo('App\Models\DraftType', 'draft_type_id'); } - public function getItemPrice(){ + public function getItemPrice($return = false){ $adult = 0; $children = 0; @@ -138,9 +138,20 @@ class BookingDraftItem extends Model $price = $this->price; } */ - return ['adult'=>$adult, 'children'=>$children]; - } + if($return == 'adult'){ + return $adult; + } + if($return == 'children'){ + return $children; + } + if($return == 'total'){ + return $adult + $children; + } + return ['adult'=>$adult, 'children'=>$children]; + + + } public function getStartDateAttribute(){ return isset($this->attributes['start_date']) ? Carbon::parse($this->attributes['start_date'])->format("d.m.Y") : ''; diff --git a/app/Models/BookingInvoice.php b/app/Models/BookingInvoice.php index 90b33f6..851f4e4 100644 --- a/app/Models/BookingInvoice.php +++ b/app/Models/BookingInvoice.php @@ -48,12 +48,10 @@ class BookingInvoice extends Model 'total' => 'float', 'deposit' => 'float', 'final_payment' => 'float', + 'deposit_payment_date' => 'datetime', + 'final_payment_date' => 'datetime', ]; - protected $dates = [ - 'deposit_payment_date', - 'final_payment_date' - ]; protected $fillable = [ 'booking_id', diff --git a/app/Models/BookingNotice.php b/app/Models/BookingNotice.php index 448e9e1..a889441 100644 --- a/app/Models/BookingNotice.php +++ b/app/Models/BookingNotice.php @@ -52,12 +52,10 @@ class BookingNotice extends Model 'from_user_id' => 'int', 'to_user_id' => 'int', 'show' => 'bool', - 'important' => 'bool' + 'important' => 'bool', + 'edit_at' => 'datetime', ]; - protected $dates = [ - 'edit_at', - ]; protected $fillable = [ 'booking_id', diff --git a/app/Models/BookingServiceItem.php b/app/Models/BookingServiceItem.php index 5972329..41b7937 100644 --- a/app/Models/BookingServiceItem.php +++ b/app/Models/BookingServiceItem.php @@ -55,12 +55,10 @@ class BookingServiceItem extends Model 'service_price' => 'float', 'service_price_refund' => 'float', 'commission' => 'float', - 'is_commission_locked' => 'bool' + 'is_commission_locked' => 'bool', + 'travel_date' => 'datetime', ]; - protected $dates = [ - 'travel_date' - ]; protected $fillable = [ 'booking_id', diff --git a/app/Models/BookingStorno.php b/app/Models/BookingStorno.php index fb62cec..b2f6da3 100644 --- a/app/Models/BookingStorno.php +++ b/app/Models/BookingStorno.php @@ -6,6 +6,7 @@ namespace App\Models; +use App\Services\Util; use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; @@ -35,9 +36,10 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereStornoDate($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereTotal($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereUpdatedAt($value) - * @mixin \Eloquent * @property \Illuminate\Support\Carbon|null $storno_print * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\BookingStorno whereStornoPrint($value) + * @property-read \App\Models\BookingDocument|null $booking_document + * @mixin \Eloquent */ class BookingStorno extends Model { @@ -47,13 +49,11 @@ class BookingStorno extends Model 'booking_id' => 'int', 'total' => 'float', 'storno' => 'float', - 'done' => 'bool' + 'done' => 'bool', + 'storno_date' => 'datetime', + 'storno_print' => 'datetime', ]; - protected $dates = [ - 'storno_date', - 'storno_print' - ]; protected $fillable = [ 'booking_id', @@ -69,4 +69,72 @@ class BookingStorno extends Model { return $this->belongsTo(Booking::class); } + + public function booking_document() + { + return $this->hasOne(BookingDocument::class, 'booking_storno_id', 'id'); + } + + + public function getTotalFormatted() + { + return Util::_number_format($this->attributes['total']); + } + + public function getTotalRaw() + { + return $this->attributes['total']; + } + + public function setTotalAttribute($value) + { + $this->attributes['total'] = Util::_clean_float($value); + } + + + public function getStornoFormatted() + { + return Util::_number_format($this->attributes['storno']); + } + + public function getStornoRaw() + { + return $this->attributes['storno']; + } + + public function setStornoAttribute($value) + { + $this->attributes['storno'] = Util::_clean_float($value); + } + + + public function getStornoDateFormatted() + { + return isset($this->attributes['storno_date']) ? Carbon::parse($this->attributes['storno_date'])->format('d.m.Y') : ''; + } + + public function setStornoDateAttribute($value) + { + if (!$value) { + $this->attributes['storno_date'] = null; + } else { + $this->attributes['storno_date'] = Carbon::parse($value)->format('Y-m-d'); + } + } + + public function getStornoPrintFormatted() + { + return isset($this->attributes['storno_print']) ? Carbon::parse($this->attributes['storno_print'])->format('d.m.Y') : ''; + } + + public function setStornoPrintAttribute($value) + { + if (!$value) { + $this->attributes['storno_print'] = null; + } else { + $this->attributes['storno_print'] = Carbon::parse($value)->format('Y-m-d'); + } + } + + } diff --git a/app/Models/BookingVoucherAgency.php b/app/Models/BookingVoucherAgency.php new file mode 100644 index 0000000..9640415 --- /dev/null +++ b/app/Models/BookingVoucherAgency.php @@ -0,0 +1,49 @@ + 'int', + ]; + + protected $fillable = [ + 'booking_id', + 'binary_data' + ]; + + public function booking() + { + return $this->belongsTo(Booking::class); + } +} diff --git a/app/Models/CMSAuthor.php b/app/Models/CMSAuthor.php index 4089817..4328234 100644 --- a/app/Models/CMSAuthor.php +++ b/app/Models/CMSAuthor.php @@ -24,9 +24,9 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor whereUpdatedAt($value) - * @mixin \Eloquent * @property string|null $description * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSAuthor whereDescription($value) + * @mixin \Eloquent */ class CMSAuthor extends Model { diff --git a/app/Models/CMSContent.php b/app/Models/CMSContent.php index 64eaddf..583206f 100644 --- a/app/Models/CMSContent.php +++ b/app/Models/CMSContent.php @@ -4,41 +4,42 @@ namespace App\Models; use Cviebrock\EloquentSluggable\Sluggable; use Illuminate\Database\Eloquent\Model; + /** * App\Models\CMSContent * * @property int $id * @property string $name * @property string $slug + * @property string|null $identifier * @property string $field * @property string|null $text * @property string|null $full_text + * @property array|null $object * @property int|null $integer - * @property float|null $decimal + * @property string|null $decimal + * @property int|null $pos * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent findSimilarSlugs($attribute, $config, $slug) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereCreatedAt($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereDecimal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereField($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereFullText($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereInteger($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereSlug($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereText($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereUpdatedAt($value) - * @mixin \Eloquent - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent query() - * @property string|null $identifier - * @property array|null $object - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereIdentifier($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent whereObject($value) - * @property int|null $pos - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSContent wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent findSimilarSlugs(string $attribute, array $config, string $slug) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent query() + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereDecimal($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereField($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereFullText($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereIdentifier($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereInteger($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereObject($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent wherePos($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereText($value) + * @method static \Illuminate\Database\Eloquent\Builder|CMSContent whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|CMSContent withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent */ class CMSContent extends Model { @@ -74,7 +75,7 @@ class CMSContent extends Model 'pos' => 'int' ]; - public function sluggable() + public function sluggable(): array { return [ 'slug' => [ diff --git a/app/Models/CMSInfo.php b/app/Models/CMSInfo.php index 4dc72ec..495277d 100644 --- a/app/Models/CMSInfo.php +++ b/app/Models/CMSInfo.php @@ -34,12 +34,12 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereSlug($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereText($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereUpdatedAt($value) - * @mixin \Eloquent * @property string $type * @property int $bool * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereBool($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfo whereType($value) * @method static \Illuminate\Database\Eloquent\Builder|CMSInfo withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent */ class CMSInfo extends Model { @@ -61,7 +61,8 @@ class CMSInfo extends Model 'name', 'slug', 'type', 'text', 'full_text', 'integer', 'decimal', 'bool' ]; - public function sluggable() + + public function sluggable(): array { return [ 'slug' => [ diff --git a/app/Models/CMSInfoAvailable.php b/app/Models/CMSInfoAvailable.php index 0e79d8e..d0f3d7a 100644 --- a/app/Models/CMSInfoAvailable.php +++ b/app/Models/CMSInfoAvailable.php @@ -2,7 +2,7 @@ namespace App\Models; -use App\Services\HTMLHelper; +use App\Helper\HTMLHelper; use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; @@ -26,13 +26,13 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereTo($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereType($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereUpdatedAt($value) - * @mixin \Eloquent * @property int $wday * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereWday($value) * @property int|null $special * @property string|null $date * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereDate($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CMSInfoAvailable whereSpecial($value) + * @mixin \Eloquent */ class CMSInfoAvailable extends Model { diff --git a/app/Models/Contact.php b/app/Models/Contact.php new file mode 100644 index 0000000..2cd1868 --- /dev/null +++ b/app/Models/Contact.php @@ -0,0 +1,164 @@ + 'int', + 'credit_card_type_id' => 'int', + 'country_id' => 'int', + 'merged_into_id' => 'int', + 'birthdate' => 'datetime', + 'credit_card_expiration_date' => 'datetime', + 'merged_at' => 'datetime', + ]; + + protected $fillable = [ + 'salutation_id', + 'title', + 'name', + 'firstname', + 'birthdate', + 'company', + 'street', + 'zip', + 'city', + 'email', + 'phone', + 'phonebusiness', + 'phonemobile', + 'fax', + 'bank', + 'bank_code', + 'bank_account_number', + 'credit_card_type_id', + 'credit_card_number', + 'credit_card_expiration_date', + 'participants_remarks', + 'miscellaneous_remarks', + 'country_id', + 'merged_into_id', + 'merged_at', + ]; + + /** + * Globaler Scope: zusammengeführte Duplikate werden standardmäßig ausgeblendet. + * Für Zugriff auf alle inkl. Duplikate: Contact::withoutGlobalScope('not_merged') + */ + protected static function booted(): void + { + static::addGlobalScope('not_merged', function (Builder $query) { + $query->whereNull('merged_into_id'); + }); + } + + // ── Beziehungen ────────────────────────────────────────────────────────── + + public function mergedInto(): \Illuminate\Database\Eloquent\Relations\BelongsTo + { + return $this->belongsTo(Contact::class, 'merged_into_id') + ->withoutGlobalScope('not_merged'); + } + + public function mergedContacts(): \Illuminate\Database\Eloquent\Relations\HasMany + { + return $this->hasMany(Contact::class, 'merged_into_id') + ->withoutGlobalScope('not_merged'); + } + + public function leads(): \Illuminate\Database\Eloquent\Relations\HasMany + { + return $this->hasMany(Lead::class, 'customer_id')->orderByDesc('created_at'); + } + + public function bookings(): \Illuminate\Database\Eloquent\Relations\HasMany + { + return $this->hasMany(Booking::class, 'customer_id')->orderByDesc('created_at'); + } + + public function salutation(): \Illuminate\Database\Eloquent\Relations\BelongsTo + { + return $this->belongsTo(Salutation::class); + } + + public function travel_country(): \Illuminate\Database\Eloquent\Relations\BelongsTo + { + return $this->belongsTo(TravelCountry::class, 'country_id'); + } + + // ── Hilfsmethoden ──────────────────────────────────────────────────────── + + public function fullName(): string + { + if ($this->firstname) { + return $this->firstname . ' ' . $this->name; + } + return (string) $this->name; + } + + public function isMerged(): bool + { + return $this->merged_into_id !== null; + } + + public static function getCountriesArray(): \Illuminate\Support\Collection + { + return TravelCountry::where('is_customer_country', 1)->get()->pluck('name', 'id'); + } + + public static $salutationType = [ + 1 => 'Herr', + 2 => 'Frau', + 3 => 'Divers/keine Anrede', + 4 => 'Firma', + ]; +} diff --git a/app/Models/Country.php b/app/Models/Country.php index 123914a..7a8a9c6 100644 --- a/app/Models/Country.php +++ b/app/Models/Country.php @@ -26,10 +26,10 @@ use PHPUnit\Framework\Constraint\Count; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereIt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country wherePhone($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country whereRu($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Country query() + * @mixin \Eloquent */ class Country extends Model { diff --git a/app/Models/Coupon.php b/app/Models/Coupon.php index 34e683c..9e72937 100644 --- a/app/Models/Coupon.php +++ b/app/Models/Coupon.php @@ -7,8 +7,9 @@ namespace App\Models; use Carbon\Carbon; -use Illuminate\Database\Eloquent\Collection; +use App\Services\Util; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Collection; /** * Class Coupon @@ -43,9 +44,10 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereValidDate($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereValue($value) - * @mixin \Eloquent * @property string|null $text * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Coupon whereText($value) + * @property-read \App\Models\BookingDocument|null $booking_document + * @mixin \Eloquent */ class Coupon extends Model { @@ -57,14 +59,12 @@ class Coupon extends Model 'customer_id' => 'int', 'booking_id' => 'int', 'value' => 'float', - 'is_redeemed' => 'bool' + 'is_redeemed' => 'bool', + 'issue_date' => 'datetime', + 'valid_date' => 'datetime', + 'redeem_date' => 'datetime', ]; - protected $dates = [ - 'issue_date', - 'valid_date', - 'redeem_date' - ]; protected $fillable = [ 'number', @@ -78,6 +78,32 @@ class Coupon extends Model 'text' ]; + /** + * The "booted" method of the model. + * + * @return void + */ + protected static function boot() + { + parent::boot(); + static::created(function ($model) { + $model->number = sprintf( + '%02u-%05u-%05u-%02u%02u', + date('y'), + $model->customer_id, + $model->id, + date('H'), + date('i') + ); + $model->save(); + }); + } + + public function create($product) + { + logger($product->id); + } + public function booking() { return $this->belongsTo(Booking::class); @@ -88,6 +114,12 @@ class Coupon extends Model return $this->belongsTo(Customer::class); } + public function booking_document() + { + return $this->hasOne(BookingDocument::class, 'coupon_id', 'id'); + } + + public function bookings() { return $this->hasMany(Booking::class); @@ -95,6 +127,67 @@ class Coupon extends Model public function isLegal(){ //TODO + // return strtotime(date('Y-m-d')) <= strtotime($this->getValidDate()); + return false; } + + public function getValueFormatted() + { + return Util::_number_format($this->attributes['value']); + } + + public function getValueRaw() + { + return $this->attributes['value']; + } + + public function setValueAttribute($value) + { + $this->attributes['value'] = Util::_clean_float($value); + } + + public function getIssueDateFormatted() + { + return isset($this->attributes['issue_date']) ? Carbon::parse($this->attributes['issue_date'])->format('d.m.Y') : ''; + } + + public function setIssueDateAttribute($value) + { + if (!$value) { + $this->attributes['issue_date'] = null; + } else { + $this->attributes['issue_date'] = Carbon::parse($value)->format('Y-m-d'); + } + } + + public function getValidDateFormatted() + { + return isset($this->attributes['valid_date']) ? Carbon::parse($this->attributes['valid_date'])->format('d.m.Y') : ''; + } + + public function setValidDateAttribute($value) + { + if (!$value) { + $this->attributes['valid_date'] = null; + } else { + $this->attributes['valid_date'] = Carbon::parse($value)->format('Y-m-d'); + } + } + + public function getRedeemDateFormatted() + { + return isset($this->attributes['redeem_date']) ? Carbon::parse($this->attributes['redeem_date'])->format('d.m.Y') : ''; + } + + public function setRedeemDateAttribute($value) + { + if (!$value) { + $this->attributes['redeem_date'] = null; + } else { + $this->attributes['redeem_date'] = Carbon::parse($value)->format('Y-m-d'); + } + } + + } diff --git a/app/Models/Customer.php b/app/Models/Customer.php index c408d5b..9853334 100644 --- a/app/Models/Customer.php +++ b/app/Models/Customer.php @@ -9,6 +9,7 @@ namespace App\Models; use App\Models\Sym\TravelCountry; use Carbon\Carbon; use Illuminate\Database\Eloquent\Collection; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; /** @@ -83,20 +84,26 @@ use Illuminate\Database\Eloquent\Model; */ class Customer extends Model { + use HasFactory; + protected $connection = 'mysql'; - protected $table = 'customer'; + /** + * Modul 3 Phase 2: customer → contacts (RENAME TABLE). + * Der Model-Name bleibt aus Kompatibilität zum Legacy-Code bestehen; + * für die Neuimplementierung steht {@see Contact} bereit. + */ + protected $table = 'contacts'; protected $casts = [ 'salutation_id' => 'int', 'credit_card_type_id' => 'int', - 'country_id' => 'int' - ]; + 'country_id' => 'int', + 'birthdate' => 'datetime', + 'credit_card_expiration_date' => 'datetime', + ]; - protected $dates = [ - 'birthdate', - 'credit_card_expiration_date' - ]; + protected $fillable = [ 'salutation_id', @@ -125,8 +132,24 @@ class Customer extends Model ]; public static $salutationType = [ - 1 => 'Mann', - 2 => 'Frau' + 1 => 'Herr', + 2 => 'Frau', + 3 => 'Divers/keine Anrede', + 4 => 'Firma' + ]; + + public static $salutationNameType = [ + 1 => 'Herr', + 2 => 'Frau', + 3 => '', + 4 => 'Firma' + ]; + + public static $salutationDearType = [ + 1 => 'geehrter', + 2 => 'geehrte', + 3 => 'geehrte:r', + 4 => '' ]; public function travel_country() @@ -155,7 +178,15 @@ class Customer extends Model } public function getSalutation(){ - return $this->salutation_id == 1 ? 'Herr' : 'Frau'; + return isset(self::$salutationType[$this->salutation_id]) ? self::$salutationType[$this->salutation_id] : ''; + } + + public function getSalutationName(){ + return isset(self::$salutationNameType[$this->salutation_id]) ? self::$salutationNameType[$this->salutation_id] : ''; + } + + public function getSalutationDear(){ + return isset(self::$salutationDearType[$this->salutation_id]) ? self::$salutationDearType[$this->salutation_id] : ''; } public function fullName() diff --git a/app/Models/CustomerFewoFile.php b/app/Models/CustomerFewoFile.php index b4b6790..4e480f0 100644 --- a/app/Models/CustomerFewoFile.php +++ b/app/Models/CustomerFewoFile.php @@ -42,12 +42,12 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereSize($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereTravelUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereUpdatedAt($value) - * @mixin \Eloquent * @property \Illuminate\Support\Carbon|null $deleted_at * @method static \Illuminate\Database\Query\Builder|\App\Models\CustomerFewoFile onlyTrashed() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoFile whereDeletedAt($value) * @method static \Illuminate\Database\Query\Builder|\App\Models\CustomerFewoFile withTrashed() * @method static \Illuminate\Database\Query\Builder|\App\Models\CustomerFewoFile withoutTrashed() + * @mixin \Eloquent */ class CustomerFewoFile extends Model { @@ -60,10 +60,11 @@ class CustomerFewoFile extends Model protected $casts = [ 'travel_user_id' => 'int', 'customer_fewo_mail_id' => 'int', - 'size' => 'int' + 'size' => 'int', + 'deleted_at' => 'datetime', ]; - protected $dates = ['deleted_at']; + protected $fillable = [ 'travel_user_id', diff --git a/app/Models/CustomerFewoMail.php b/app/Models/CustomerFewoMail.php index 0b696e2..aab22a7 100644 --- a/app/Models/CustomerFewoMail.php +++ b/app/Models/CustomerFewoMail.php @@ -70,7 +70,6 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereTravelUserBookingFewoId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereTravelUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereUpdatedAt($value) - * @mixin \Eloquent * @property-read \App\Models\TravelUserBookingFewo $booking * @property-read \App\Models\TravelUser $customer * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\CustomerFewoFile[] $customer_files @@ -83,6 +82,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Query\Builder|\App\Models\CustomerFewoMail withoutTrashed() * @property array|null $forward * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerFewoMail whereForward($value) + * @mixin \Eloquent */ class CustomerFewoMail extends Model { @@ -106,15 +106,13 @@ class CustomerFewoMail extends Model 'recipient' => 'array', 'forward' => 'array', 'cc' => 'array', - 'bcc' => 'array' + 'bcc' => 'array', + 'sent_at' => 'datetime', + 'scheduled_at' => 'datetime', + 'delivered_at' => 'datetime', + 'deleted_at' => 'datetime', ]; - protected $dates = [ - 'sent_at', - 'scheduled_at', - 'delivered_at', - 'deleted_at' - ]; protected $fillable = [ 'travel_user_booking_fewo_id', diff --git a/app/Models/CustomerMail.php b/app/Models/CustomerMail.php index a894c4c..e412ea5 100644 --- a/app/Models/CustomerMail.php +++ b/app/Models/CustomerMail.php @@ -74,11 +74,11 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereSubject($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereTravelCountryId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereUpdatedAt($value) - * @mixin \Eloquent * @property int|null $subdir * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereSubdir($value) * @property array|null $forward * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\CustomerMail whereForward($value) + * @mixin \Eloquent */ class CustomerMail extends Model { @@ -109,14 +109,12 @@ class CustomerMail extends Model 'recipient' => 'array', 'forward' => 'array', 'cc' => 'array', - 'bcc' => 'array' + 'bcc' => 'array', + 'sent_at' => 'datetime', + 'scheduled_at' => 'datetime', + 'delivered_at' => 'datetime', ]; - protected $dates = [ - 'sent_at', - 'scheduled_at', - 'delivered_at' - ]; protected $fillable = [ 'booking_id', diff --git a/app/Models/Draft.php b/app/Models/Draft.php index 761b2bf..6c93e8e 100644 --- a/app/Models/Draft.php +++ b/app/Models/Draft.php @@ -17,7 +17,6 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft whereUpdatedAt($value) - * @mixin \Eloquent * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\DraftItem[] $draft_items * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelProgramDraft[] $travel_program_drafts * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft newModelQuery() @@ -25,6 +24,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Draft query() * @property-read int|null $draft_items_count * @property-read int|null $travel_program_drafts_count + * @mixin \Eloquent */ class Draft extends Model { diff --git a/app/Models/DraftItem.php b/app/Models/DraftItem.php index f5ecee1..2fe46df 100644 --- a/app/Models/DraftItem.php +++ b/app/Models/DraftItem.php @@ -42,7 +42,6 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem wherePriceAdult($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem wherePriceChildren($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereUpdatedAt($value) - * @mixin \Eloquent * @property string|null $service * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem whereService($value) * @property float|null $price @@ -50,6 +49,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftItem query() + * @mixin \Eloquent */ class DraftItem extends Model { diff --git a/app/Models/DraftType.php b/app/Models/DraftType.php index eee705b..b88cb9d 100644 --- a/app/Models/DraftType.php +++ b/app/Models/DraftType.php @@ -17,7 +17,6 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereUpdatedAt($value) - * @mixin \Eloquent * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\DraftItem[] $draft_items * @property string|null $color * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType whereColor($value) @@ -27,6 +26,7 @@ use Illuminate\Database\Eloquent\Model; * @property int|null $pos * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\DraftType wherePos($value) * @property-read int|null $draft_items_count + * @mixin \Eloquent */ class DraftType extends Model { diff --git a/app/Models/EmailTemplate.php b/app/Models/EmailTemplate.php index 2f1909a..7702361 100644 --- a/app/Models/EmailTemplate.php +++ b/app/Models/EmailTemplate.php @@ -31,9 +31,9 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereMessage($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereSubject($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereUpdatedAt($value) - * @mixin \Eloquent * @property string $name * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\EmailTemplate whereName($value) + * @mixin \Eloquent */ class EmailTemplate extends Model { diff --git a/app/Models/Feedback.php b/app/Models/Feedback.php index f4d0b4b..8dee624 100644 --- a/app/Models/Feedback.php +++ b/app/Models/Feedback.php @@ -94,7 +94,6 @@ use HTMLHelper; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTravelProgram($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTreeRoot($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereUpdatedAt($value) - * @mixin \Eloquent * @property int|null $travel_guide_content_id * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback newQuery() @@ -105,11 +104,31 @@ use HTMLHelper; * @property-read int|null $children_count * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereBeforeTitle($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Feedback whereTitleShort($value) + * @property-read \Illuminate\Database\Eloquent\Collection $child_pages + * @property-read int|null $child_pages_count + * @property-read \App\Models\Page|null $page + * @property-read \Illuminate\Database\Eloquent\Collection $pages + * @property-read int|null $pages_count + * @property-read \App\Models\Page|null $parent_page + * @property-read \Illuminate\Database\Eloquent\Collection $travel_countries + * @property-read int|null $travel_countries_count + * @property-read \App\Models\TravelCountry|null $travel_country + * @property-read \App\Models\TravelGuide|null $travel_guide + * @property-read \App\Models\TravelProgram|null $travel_program_content + * @method static \Illuminate\Database\Eloquent\Builder|Page findSimilarSlugs(string $attribute, array $config, string $slug) + * @method static \Illuminate\Database\Eloquent\Builder|Page withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent */ class Feedback extends Page { protected $table = 'page'; + protected $fillable = [ + 'title', 'status', 'slug', 'date', 'content', 'content_new', 'box_body', 'description', 'pagetitle', 'keywords', 'order', 'active', + ]; + + protected $casts = ['box_body' => 'array', 'date' => 'date', 'status' => 'boolean', 'active' => 'boolean']; + public static function boot() { parent::boot(); @@ -150,6 +169,24 @@ class Feedback extends Page } } + public function getContentAttribute() + { + return $this->attributes['content_new'] === null ? $this->attributes['content'] : $this->attributes['content_new']; + } + + public function setContentNewAttribute($value) + { + if (!$value) { + $this->attributes['content_new'] = $value; + } else { + $this->attributes['content_new'] = HTMLHelper::filterHTML($value, ['src' => ['removeHost']], true); + } + } + + public function getContentNewAttribute() + { + return $this->attributes['content_new'] === null ? $this->attributes['content'] : $this->attributes['content_new']; + } public function getParentsArray(){ @@ -173,8 +210,19 @@ class Feedback extends Page if (!$value) { $this->attributes['date'] = null; } else { - $this->attributes['date'] = (new Carbon($value))->format('Y-m-d'); - + try { + $this->attributes['date']= Carbon::parse($value); + } catch (\Exception $e) { + $this->attributes['date'] = Carbon::now(); + } } } + + public function getImage($key){ + //use box_body for images + if(isset($this->box_body[$key])){ + return $this->box_body[$key]; + } + return ""; + } } diff --git a/app/Models/FewoLodging.php b/app/Models/FewoLodging.php index a8801b1..3af29d2 100644 --- a/app/Models/FewoLodging.php +++ b/app/Models/FewoLodging.php @@ -34,7 +34,6 @@ use Reliese\Database\Eloquent\Model as Eloquent; * @property \Illuminate\Database\Eloquent\Collection $pages * @property \Illuminate\Database\Eloquent\Collection $travel_user_booking_fewos * @package App\Models - * @mixin \Eloquent * @property string|null $single_name * @property string $zip_code * @property int|null $maximum_adults @@ -65,6 +64,7 @@ use Reliese\Database\Eloquent\Model as Eloquent; * @property-read int|null $travel_user_booking_fewos_count * @property string|null $pdf_name * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodging wherePdfName($value) + * @mixin \Eloquent */ class FewoLodging extends Model { diff --git a/app/Models/FewoLodgingGroup.php b/app/Models/FewoLodgingGroup.php index dd1a674..56a9434 100644 --- a/app/Models/FewoLodgingGroup.php +++ b/app/Models/FewoLodgingGroup.php @@ -17,7 +17,6 @@ use Illuminate\Database\Eloquent\Model; * @property \Illuminate\Database\Eloquent\Collection $fewo_lodgings * @property \Illuminate\Database\Eloquent\Collection $fewo_lodging_group_images * @package App\Models - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroup newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroup newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroup query() @@ -25,6 +24,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroup whereName($value) * @property-read int|null $fewo_lodging_group_images_count * @property-read int|null $fewo_lodgings_count + * @mixin \Eloquent */ class FewoLodgingGroup extends Model { diff --git a/app/Models/FewoLodgingGroupImage.php b/app/Models/FewoLodgingGroupImage.php index 267fc56..26ef067 100644 --- a/app/Models/FewoLodgingGroupImage.php +++ b/app/Models/FewoLodgingGroupImage.php @@ -21,7 +21,6 @@ use Illuminate\Database\Eloquent\Model; * @property string $description * @property \App\Models\FewoLodgingGroup $fewo_lodging_group * @package App\Models - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage query() @@ -32,6 +31,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage whereGroupId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingGroupImage wherePos($value) + * @mixin \Eloquent */ class FewoLodgingGroupImage extends Model { diff --git a/app/Models/FewoLodgingImage.php b/app/Models/FewoLodgingImage.php index 23a8dde..074e216 100644 --- a/app/Models/FewoLodgingImage.php +++ b/app/Models/FewoLodgingImage.php @@ -20,7 +20,6 @@ use Illuminate\Database\Eloquent\Model; * @property string $description * @property \App\Models\FewoLodging $fewo_lodging * @package App\Models - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage query() @@ -30,6 +29,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage whereLodgingId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingImage wherePos($value) + * @mixin \Eloquent */ class FewoLodgingImage extends Model { diff --git a/app/Models/FewoLodgingType.php b/app/Models/FewoLodgingType.php index 358ae80..30b706c 100644 --- a/app/Models/FewoLodgingType.php +++ b/app/Models/FewoLodgingType.php @@ -16,13 +16,13 @@ use Illuminate\Database\Eloquent\Model; * @property string $name * @property \Illuminate\Database\Eloquent\Collection $fewo_lodgings * @package App\Models - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingType newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingType newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingType query() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingType whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoLodgingType whereName($value) * @property-read int|null $fewo_lodgings_count + * @mixin \Eloquent */ class FewoLodgingType extends Model { diff --git a/app/Models/FewoPrice.php b/app/Models/FewoPrice.php index 5d29928..7f6ee60 100644 --- a/app/Models/FewoPrice.php +++ b/app/Models/FewoPrice.php @@ -20,7 +20,6 @@ use Illuminate\Database\Eloquent\Model; * @property \App\Models\FewoSeason $fewo_season * @property \App\Models\FewoLodging $fewo_lodging * @package App\Models - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice query() @@ -29,6 +28,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice whereLodgingId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice wherePerNight($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoPrice whereSeasonId($value) + * @mixin \Eloquent */ class FewoPrice extends Model { diff --git a/app/Models/FewoReservation.php b/app/Models/FewoReservation.php index f9e3917..e194938 100644 --- a/app/Models/FewoReservation.php +++ b/app/Models/FewoReservation.php @@ -20,7 +20,6 @@ use Illuminate\Database\Eloquent\Model; * @property int $type * @property \App\Models\FewoLodging $fewo_lodging * @package App\Models - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation query() @@ -30,6 +29,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation whereStatus($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation whereToDate($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoReservation whereType($value) + * @mixin \Eloquent */ class FewoReservation extends Model { @@ -41,13 +41,11 @@ class FewoReservation extends Model protected $casts = [ 'lodging_id' => 'int', 'status' => 'int', - 'type' => 'int' + 'type' => 'int', + 'from_date' => 'datetime', + 'to_date' => 'datetime', ]; - protected $dates = [ - 'from_date', - 'to_date' - ]; protected $fillable = [ 'lodging_id', diff --git a/app/Models/FewoSeason.php b/app/Models/FewoSeason.php index 8de1d4d..f7b721c 100644 --- a/app/Models/FewoSeason.php +++ b/app/Models/FewoSeason.php @@ -21,7 +21,6 @@ use Illuminate\Database\Eloquent\Model; * @property int $only_weekday * @property \Illuminate\Database\Eloquent\Collection $fewo_prices * @package App\Models - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason query() @@ -33,6 +32,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereOnlyWeekday($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\FewoSeason whereToDate($value) * @property-read int|null $fewo_prices_count + * @mixin \Eloquent */ class FewoSeason extends Model { @@ -43,13 +43,11 @@ class FewoSeason extends Model protected $casts = [ 'minimum_stay' => 'int', - 'only_weekday' => 'int' + 'only_weekday' => 'int', + 'from_date' => 'datetime', + 'to_date' => 'datetime', ]; - protected $dates = [ - 'from_date', - 'to_date' - ]; protected $fillable = [ 'name', diff --git a/app/Models/IQContentCategory.php b/app/Models/IQContentCategory.php index b482038..5cfb751 100644 --- a/app/Models/IQContentCategory.php +++ b/app/Models/IQContentCategory.php @@ -37,8 +37,8 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory wherePos($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereSlug($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentCategory whereUpdatedAt($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|IQContentCategory withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent */ class IQContentCategory extends Model { @@ -62,7 +62,7 @@ class IQContentCategory extends Model ]; - public function sluggable() + public function sluggable(): array { return [ 'slug' => [ diff --git a/app/Models/IQContentFaq.php b/app/Models/IQContentFaq.php index 78156a2..d67b41f 100644 --- a/app/Models/IQContentFaq.php +++ b/app/Models/IQContentFaq.php @@ -25,10 +25,10 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq query() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq whereTreeNodeId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq whereFaqId($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentFaq whereUpdatedAt($value) + * @mixin \Eloquent */ class IQContentFaq extends Model { diff --git a/app/Models/IQContentFileTag.php b/app/Models/IQContentFileTag.php index 8794e1e..be510d0 100644 --- a/app/Models/IQContentFileTag.php +++ b/app/Models/IQContentFileTag.php @@ -17,7 +17,7 @@ use Illuminate\Database\Eloquent\Model; * @property int $tag_id * @property Carbon $created_at * @property Carbon $updated_at - * + * * //* @property IQContentFile $i_q_content_file * @property IQContentTag $i_q_content_tag * @package App\Models diff --git a/app/Models/IQContentSite.php b/app/Models/IQContentSite.php index b4edc5d..3b02034 100644 --- a/app/Models/IQContentSite.php +++ b/app/Models/IQContentSite.php @@ -22,9 +22,9 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereTravelGuideId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereTreeNodeId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereUpdatedAt($value) - * @mixin \Eloquent * @property string|null $identifier * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentSite whereIdentifier($value) + * @mixin \Eloquent */ class IQContentSite extends Model { diff --git a/app/Models/IQContentTree.php b/app/Models/IQContentTree.php index 19f1ec2..46fca9d 100644 --- a/app/Models/IQContentTree.php +++ b/app/Models/IQContentTree.php @@ -42,13 +42,13 @@ use Illuminate\Support\Str; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereUpdatedAt($value) * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTree withTrashed() * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTree withoutTrashed() - * @mixin \Eloquent * @property int|null $page_id * @property int|null $root_id * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree wherePageId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTree whereRootId($value) * @property-read int|null $iq_content_tree_nodes_count * @method static \Illuminate\Database\Eloquent\Builder|IQContentTree withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent */ class IQContentTree extends Model { @@ -57,7 +57,7 @@ class IQContentTree extends Model protected $connection = 'mysql_stern'; - protected $dates = ['deleted_at']; + protected $table = 'i_q_content_trees'; @@ -65,9 +65,11 @@ class IQContentTree extends Model 'name', 'identifier', 'description', 'settings', 'pos', 'active', ]; - protected $casts = ['settings' => 'array']; + protected $casts = ['settings' => 'array', + 'deleted_at' => 'datetime', + ]; - public function sluggable() + public function sluggable(): array { return [ 'slug' => [ diff --git a/app/Models/IQContentTreeNode.php b/app/Models/IQContentTreeNode.php index c760839..a4062d0 100644 --- a/app/Models/IQContentTreeNode.php +++ b/app/Models/IQContentTreeNode.php @@ -50,7 +50,6 @@ use Illuminate\Support\Str; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\IQContentTreeNode whereUpdatedAt($value) * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTreeNode withTrashed() * @method static \Illuminate\Database\Query\Builder|\App\Models\IQContentTreeNode withoutTrashed() - * @mixin \Eloquent * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentSite[] $iq_content_site * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentSite[] $iq_content_sites * @property-read int|null $iq_content_sites_count @@ -64,6 +63,7 @@ use Illuminate\Support\Str; * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\IQContentFaq[] $iq_content_faqs * @property-read int|null $iq_content_faqs_count * @method static \Illuminate\Database\Eloquent\Builder|IQContentTreeNode withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent */ class IQContentTreeNode extends Model { @@ -72,7 +72,7 @@ class IQContentTreeNode extends Model protected $connection = 'mysql_stern'; - protected $dates = ['deleted_at']; + protected $table = 'i_q_content_tree_nodes'; @@ -80,9 +80,11 @@ class IQContentTreeNode extends Model 'tree_id', 'parent_id', 'lvl', 'name', 'identifier', 'title', 'description', 'settings', 'image', 'pos', 'active', ]; - protected $casts = ['settings' => 'array', 'image' => 'array']; + protected $casts = ['settings' => 'array', 'image' => 'array', + 'deleted_at' => 'datetime', + ]; - public function sluggable() + public function sluggable(): array { return [ 'slug' => [ diff --git a/app/Models/Inquiry.php b/app/Models/Inquiry.php index c714118..ba86d77 100644 --- a/app/Models/Inquiry.php +++ b/app/Models/Inquiry.php @@ -53,13 +53,11 @@ class Inquiry extends Model 'template_id' => 'int', 'in_pdf' => 'bool', 'type_id' => 'int', - 'view_position' => 'int' + 'view_position' => 'int', + 'begin' => 'datetime', + 'end' => 'datetime', ]; - protected $dates = [ - 'begin', - 'end' - ]; protected $fillable = [ 'lead_id', diff --git a/app/Models/Lead.php b/app/Models/Lead.php index b1ca760..f9441f5 100644 --- a/app/Models/Lead.php +++ b/app/Models/Lead.php @@ -9,6 +9,7 @@ namespace App\Models; use Carbon\Carbon; use App\Services\Passolution; use App\Models\Lead as ModelsLead; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Collection; @@ -91,7 +92,6 @@ use Illuminate\Database\Eloquent\Collection; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereTravelperiodStart($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereWebsiteId($value) - * @mixin \Eloquent * @property-read \App\Models\Sym\TravelCountry|null $travel_country_crm * @property bool|null $is_rebook * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Lead whereIsRebook($value) @@ -104,12 +104,20 @@ use Illuminate\Database\Eloquent\Collection; * @property-read int|null $lead_mails_sent_at_count * @property-read Collection|\App\Models\LeadNotice[] $lead_notices * @property-read int|null $lead_notices_count + * @mixin \Eloquent */ class Lead extends Model { + use HasFactory; + protected $connection = 'mysql'; - protected $table = 'lead'; + /** + * Modul 3 Phase 2: lead → inquiries (RENAME TABLE). + * Model-Name bleibt (um Breaking Changes in der gesamten Codebase zu vermeiden); + * fachlich ist das Modell jetzt eine "Inquiry" (Anfrage). + */ + protected $table = 'inquiries'; protected $casts = [ 'customer_id' => 'int', @@ -126,16 +134,14 @@ class Lead extends Model 'travelcategory_id' => 'int', 'price' => 'float', 'pax' => 'int', - 'participant_salutation_id' => 'int' + 'participant_salutation_id' => 'int', + 'request_date' => 'datetime', + 'travelperiod_start' => 'datetime', + 'travelperiod_end' => 'datetime', + 'next_due_date' => 'datetime', + 'participant_birthdate' => 'datetime', ]; - protected $dates = [ - 'request_date', - 'travelperiod_start', - 'travelperiod_end', - 'next_due_date', - 'participant_birthdate' - ]; protected $fillable = [ 'customer_id', @@ -342,6 +348,25 @@ class Lead extends Model return '-'; } + public function getTravelCountryDestco($badge = true){ + + $out = ""; + if($this->bookings->count()){ + $out .= $badge ? '' : ''; + foreach ($this->bookings as $booking){ + if($booking->travel_country_id && $booking->travel_country) { + $out .= $booking->travel_country->destco; + } + } + $out .= $badge ? '' : ''; + return $out; + } + if($this->travel_country){ + return $badge ? ''.$this->travel_country->destco.'' : $this->travel_country->destco; + } + return "-"; + } + public function countLeadMailsBy($dir, $subdir=false){ if($dir === 11){ return $this->lead_mails->where('draft', true)->where('dir', '!=', 12)->count(); diff --git a/app/Models/LeadMail.php b/app/Models/LeadMail.php index ac40ed8..ba15506 100644 --- a/app/Models/LeadMail.php +++ b/app/Models/LeadMail.php @@ -91,14 +91,12 @@ class LeadMail extends Model 'recipient' => 'array', 'forward' => 'array', 'cc' => 'array', - 'bcc' => 'array' + 'bcc' => 'array', + 'sent_at' => 'datetime', + 'scheduled_at' => 'datetime', + 'delivered_at' => 'datetime', ]; - protected $dates = [ - 'sent_at', - 'scheduled_at', - 'delivered_at' - ]; protected $fillable = [ 'lead_id', diff --git a/app/Models/LeadNotice.php b/app/Models/LeadNotice.php index 3ecdad3..28c3420 100644 --- a/app/Models/LeadNotice.php +++ b/app/Models/LeadNotice.php @@ -53,12 +53,10 @@ class LeadNotice extends Model 'from_user_id' => 'int', 'to_user_id' => 'int', 'show' => 'bool', - 'important' => 'bool' + 'important' => 'bool', + 'edit_at' => 'datetime', ]; - protected $dates = [ - 'edit_at' - ]; protected $fillable = [ 'lead_id', diff --git a/app/Models/LeadParticipant.php b/app/Models/LeadParticipant.php index add930c..3f31a98 100644 --- a/app/Models/LeadParticipant.php +++ b/app/Models/LeadParticipant.php @@ -30,12 +30,12 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant whereParticipantFirstname($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant whereParticipantName($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\LeadParticipant whereParticipantSalutationId($value) - * @mixin \Eloquent * @property int|null $participant_child * @property int|null $nationality_id * @property-read \App\Models\TravelNationality|null $travel_nationality * @method static \Illuminate\Database\Eloquent\Builder|LeadParticipant whereNationalityId($value) * @method static \Illuminate\Database\Eloquent\Builder|LeadParticipant whereParticipantChild($value) + * @mixin \Eloquent */ class LeadParticipant extends Model { @@ -46,12 +46,10 @@ class LeadParticipant extends Model protected $casts = [ 'lead_id' => 'int', - 'participant_salutation_id' => 'int' + 'participant_salutation_id' => 'int', + 'participant_birthdate' => 'datetime', ]; - protected $dates = [ - 'participant_birthdate' - ]; protected $fillable = [ 'lead_id', diff --git a/app/Models/News.php b/app/Models/News.php new file mode 100644 index 0000000..1ec187b --- /dev/null +++ b/app/Models/News.php @@ -0,0 +1,228 @@ + $child_pages + * @property-read int|null $child_pages_count + * @property-read \App\Models\Page|null $page + * @property-read \Illuminate\Database\Eloquent\Collection $pages + * @property-read int|null $pages_count + * @property-read \App\Models\Page|null $parent_page + * @property-read \Illuminate\Database\Eloquent\Collection $travel_countries + * @property-read int|null $travel_countries_count + * @property-read \App\Models\TravelCountry|null $travel_country + * @property-read \App\Models\TravelGuide|null $travel_guide + * @property-read \App\Models\TravelProgram|null $travel_program_content + * @method static \Illuminate\Database\Eloquent\Builder|Page findSimilarSlugs(string $attribute, array $config, string $slug) + * @method static \Illuminate\Database\Eloquent\Builder|Page withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent + */ +class News extends Page +{ + protected $table = 'page'; + + protected $fillable = [ + 'title', 'status', 'slug', 'date', 'content', 'content_new', 'box_body', 'description', 'pagetitle', 'keywords', 'order', 'active', + ]; + + protected $casts = ['box_body' => 'array', 'date' => 'date', 'status' => 'boolean', 'active' => 'boolean']; + + public static function boot() + { + parent::boot(); + + static::addGlobalScope(function ($query) { + $query->where('model', 'news'); + $query->orderBy('lvl', 'ASC'); + $query->orderBy('date', 'DESC'); + + }); + } + + public function parent() + { + return $this->belongsTo('App\Models\News', 'parent_id'); + } + + public function getParent() + { + if ($this->lvl == 1) { + $this->parent(); + } + return false; + } + + public function children() + { + return $this->hasMany('App\Models\News', 'parent_id'); + } + + + public function setContentAttribute($value) + { + if (!$value) { + $this->attributes['content'] = $value; + } else { + $this->attributes['content'] = HTMLHelper::filterHTML($value, ['src' => ['removeHost']], true); + } + } + + public function getContentAttribute() + { + return $this->attributes['content_new'] === null ? $this->attributes['content'] : $this->attributes['content_new']; + } + + public function setContentNewAttribute($value) + { + if (!$value) { + $this->attributes['content_new'] = $value; + } else { + $this->attributes['content_new'] = HTMLHelper::filterHTML($value, ['src' => ['removeHost']], true); + } + } + + public function getContentNewAttribute() + { + return $this->attributes['content_new'] === null ? $this->attributes['content'] : $this->attributes['content_new']; + } + + + public function getParentsArray(){ + //lvl 0 + return Page::where('model', 'News')->where('lvl', 1)->get()->pluck('title', 'id'); + + } + //$Newss = News::where('lvl', 1)->get(); + public function getDateRow() + { + return$this->attributes['date']; + } + + public function getDateAttribute() + { + return isset($this->attributes['date']) ? Carbon::parse($this->attributes['date'])->format("d.m.Y") : ''; + } + + public function setDateAttribute($value) + { + if (!$value) { + $this->attributes['date'] = null; + } else { + try { + $this->attributes['date']= Carbon::parse($value); + } catch (\Exception $e) { + $this->attributes['date'] = Carbon::now(); + } + } + } + + public function getImage($key){ + //use box_body for images + if(isset($this->box_body[$key])){ + return $this->box_body[$key]; + } + return ""; + } +} diff --git a/app/Models/NewsletterContact.php b/app/Models/NewsletterContact.php new file mode 100644 index 0000000..11ff219 --- /dev/null +++ b/app/Models/NewsletterContact.php @@ -0,0 +1,369 @@ + 'boolean', + 'group_ferienwohnungen' => 'boolean', + 'subscribed_at' => 'datetime', + 'unsubscribed_at' => 'datetime', + 'last_booking_at' => 'datetime', + 'last_travel_end_date' => 'datetime', + 'last_synced_at' => 'datetime', + 'total_bookings_kulturreisen' => 'int', + 'total_bookings_ferienwohnungen' => 'int', + 'customer_id' => 'int', + 'travel_user_id' => 'int', + ]; + + protected $fillable = [ + 'email', + 'firstname', + 'lastname', + 'group_kulturreisen', + 'group_ferienwohnungen', + 'source', + 'status', + 'subscribed_at', + 'unsubscribed_at', + 'last_booking_at', + 'last_travel_end_date', + 'total_bookings_kulturreisen', + 'total_bookings_ferienwohnungen', + 'customer_id', + 'travel_user_id', + 'last_synced_at', + 'sync_hash', + 'notes', + ]; + + // Konstanten für Source + const SOURCE_BOOKING_KULTURREISEN = 'booking_kulturreisen'; + const SOURCE_BOOKING_FERIENWOHNUNGEN = 'booking_ferienwohnungen'; + const SOURCE_NEWSLETTER_SIGNUP = 'newsletter_signup'; + const SOURCE_MANUAL = 'manual'; + const SOURCE_IMPORT = 'import'; + + // Konstanten für Status + const STATUS_ACTIVE = 'active'; + const STATUS_INACTIVE = 'inactive'; + const STATUS_UNSUBSCRIBED = 'unsubscribed'; + const STATUS_BOUNCED = 'bounced'; + + public static $sourceLabels = [ + self::SOURCE_BOOKING_KULTURREISEN => 'Buchung Kulturreisen', + self::SOURCE_BOOKING_FERIENWOHNUNGEN => 'Buchung Ferienwohnungen', + self::SOURCE_NEWSLETTER_SIGNUP => 'Newsletter-Anmeldung', + self::SOURCE_MANUAL => 'Manuell', + self::SOURCE_IMPORT => 'Import', + ]; + + public static $statusLabels = [ + self::STATUS_ACTIVE => 'Aktiv', + self::STATUS_INACTIVE => 'Inaktiv', + self::STATUS_UNSUBSCRIBED => 'Abgemeldet', + self::STATUS_BOUNCED => 'Bounced', + ]; + + public static $statusColors = [ + self::STATUS_ACTIVE => 'success', + self::STATUS_INACTIVE => 'secondary', + self::STATUS_UNSUBSCRIBED => 'warning', + self::STATUS_BOUNCED => 'danger', + ]; + + /** + * Beziehung zum Customer (Kulturreisen) + */ + public function customer() + { + return $this->belongsTo(Customer::class, 'customer_id'); + } + + /** + * Beziehung zum TravelUser (Ferienwohnungen) + */ + public function travel_user() + { + return $this->belongsTo(TravelUser::class, 'travel_user_id'); + } + + /** + * Logs zu diesem Kontakt + */ + public function logs() + { + return $this->hasMany(NewsletterLog::class, 'newsletter_contact_id')->orderBy('created_at', 'DESC'); + } + + /** + * Vollständiger Name + */ + public function getFullNameAttribute() + { + return trim($this->firstname . ' ' . $this->lastname); + } + + /** + * Gruppenzugehörigkeit als Array + */ + public function getGroupsAttribute() + { + $groups = []; + if ($this->group_kulturreisen) { + $groups[] = 'Kulturreisen'; + } + if ($this->group_ferienwohnungen) { + $groups[] = 'Ferienwohnungen'; + } + return $groups; + } + + /** + * Gruppenzugehörigkeit als String + */ + public function getGroupsStringAttribute() + { + return implode(', ', $this->groups); + } + + /** + * Status-Label + */ + public function getStatusLabelAttribute() + { + return self::$statusLabels[$this->status] ?? $this->status; + } + + /** + * Status-Color + */ + public function getStatusColorAttribute() + { + return self::$statusColors[$this->status] ?? 'secondary'; + } + + /** + * Source-Label + */ + public function getSourceLabelAttribute() + { + return self::$sourceLabels[$this->source] ?? $this->source; + } + + /** + * Status-Badge HTML + */ + public function getStatusBadgeAttribute() + { + return '' . $this->status_label . ''; + } + + /** + * Gesamtzahl Buchungen + */ + public function getTotalBookingsAttribute() + { + return $this->total_bookings_kulturreisen + $this->total_bookings_ferienwohnungen; + } + + /** + * Ist Kontakt aktiv? + */ + public function isActive() + { + return $this->status === self::STATUS_ACTIVE; + } + + /** + * Ist Kontakt abgemeldet? + */ + public function isUnsubscribed() + { + return $this->status === self::STATUS_UNSUBSCRIBED; + } + + /** + * Hat Kontakt mindestens eine Buchung? + */ + public function hasBookings() + { + return $this->total_bookings > 0; + } + + /** + * Kontakt abmelden + */ + public function unsubscribe($reason = null) + { + $this->status = self::STATUS_UNSUBSCRIBED; + $this->unsubscribed_at = now(); + $this->save(); + + // Log erstellen + $this->logs()->create([ + 'action' => 'unsubscribed', + 'description' => $reason ?? 'Kontakt abgemeldet', + ]); + + return $this; + } + + /** + * Kontakt wieder aktivieren + */ + public function resubscribe() + { + $this->status = self::STATUS_ACTIVE; + $this->unsubscribed_at = null; + $this->save(); + + // Log erstellen + $this->logs()->create([ + 'action' => 'subscribed', + 'description' => 'Kontakt wieder aktiviert', + ]); + + return $this; + } + + /** + * Hash für Duplikat-Erkennung generieren + */ + public static function generateSyncHash($email, $source) + { + return md5(strtolower(trim($email)) . '_' . $source); + } + + /** + * Scope: Nur aktive Kontakte + */ + public function scopeActive($query) + { + return $query->where('status', self::STATUS_ACTIVE); + } + + /** + * Scope: Nur Kulturreisen + */ + public function scopeKulturreisen($query) + { + return $query->where('group_kulturreisen', true); + } + + /** + * Scope: Nur Ferienwohnungen + */ + public function scopeFerienwohnungen($query) + { + return $query->where('group_ferienwohnungen', true); + } + + /** + * Scope: Mit Buchungen + */ + public function scopeWithBookings($query) + { + return $query->where(function ($q) { + $q->where('total_bookings_kulturreisen', '>', 0) + ->orWhere('total_bookings_ferienwohnungen', '>', 0); + }); + } + + /** + * Scope: Mehrfachbucher + */ + public function scopeMultipleBookers($query) + { + return $query->where(function ($q) { + $q->where('total_bookings_kulturreisen', '>', 1) + ->orWhere('total_bookings_ferienwohnungen', '>', 1); + }); + } +} diff --git a/app/Models/NewsletterLog.php b/app/Models/NewsletterLog.php new file mode 100644 index 0000000..36332a5 --- /dev/null +++ b/app/Models/NewsletterLog.php @@ -0,0 +1,99 @@ + 'int', + 'user_id' => 'int', + 'metadata' => 'array', + ]; + + protected $fillable = [ + 'newsletter_contact_id', + 'action', + 'description', + 'metadata', + 'user_id', + ]; + + // Aktions-Konstanten + const ACTION_SUBSCRIBED = 'subscribed'; + const ACTION_UNSUBSCRIBED = 'unsubscribed'; + const ACTION_BOOKING_ADDED = 'booking_added'; + const ACTION_STATUS_CHANGED = 'status_changed'; + const ACTION_GROUP_CHANGED = 'group_changed'; + const ACTION_EMAIL_SENT = 'email_sent'; + const ACTION_BOUNCED = 'bounced'; + + public static $actionLabels = [ + self::ACTION_SUBSCRIBED => 'Angemeldet', + self::ACTION_UNSUBSCRIBED => 'Abgemeldet', + self::ACTION_BOOKING_ADDED => 'Buchung hinzugefügt', + self::ACTION_STATUS_CHANGED => 'Status geändert', + self::ACTION_GROUP_CHANGED => 'Gruppe geändert', + self::ACTION_EMAIL_SENT => 'E-Mail versendet', + self::ACTION_BOUNCED => 'Bounced', + ]; + + /** + * Beziehung zum Newsletter-Kontakt + */ + public function newsletter_contact() + { + return $this->belongsTo(NewsletterContact::class, 'newsletter_contact_id'); + } + + /** + * Beziehung zum Admin-User + */ + public function user() + { + return $this->belongsTo(SfGuardUser::class, 'user_id'); + } + + /** + * Action-Label + */ + public function getActionLabelAttribute() + { + return self::$actionLabels[$this->action] ?? $this->action; + } +} + diff --git a/app/Models/Offer.php b/app/Models/Offer.php index dd276b9..02b503c 100644 --- a/app/Models/Offer.php +++ b/app/Models/Offer.php @@ -1,56 +1,132 @@ 'int', - 'total' => 'float', - 'binary_data' => 'boolean' - ]; + public const STATUSES = [ + self::STATUS_DRAFT, + self::STATUS_SENT, + self::STATUS_ACCEPTED, + self::STATUS_DECLINED, + self::STATUS_EXPIRED, + self::STATUS_WITHDRAWN, + ]; - protected $fillable = [ - 'lead_id', - 'total', - 'binary_data' - ]; + protected $table = 'offers'; - public function lead() - { - return $this->belongsTo(Lead::class); - } + protected $fillable = [ + 'offer_number', + 'contact_id', + 'inquiry_id', + 'booking_id', + 'status', + 'current_version_id', + 'created_by', + ]; + + protected $casts = [ + 'contact_id' => 'int', + 'inquiry_id' => 'int', + 'booking_id' => 'int', + 'current_version_id' => 'int', + 'created_by' => 'int', + ]; + + public function contact(): BelongsTo + { + return $this->belongsTo(Contact::class); + } + + public function inquiry(): BelongsTo + { + // Nach Modul 3 Phase 2: `Lead`-Model bildet die `inquiries`-Tabelle ab + return $this->belongsTo(Lead::class, 'inquiry_id'); + } + + public function booking(): BelongsTo + { + return $this->belongsTo(Booking::class); + } + + public function currentVersion(): BelongsTo + { + return $this->belongsTo(OfferVersion::class, 'current_version_id'); + } + + public function versions(): HasMany + { + return $this->hasMany(OfferVersion::class)->orderBy('version_no'); + } + + public function accessTokens(): HasMany + { + return $this->hasMany(OfferAccessToken::class); + } + + public function creator(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function scopeStatus(Builder $q, string $status): Builder + { + return $q->where('status', $status); + } + + public function scopeOpen(Builder $q): Builder + { + return $q->whereIn('status', [self::STATUS_DRAFT, self::STATUS_SENT]); + } + + public function isEditable(): bool + { + return in_array($this->status, [self::STATUS_DRAFT, self::STATUS_SENT], true); + } } diff --git a/app/Models/OfferAccessToken.php b/app/Models/OfferAccessToken.php new file mode 100644 index 0000000..54fb1c3 --- /dev/null +++ b/app/Models/OfferAccessToken.php @@ -0,0 +1,120 @@ + 'int', + 'offer_version_id' => 'int', + 'expires_at' => 'datetime', + 'first_opened_at' => 'datetime', + 'revoked_at' => 'datetime', + ]; + + public function offer(): BelongsTo + { + return $this->belongsTo(Offer::class); + } + + public function version(): BelongsTo + { + return $this->belongsTo(OfferVersion::class, 'offer_version_id'); + } + + public function scopeActive(Builder $q): Builder + { + return $q->whereNull('revoked_at') + ->where(function (Builder $q) { + $q->whereNull('expires_at')->orWhere('expires_at', '>', now()); + }); + } + + /** + * Erzeugt ein neues Token für die angegebene Version und liefert + * den Klartext-Token zurück (nur einmalig abrufbar). In der + * Datenbank wird nur der Hash persistiert. + */ + public static function generate( + Offer $offer, + OfferVersion $version, + ?Carbon $expiresAt = null + ): array { + $plain = Str::random(48); + $hash = hash('sha256', $plain); + + /** @var self $token */ + $token = self::create([ + 'offer_id' => $offer->id, + 'offer_version_id' => $version->id, + 'token_hash' => $hash, + 'expires_at' => $expiresAt, + ]); + + return ['plain' => $plain, 'token' => $token]; + } + + /** + * Lookup per Klartext-Token (konstantzeitig via DB-Unique-Index). + */ + public static function findByPlainToken(string $plain): ?self + { + return self::where('token_hash', hash('sha256', $plain))->first(); + } + + public function isActive(): bool + { + if ($this->revoked_at !== null) { + return false; + } + if ($this->expires_at !== null && $this->expires_at->isPast()) { + return false; + } + + return true; + } +} diff --git a/app/Models/OfferFile.php b/app/Models/OfferFile.php new file mode 100644 index 0000000..be9332c --- /dev/null +++ b/app/Models/OfferFile.php @@ -0,0 +1,99 @@ + 'int', + 'size' => 'int', + 'include_in_pdf' => 'bool', + ]; + + public static array $iconExt = [ + 'default' => 'fa fa-file', + 'pdf' => 'fa fa-file-pdf', + 'jpg' => 'fa fa-file-image', + 'jpeg' => 'fa fa-file-image', + 'png' => 'fa fa-file-image', + 'doc' => 'fa fa-file-word', + 'docx' => 'fa fa-file-word', + ]; + + public function version(): BelongsTo + { + return $this->belongsTo(OfferVersion::class, 'offer_version_id'); + } + + public function getIconExt(): string + { + return self::$iconExt[$this->ext] ?? self::$iconExt['default']; + } + + public function getURL(bool|string $do = false): string + { + return route('storage_file', [$this->id, 'offer', $do]); + } + + public function getPath(): string + { + return \Storage::disk('offer')->path($this->dir . $this->filename); + } + + public function formatBytes(int $precision = 2): string + { + $size = $this->size; + if ($size <= 0) { + return (string) $size; + } + + $base = log($size) / log(1024); + $suffixes = [' bytes', ' KB', ' MB', ' GB', ' TB']; + + return round(1024 ** ($base - floor($base)), $precision) . $suffixes[floor($base)]; + } +} diff --git a/app/Models/OfferItem.php b/app/Models/OfferItem.php new file mode 100644 index 0000000..9baf8f8 --- /dev/null +++ b/app/Models/OfferItem.php @@ -0,0 +1,86 @@ + 'int', + 'position' => 'int', + 'quantity' => 'int', + 'price_per_unit' => 'decimal:2', + 'total_price' => 'decimal:2', + 'travel_program_id' => 'int', + 'fewo_lodging_id' => 'int', + 'metadata' => 'array', + ]; + + public function version(): BelongsTo + { + return $this->belongsTo(OfferVersion::class, 'offer_version_id'); + } + + /** + * Aus Menge × Einzelpreis den Positions-Gesamtpreis berechnen + * (Rabatte negativ — gehört in den Service-Layer zur Summierung). + */ + public function calculateTotal(): float + { + return round($this->quantity * (float) $this->price_per_unit, 2); + } +} diff --git a/app/Models/OfferTemplate.php b/app/Models/OfferTemplate.php new file mode 100644 index 0000000..2f49ec6 --- /dev/null +++ b/app/Models/OfferTemplate.php @@ -0,0 +1,77 @@ + 'int', + 'default_items' => 'array', + 'is_active' => 'bool', + 'created_by' => 'int', + ]; + + public function branch(): BelongsTo + { + return $this->belongsTo(Branch::class); + } + + public function creator(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function scopeActive(Builder $q): Builder + { + return $q->where('is_active', true); + } +} diff --git a/app/Models/OfferVersion.php b/app/Models/OfferVersion.php new file mode 100644 index 0000000..d85b1a5 --- /dev/null +++ b/app/Models/OfferVersion.php @@ -0,0 +1,126 @@ + 'int', + 'version_no' => 'int', + 'valid_until' => 'date', + 'total_price' => 'decimal:2', + 'template_id' => 'int', + 'pdf_archived' => 'bool', + 'sent_at' => 'datetime', + 'accepted_at' => 'datetime', + 'template_document_ids' => 'array', + 'created_by' => 'int', + ]; + + public function offer(): BelongsTo + { + return $this->belongsTo(Offer::class); + } + + public function template(): BelongsTo + { + return $this->belongsTo(OfferTemplate::class, 'template_id'); + } + + public function items(): HasMany + { + return $this->hasMany(OfferItem::class)->orderBy('position'); + } + + public function files(): HasMany + { + return $this->hasMany(OfferFile::class); + } + + public function creator(): BelongsTo + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function isEditable(): bool + { + return $this->status === self::STATUS_DRAFT; + } +} diff --git a/app/Models/Page.php b/app/Models/Page.php index 8dbaaa5..82e8ac4 100644 --- a/app/Models/Page.php +++ b/app/Models/Page.php @@ -1,11 +1,18 @@ $child_pages + * @property-read int|null $child_pages_count + * @property-read int|null $pages_count + * @property-read Page|null $parent_page + * @property-read int|null $travel_countries_count + * @method static \Illuminate\Database\Eloquent\Builder|Page findSimilarSlugs(string $attribute, array $config, string $slug) + * @method static \Illuminate\Database\Eloquent\Builder|Page newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Page newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|Page query() + * @method static \Illuminate\Database\Eloquent\Builder|Page whereBeforeTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereBoxBody($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereBoxDiscount($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereBoxImageUrl($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereBoxStar($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereBumaDestination($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereBumaGjr($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereCanonicalUrl($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereCatalogId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereCatalogIndex($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereCmsSettings($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereContent($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereContentNew($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereDescription($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereFewoLodging($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereKeyword($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereKeywords($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereLft($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereLvl($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereModel($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereOLDCatalogID($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereOLDOwnerID($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereOrder($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereOwner($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereOwnerSecond($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page wherePagetitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereParentId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page wherePriceTags($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereRealUrlPath($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereRgt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereShowInNavi($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereTemplate($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereTextRight($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereTitle($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereTitleShort($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereTravelGuideContentId($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereTravelProgram($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereTreeRoot($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|Page withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) * @mixin \Eloquent - * @property int|null $travel_guide_content_id - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTravelGuideContentId($value) - * @property string|null $title_short - * @property string|null $before_title - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereBeforeTitle($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Page whereTitleShort($value) */ class Page extends Model { - protected $connection = 'mysql_stern'; + use Sluggable; - protected $table = 'page'; + protected $connection = 'mysql_stern'; + protected $table = 'page'; + + protected $casts = [ + 'owner' => 'int', + 'lvl' => 'int', + 'owner_second' => 'int', + 'catalog_id' => 'int', + 'catalog_index' => 'int', + 'travel_program' => 'int', + 'status' => 'int', + 'show_in_navi' => 'int', + 'order' => 'int', + 'OLD_CatalogID' => 'int', + 'OLD_OwnerID' => 'int', + 'buma_gjr' => 'int', + 'price-tags' => 'bool', + 'country_id' => 'int', + 'lft' => 'int', + 'rgt' => 'int', + 'tree_root' => 'int', + 'parent_id' => 'int', + 'travel_guide_content_id' => 'int', + 'fewo_lodging' => 'int', + 'date' => 'datetime', + ]; + + + protected $fillable = [ + 'owner', + 'model', + 'lvl', + 'owner_second', + 'catalog_id', + 'catalog_index', + 'slug', + 'travel_program', + 'status', + 'show_in_navi', + 'order', + 'title', + 'title_short', + 'before_title', + 'pagetitle', + 'description', + 'keywords', + 'content', + 'content_new', + 'buma_destination', + 'OLD_CatalogID', + 'OLD_OwnerID', + 'buma_gjr', + 'date', + 'price-tags', + 'text_right', + 'keyword', + 'canonical_url', + 'country_id', + 'template', + 'lft', + 'rgt', + 'tree_root', + 'parent_id', + 'real_url_path', + 'travel_guide_content_id', + 'box_body', + 'box_image_url', + 'box_star', + 'box_discount', + 'cms_settings', + 'fewo_lodging' + ]; + + public function sluggable(): array + { + return [ + 'slug' => [ + 'source' => 'title' + ] + ]; + } + + public function page() + { + return $this->belongsTo(Page::class, 'tree_root'); + } + + public function fewo_lodging() + { + return $this->belongsTo(FewoLodging::class, 'fewo_lodging'); + } + + public function travel_country() + { + return $this->belongsTo(TravelCountry::class, 'country_id'); + } + + public function travel_guide() + { + return $this->belongsTo(TravelGuide::class, 'travel_guide_content_id'); + } + + public function pages() + { + return $this->hasMany(Page::class, 'tree_root'); + } + + public function redirects() + { + //return $this->hasMany(Redirect::class); + } + + public function travel_countries() + { + return $this->hasMany(TravelCountry::class, 'feedback_page_id'); + } + + public function child_pages() + { + return $this->hasMany(Page::class, 'owner'); + } + + public function parent_page() + { + return $this->belongsTo(Page::class, 'parent_id'); + } + + public function travel_program_content() + { + return $this->belongsTo(TravelProgram::class, 'travel_program'); + } + + + public function getContentNew() + { + return $this->content_new ? $this->content_new : $this->content; + } } diff --git a/app/Models/Participant.php b/app/Models/Participant.php index f6fcb88..7d84851 100644 --- a/app/Models/Participant.php +++ b/app/Models/Participant.php @@ -32,7 +32,6 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereParticipantFirstname($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereParticipantName($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereParticipantSalutationId($value) - * @mixin \Eloquent * @property int|null $nationality_id * @property-read \App\Models\TravelNationality|null $travel_nationality * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Participant whereNationalityId($value) @@ -40,6 +39,7 @@ use Illuminate\Database\Eloquent\Model; * @property bool|null $participant_storno * @method static \Illuminate\Database\Eloquent\Builder|Participant whereParticipantPass($value) * @method static \Illuminate\Database\Eloquent\Builder|Participant whereParticipantStorno($value) + * @mixin \Eloquent */ class Participant extends Model { @@ -53,13 +53,10 @@ class Participant extends Model 'participant_salutation_id' => 'int', 'participant_child' => 'bool', 'participant_pass' => 'bool', - 'participant_storno' => 'bool' - + 'participant_storno' => 'bool', + 'participant_birthdate' => 'datetime', ]; - protected $dates = [ - 'participant_birthdate' - ]; protected $fillable = [ 'booking_id', diff --git a/app/Models/ServiceProvider.php b/app/Models/ServiceProvider.php index 1a038a4..2eb9b1b 100644 --- a/app/Models/ServiceProvider.php +++ b/app/Models/ServiceProvider.php @@ -26,13 +26,13 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereType($value) - * @mixin \Eloquent * @property array|null $contact_emails * @property bool|null $active * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereActive($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ServiceProvider whereContactEmails($value) * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ServiceProviderService[] $service_provider_services * @property-read int|null $service_provider_services_count + * @mixin \Eloquent */ class ServiceProvider extends Model { diff --git a/app/Models/ServiceProviderEntry.php b/app/Models/ServiceProviderEntry.php index 07ee5a2..055f7ba 100644 --- a/app/Models/ServiceProviderEntry.php +++ b/app/Models/ServiceProviderEntry.php @@ -55,12 +55,10 @@ class ServiceProviderEntry extends Model 'amount' => 'float', 'amount_eur' => 'float', 'factor' => 'float', - 'is_cleared' => 'bool' + 'is_cleared' => 'bool', + 'payment_date' => 'datetime', ]; - protected $dates = [ - 'payment_date' - ]; protected $fillable = [ 'booking_id', diff --git a/app/Models/SfGuardUser.php b/app/Models/SfGuardUser.php index 145747e..4b94e4a 100755 --- a/app/Models/SfGuardUser.php +++ b/app/Models/SfGuardUser.php @@ -49,12 +49,12 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser whereUsername($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SfGuardUser query() * @property-read \App\User|null $user * @property-read mixed $fullname + * @mixin \Eloquent */ class SfGuardUser extends Model { diff --git a/app/Models/SidebarWidget.php b/app/Models/SidebarWidget.php index a971d77..fcb8440 100644 --- a/app/Models/SidebarWidget.php +++ b/app/Models/SidebarWidget.php @@ -25,10 +25,10 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget wherePos($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereShowAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget whereUpdatedAt($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\SidebarWidget query() + * @mixin \Eloquent */ class SidebarWidget extends Model { @@ -54,6 +54,7 @@ class SidebarWidget extends Model 'travelGuideSidebarWidget' => 'Reiseführer', 'travelMagazineSidebarWidget' => 'Reisemagazin', 'offersSidebarWidget' => 'Angebote', + 'newsSidebarWidget' => 'News', ]; diff --git a/app/Models/StatusHistory.php b/app/Models/StatusHistory.php index 16b3fae..4a5b647 100644 --- a/app/Models/StatusHistory.php +++ b/app/Models/StatusHistory.php @@ -47,14 +47,12 @@ class StatusHistory extends Model protected $casts = [ 'status_id' => 'int', 'lead_id' => 'int', - 'sf_guard_user_id' => 'int' + 'sf_guard_user_id' => 'int', + 'date' => 'datetime', + 'target_date' => 'datetime', + 'created_at' => 'datetime', ]; - protected $dates = [ - 'date', - 'target_date', - 'created_at' - ]; protected $fillable = [ 'status_id', diff --git a/app/Models/Sym/Arrangement.php b/app/Models/Sym/Arrangement.php index a4ea7e9..1cd9d4c 100644 --- a/app/Models/Sym/Arrangement.php +++ b/app/Models/Sym/Arrangement.php @@ -30,10 +30,10 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement whereTypeId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement whereTypeS($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement whereViewPosition($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\Arrangement query() + * @mixin \Eloquent */ class Arrangement extends Model { diff --git a/app/Models/Sym/ArrangementTemplate.php b/app/Models/Sym/ArrangementTemplate.php index 8874c28..7d38bb1 100644 --- a/app/Models/Sym/ArrangementTemplate.php +++ b/app/Models/Sym/ArrangementTemplate.php @@ -13,11 +13,11 @@ use Illuminate\Database\Eloquent\Model; * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Sym\Arrangement[] $arrangements * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\ArrangementTemplate whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\ArrangementTemplate whereTitle($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\ArrangementTemplate newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\ArrangementTemplate newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\ArrangementTemplate query() * @property-read int|null $arrangements_count + * @mixin \Eloquent */ class ArrangementTemplate extends Model { diff --git a/app/Models/Sym/CmsContent.php b/app/Models/Sym/CmsContent.php index 97de5c6..d206f22 100644 --- a/app/Models/Sym/CmsContent.php +++ b/app/Models/Sym/CmsContent.php @@ -32,7 +32,6 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereSlug($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereText($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereUpdatedAt($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent findSimilarSlugs($attribute, $config, $slug) * @property string|null $identifier * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereIdentifier($value) @@ -41,6 +40,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent whereObject($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\CmsContent wherePos($value) * @method static \Illuminate\Database\Eloquent\Builder|CmsContent withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent */ class CmsContent extends Model { @@ -62,7 +62,7 @@ class CmsContent extends Model public $timestamps = false; - public function sluggable() + public function sluggable(): array { return [ 'slug' => [ diff --git a/app/Models/Sym/TravelCountry.php b/app/Models/Sym/TravelCountry.php index 133ae8d..ec08d33 100644 --- a/app/Models/Sym/TravelCountry.php +++ b/app/Models/Sym/TravelCountry.php @@ -20,7 +20,6 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereIsCustomerCountry($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereName($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry query() @@ -53,6 +52,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Sym\TravelCountry whereDestco($value) * @property string|null $visum_text * @method static \Illuminate\Database\Eloquent\Builder|TravelCountry whereVisumText($value) + * @mixin \Eloquent */ class TravelCountry extends Model { diff --git a/app/Models/TravelAgenda.php b/app/Models/TravelAgenda.php index 7696b94..564002f 100644 --- a/app/Models/TravelAgenda.php +++ b/app/Models/TravelAgenda.php @@ -17,10 +17,10 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda whereTravelcountryId($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelAgenda query() + * @mixin \Eloquent */ class TravelAgenda extends Model { diff --git a/app/Models/TravelArrivalPoint.php b/app/Models/TravelArrivalPoint.php new file mode 100644 index 0000000..2133e69 --- /dev/null +++ b/app/Models/TravelArrivalPoint.php @@ -0,0 +1,87 @@ + $travel_programs + * @property-read int|null $travel_programs_count + * @method static \Illuminate\Database\Eloquent\Builder|TravelArrivalPoint whereActive($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelArrivalPoint whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelArrivalPoint whereTravelCountryId($value) + * @mixin \Eloquent + */ +class TravelArrivalPoint extends Model +{ + protected $connection = 'mysql_stern'; + + protected $table = 'travel_arrival_point'; + public $timestamps = false; + + protected $casts = [ + 'travel_country_id' => 'int', + ]; + + protected $fillable = [ + 'name', + 'travel_country_id', + 'active' + + ]; + + public function travel_programs() + { + return $this->hasMany(TravelProgram::class, 'travel_arrival_point_id'); + } + + //on crm + /* public function travel_country_crm() + { + return $this->belongsTo('App\Models\Sym\TravelCountry', 'travel_country_id', 'crm_id'); + } + */ + + + //on stern DB relaunch + public function travel_country() + { + return $this->belongsTo('App\Models\TravelCountry', 'travel_country_id', 'id'); + } +} diff --git a/app/Models/TravelBooking.php b/app/Models/TravelBooking.php index 3f04f46..357e380 100644 --- a/app/Models/TravelBooking.php +++ b/app/Models/TravelBooking.php @@ -10,101 +10,102 @@ use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; /** - * Class TravelBooking + * App\Models\TravelBooking * * @property int $id - * @property int $salutation_id - * @property string $first_name - * @property string $last_name - * @property string $street - * @property string $zipcode - * @property string $city - * @property int $country_id - * @property string $fax - * @property string $phone - * @property string $mobile - * @property string $comments - * @property string $email - * @property Carbon $created - * @property Carbon $selected_start_date - * @property Carbon $selected_end_date - * @property string $program_name - * @property string $selected_travel - * @property string $selected_departure - * @property int $program_id - * @property int $period_id - * @property string $class - * @property int $selected_adults - * @property int $selected_childs - * @property int $participants_total - * @property string $participants - * @property string $drafts - * @property string $service_items - * @property string $arrangements - * @property string $rooms - * @property float $price - * @property float $price_total - * @property float $deposit_total - * @property float $final_payment - * @property Carbon $final_payment_date - * @property string $insurance_name - * @property string $insurances - * @property int $travel_cancellation - * @property string $options - * @property string $class_options - * @property string $extra_category - * @property bool $accept_legal_rights - * @property string $ip - * @package App\Models - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking newModelQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking newQuery() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking query() - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereAcceptLegalRights($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereArrangements($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereCity($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereClass($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereClassOptions($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereComments($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereCountryId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereCreated($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereDepositTotal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereDrafts($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereEmail($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereExtraCategory($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereFax($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereFinalPayment($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereFinalPaymentDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereFirstName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereInsuranceName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereInsurances($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereIp($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereLastName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereMobile($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereOptions($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereParticipants($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereParticipantsTotal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking wherePeriodId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking wherePhone($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking wherePrice($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking wherePriceTotal($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereProgramId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereProgramName($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereRooms($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSalutationId($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedAdults($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedChilds($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedDeparture($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedEndDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedStartDate($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereSelectedTravel($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereServiceItems($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereStreet($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereTravelCancellation($value) - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereZipcode($value) - * @mixin \Eloquent * @property int|null $crm_booking_id - * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBooking whereCrmBookingId($value) + * @property int|null $salutation_id + * @property string|null $first_name + * @property string|null $last_name + * @property string|null $street + * @property string|null $zipcode + * @property string|null $city + * @property int|null $country_id + * @property string|null $fax + * @property string|null $phone + * @property string|null $mobile + * @property string|null $email + * @property string|null $comments + * @property \Illuminate\Support\Carbon|null $created + * @property \Illuminate\Support\Carbon|null $selected_start_date + * @property \Illuminate\Support\Carbon|null $selected_end_date + * @property string|null $program_name + * @property array|null $selected_travel + * @property array|null $selected_departure + * @property int|null $program_id + * @property int|null $period_id + * @property string|null $class + * @property int|null $selected_adults + * @property int|null $selected_childs + * @property int|null $participants_total + * @property array|null $participants + * @property array|null $drafts + * @property array|null $service_items + * @property array|null $arrangements + * @property array|null $rooms + * @property float|null $price + * @property float|null $price_total + * @property float|null $deposit_total + * @property float|null $final_payment + * @property \Illuminate\Support\Carbon|null $final_payment_date + * @property string|null $insurance_name + * @property array|null $insurances + * @property int|null $insurance_offer + * @property int|null $travel_cancellation + * @property array|null $options + * @property array $class_options + * @property array $extra_category + * @property bool|null $accept_legal_rights + * @property string|null $ip + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking query() + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereAcceptLegalRights($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereArrangements($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereCity($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereClass($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereClassOptions($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereComments($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereCreated($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereCrmBookingId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereDepositTotal($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereDrafts($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereEmail($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereExtraCategory($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereFax($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereFinalPayment($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereFinalPaymentDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereFirstName($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereInsuranceName($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereInsuranceOffer($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereInsurances($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereIp($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereLastName($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereMobile($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereOptions($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereParticipants($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereParticipantsTotal($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking wherePeriodId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking wherePhone($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking wherePrice($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking wherePriceTotal($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereProgramId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereProgramName($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereRooms($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereSalutationId($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereSelectedAdults($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereSelectedChilds($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereSelectedDeparture($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereSelectedEndDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereSelectedStartDate($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereSelectedTravel($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereServiceItems($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereStreet($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereTravelCancellation($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelBooking whereZipcode($value) + * @mixin \Eloquent */ class TravelBooking extends Model { @@ -136,15 +137,13 @@ class TravelBooking extends Model 'options' => 'array', 'class_options' => 'array', 'extra_category' => 'array', - 'insurances' => 'array' + 'insurances' => 'array', + 'created' => 'datetime', + 'selected_start_date' => 'datetime', + 'selected_end_date' => 'datetime', + 'final_payment_date' => 'datetime', ]; - protected $dates = [ - 'created', - 'selected_start_date', - 'selected_end_date', - 'final_payment_date' - ]; protected $fillable = [ 'crm_booking_id', diff --git a/app/Models/TravelBookingFewoChannel.php b/app/Models/TravelBookingFewoChannel.php index 0a16195..5c75fe8 100644 --- a/app/Models/TravelBookingFewoChannel.php +++ b/app/Models/TravelBookingFewoChannel.php @@ -18,7 +18,6 @@ use Illuminate\Database\Eloquent\Model; * @property \Carbon\Carbon $updated_at * @property \Illuminate\Database\Eloquent\Collection $travel_user_booking_fewos * @package App\Models - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel query() @@ -27,6 +26,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelBookingFewoChannel whereUpdatedAt($value) * @property-read int|null $travel_user_booking_fewos_count + * @mixin \Eloquent */ class TravelBookingFewoChannel extends Model { diff --git a/app/Models/TravelCategory.php b/app/Models/TravelCategory.php index 1d9f6de..3d93d0e 100644 --- a/app/Models/TravelCategory.php +++ b/app/Models/TravelCategory.php @@ -24,6 +24,10 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCategory query() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCategory whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCategory whereName($value) + * @property int|null $active + * @property-read Collection $travel_programs + * @property-read int|null $travel_programs_count + * @method static \Illuminate\Database\Eloquent\Builder|TravelCategory whereActive($value) * @mixin \Eloquent */ class TravelCategory extends Model @@ -34,7 +38,8 @@ class TravelCategory extends Model public $timestamps = false; protected $fillable = [ - 'name' + 'name', + 'active' ]; public function bookings() @@ -46,4 +51,9 @@ class TravelCategory extends Model { return $this->hasMany(Lead::class, 'travelcategory_id'); } + + public function travel_programs() + { + return $this->hasMany(TravelProgram::class, 'travel_category'); + } } diff --git a/app/Models/TravelClass.php b/app/Models/TravelClass.php index b0b0539..88c3553 100644 --- a/app/Models/TravelClass.php +++ b/app/Models/TravelClass.php @@ -23,12 +23,12 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereProgramId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereStandard($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass whereUpdatedAt($value) - * @mixin \Eloquent * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelProgramDraft[] $travel_program_drafts * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelClass query() * @property-read int|null $travel_program_drafts_count + * @mixin \Eloquent */ class TravelClass extends Model { @@ -53,4 +53,5 @@ class TravelClass extends Model { return $this->hasMany('App\Models\TravelProgramDraft', 'travel_class_id', 'id'); } + } diff --git a/app/Models/TravelCompany.php b/app/Models/TravelCompany.php index 87c0f94..4570678 100644 --- a/app/Models/TravelCompany.php +++ b/app/Models/TravelCompany.php @@ -31,47 +31,47 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereIsInhouse($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany wherePercentage($value) - * @mixin \Eloquent * @property int|null $active * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereActive($value) * @property array|null $contact_emails * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCompany whereContactEmails($value) * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelCompanyService[] $travel_company_services * @property-read int|null $travel_company_services_count + * @mixin \Eloquent */ class TravelCompany extends Model { protected $connection = 'mysql'; protected $table = 'travel_company'; - public $timestamps = false; + public $timestamps = false; - protected $casts = [ - 'percentage' => 'float', - 'is_allowed_edit_commission' => 'bool', - 'is_inhouse' => 'bool', + protected $casts = [ + 'percentage' => 'float', + 'is_allowed_edit_commission' => 'bool', + 'is_inhouse' => 'bool', 'active' => 'bool', 'contact_emails' => 'array' ]; - protected $fillable = [ - 'name', - 'percentage', - 'is_allowed_edit_commission', - 'is_inhouse', + protected $fillable = [ + 'name', + 'percentage', + 'is_allowed_edit_commission', + 'is_inhouse', 'contact_emails', 'active' ]; - public function bookings() - { - return $this->hasMany(Booking::class); - } + public function bookings() + { + return $this->hasMany(Booking::class); + } - public function booking_service_items() - { - return $this->hasMany(BookingServiceItem::class); - } + public function booking_service_items() + { + return $this->hasMany(BookingServiceItem::class); + } public function travel_company_services() { return $this->hasMany(TravelCompanyService::class, 'travel_company_id', 'id')->orderBy('pos', 'DESC'); @@ -84,7 +84,7 @@ class TravelCompany extends Model public function getPercentageAttribute() { - return Util::_number_format($this->attributes['percentage']); + return isset($this->attributes['percentage']) ? Util::_number_format($this->attributes['percentage']) : 0; } public function getPercentageRaw() diff --git a/app/Models/TravelCountry.php b/app/Models/TravelCountry.php index 04c7c23..71e59cd 100644 --- a/app/Models/TravelCountry.php +++ b/app/Models/TravelCountry.php @@ -33,7 +33,6 @@ use Illuminate\Support\Str; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereIsCustomerCountry($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereUpdatedAt($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry query() @@ -73,6 +72,7 @@ use Illuminate\Support\Str; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelCountry whereDestco($value) * @property string|null $visum_text * @method static \Illuminate\Database\Eloquent\Builder|TravelCountry whereVisumText($value) + * @mixin \Eloquent */ class TravelCountry extends Model { diff --git a/app/Models/TravelGerneralNote.php b/app/Models/TravelGerneralNote.php new file mode 100644 index 0000000..7719955 --- /dev/null +++ b/app/Models/TravelGerneralNote.php @@ -0,0 +1,66 @@ + $travel_programs + * @property-read int|null $travel_programs_count + * @method static \Illuminate\Database\Eloquent\Builder|TravelGerneralNote whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|TravelGerneralNote whereText($value) + * @mixin \Eloquent + */ +class TravelGerneralNote extends Model +{ + protected $connection = 'mysql_stern'; + protected $table = 'travel_general_notes'; + public $timestamps = false; + + + protected $fillable = [ + 'name', + 'text', + // 'active' + + ]; + + public function travel_programs() + { + return $this->hasMany(TravelProgram::class, 'generalnote'); + } +} diff --git a/app/Models/TravelGuide.php b/app/Models/TravelGuide.php index ea5c1b5..b2aec29 100644 --- a/app/Models/TravelGuide.php +++ b/app/Models/TravelGuide.php @@ -35,7 +35,6 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereSlug($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereText($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereUpdatedAt($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide query() @@ -52,6 +51,7 @@ use Illuminate\Database\Eloquent\Model; * @property-read \App\Models\CMSAuthor|null $author * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelGuide whereAuthorId($value) * @method static \Illuminate\Database\Eloquent\Builder|TravelGuide withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent */ class TravelGuide extends Model { @@ -75,7 +75,7 @@ class TravelGuide extends Model ]; - public function sluggable() + public function sluggable(): array { return [ 'slug' => [ diff --git a/app/Models/TravelNationality.php b/app/Models/TravelNationality.php index b6ddc89..a6ef712 100644 --- a/app/Models/TravelNationality.php +++ b/app/Models/TravelNationality.php @@ -13,12 +13,12 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality whereActive($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality whereName($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality query() * @property string|null $nat * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationality whereNat($value) + * @mixin \Eloquent */ class TravelNationality extends Model { diff --git a/app/Models/TravelNationalityRequirement.php b/app/Models/TravelNationalityRequirement.php index dcd1480..165d2a2 100644 --- a/app/Models/TravelNationalityRequirement.php +++ b/app/Models/TravelNationalityRequirement.php @@ -17,10 +17,10 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement whereText($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement whereTravelCountryId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement whereTravelNationalityId($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelNationalityRequirement query() + * @mixin \Eloquent */ class TravelNationalityRequirement extends Model { diff --git a/app/Models/TravelPageGuide.php b/app/Models/TravelPageGuide.php index a43e846..4037ad8 100644 --- a/app/Models/TravelPageGuide.php +++ b/app/Models/TravelPageGuide.php @@ -96,11 +96,11 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelPageGuide whereTravelProgram($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelPageGuide whereTreeRoot($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelPageGuide whereUpdatedAt($value) - * @mixin \Eloquent * @property string|null $title_short * @property string|null $before_title * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelPageGuide whereBeforeTitle($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelPageGuide whereTitleShort($value) + * @mixin \Eloquent */ class TravelPageGuide extends Model { diff --git a/app/Models/TravelProgram.php b/app/Models/TravelProgram.php index 9d059ff..19253cb 100644 --- a/app/Models/TravelProgram.php +++ b/app/Models/TravelProgram.php @@ -1,26 +1,29 @@ 'float', + 'category_id' => 'int', + 'program_duration' => 'int', + 'is_seasonal' => 'bool', + 'youth' => 'bool', + 'program_type' => 'int', + 'organizer' => 'int', + 'generalnote' => 'int', + 'status' => 'int', + 'max_age_for_children' => 'int', + 'insurance_1' => 'int', + 'insurance_2' => 'int', + 'insurance_3' => 'int', + 'insurance_4' => 'int', + 'in_slider' => 'bool', + 'show_map' => 'bool', + 'travel_country' => 'int', + 'travel_category' => 'int', + 'travel_agenda' => 'int', + 'travel_company' => 'int', + 'deposit_percent' => 'int', + 'netto_prices_in_euro' => 'bool', + 'default_flight_price' => 'float', + 'travel_arrival_point_id' => 'int', + 'position' => 'int', + 'discount' => 'float', + 'discount_is_percent_value' => 'int' + ]; - public function classes() + protected $fillable = [ + 'profit_margin', + 'category_id', + 'program_code', + 'program_duration', + 'is_seasonal', + 'youth', + 'title', + 'subtitle', + 'slider_info', + 'program_type', + 'organizer', + 'generalnote', + 'status', + 'included', + 'class_description', + 'excluded', + 'advices', + 'notes', + 'url', + 'max_age_for_children', + 'html_description', + 'payment_conditions', + 'insurance_1', + 'insurance_2', + 'insurance_3', + 'insurance_4', + 'in_slider', + 'show_map', + 'map_html', + 'map_image', + 'map_image_ext', + 'travel_country', + 'travel_category', + 'travel_agenda', + 'travel_company', + 'deposit_percent', + 'netto_prices_in_euro', + 'text_right', + 'default_flight_price', + 'travel_arrival_point_id', + 'weekdays', + 'position', + 'discount', + 'discount_is_percent_value' + ]; + + public static $programTypeTypes = [ + 0 => 'Eigenveranstaltung', + 1 => 'Vermittlung' + ]; + + public static $programDiscountTypes = [ + 0 => '€', + 1 => '%' + ]; + + + public static $travelCategoryTypes = [ + 1 => 'Ägypten-Reise', + 2 => 'Israel-Reise', + 3 => 'Jordanien-Reise', + 4 => 'Reise ohne Conversion-Code' + ]; + + public function travel_arrival_point() + { + return $this->belongsTo(TravelArrivalPoint::class, 'travel_arrival_point_id'); + } + //default 1 sterntours + public function travel_organizer() + { + //return $this->belongsTo(TravelOrganizer::class, 'organizer'); + } + + public function travel_insurance() + { + return $this->belongsTo(TravelInsurance::class, 'insurance_3'); + } + + public function travel_program_category() + { + return $this->belongsTo(TravelProgramCategory::class, 'category_id'); + } + + public function travel_general_note() + { + //return $this->belongsTo(TravelGeneralNote::class, 'generalnote'); + } + + public function option() + { + //return $this->hasOne(Option::class, 'program_id'); + } + + public function page() + { + return $this->hasOne(Page::class, 'travel_program'); + } + + public function classes() { - return $this->hasMany('App\Models\TravelClass', 'program_id', 'id'); + return $this->hasMany(TravelClass::class, 'program_id'); } - public function travel_program_drafts() - { - return $this->hasMany('App\Models\TravelProgramDraft', 'travel_program_id', 'id'); - } - public function travel_program_country() - { - return $this->hasOne('App\Models\TravelProgramCountry', 'program_id', 'id'); - } + public function travel_classes() + { + return $this->hasMany(TravelClass::class, 'program_id'); + } - public function hasTravelProgramDrafts (){ + public function travel_departure_points() + { + //return $this->hasMany(TravelDeparturePoint::class, 'program_id'); + } + + public function travel_periods() + { + //return $this->hasMany(TravelPeriod::class, 'program_id'); + } + + public function travel_program_country() + { + return $this->hasOne(TravelProgramCountry::class, 'program_id'); + } + + public function travel_program_destination() + { + //return $this->hasOne(TravelProgramDestination::class, 'program_id'); + } + + public function travel_program_drafts() + { + return $this->hasMany(TravelProgramDraft::class); + } + + public function travel_program_images() + { + //return $this->hasMany(TravelProgramImage::class, 'program_id'); + } + + public function travel_program_option() + { + //return $this->hasOne(TravelProgramOption::class, 'program_id'); + } + + public function travel_program_related() + { + //return $this->hasOne(TravelProgramRelated::class, 'program_2'); + } + + public function hasTravelProgramDrafts (){ if($this->travel_program_drafts->count()){ return true; } @@ -161,7 +336,7 @@ class TravelProgram extends Model return []; } - public function setWeekdaysFromArray($value){ + public function setWeekdaysFromArray($value){ if($value){ if(is_array($value)){ if($value[0] === NULL){ diff --git a/app/Models/TravelProgramCategory.php b/app/Models/TravelProgramCategory.php new file mode 100644 index 0000000..9d9c810 --- /dev/null +++ b/app/Models/TravelProgramCategory.php @@ -0,0 +1,45 @@ + $travel_programs + * @mixin \Eloquent + */ +class TravelProgramCategory extends Model +{ + protected $connection = 'mysql_stern'; + + protected $table = 'travel_category'; + public $timestamps = false; + + protected $fillable = [ + 'name', + ]; + + + public function travel_programs() + { + return $this->hasMany(TravelProgram::class, 'category_id'); + } +} diff --git a/app/Models/TravelProgramCountry.php b/app/Models/TravelProgramCountry.php index 61d7ee6..425da5b 100644 --- a/app/Models/TravelProgramCountry.php +++ b/app/Models/TravelProgramCountry.php @@ -14,10 +14,10 @@ use Illuminate\Database\Eloquent\Model; * @property-read \App\Models\TravelProgram|null $travel_program * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramCountry whereCountryId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramCountry whereProgramId($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramCountry newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramCountry newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramCountry query() + * @mixin \Eloquent */ class TravelProgramCountry extends Model { diff --git a/app/Models/TravelProgramDraft.php b/app/Models/TravelProgramDraft.php index 1610260..4f32e3a 100644 --- a/app/Models/TravelProgramDraft.php +++ b/app/Models/TravelProgramDraft.php @@ -24,10 +24,10 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereTravelProgramId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft whereWeekdays($value) - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelProgramDraft query() + * @mixin \Eloquent */ class TravelProgramDraft extends Model { @@ -58,4 +58,10 @@ class TravelProgramDraft extends Model { return $this->belongsTo(Draft::class, 'draft_id', 'id'); } + + public function getWeekdaysOrAll() + { + return ($this->weekdays !== NULL && $this->weekdays[0] !== null) ? $this->weekdays : [0 => "0", 1 => "1", 2 => "2", 3 => "3", 4 => "4", 5 => "5", 6 => "6"]; + } + } diff --git a/app/Models/TravelUser.php b/app/Models/TravelUser.php index 2113f88..86906be 100644 --- a/app/Models/TravelUser.php +++ b/app/Models/TravelUser.php @@ -42,7 +42,6 @@ use Illuminate\Database\Eloquent\Model; * @method static bool|null restore() * @method static \Illuminate\Database\Query\Builder|\App\Models\TravelUser withTrashed() * @method static \Illuminate\Database\Query\Builder|\App\Models\TravelUser withoutTrashed() - * @mixin \Eloquent * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser newQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser query() @@ -67,6 +66,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\TravelUser whereZipcode($value) * @property-read int|null $travel_user_booking_fewos_count + * @mixin \Eloquent */ class TravelUser extends Model { @@ -79,12 +79,10 @@ class TravelUser extends Model protected $casts = [ 'salutation_id' => 'int', 'travel_nationality_id' => 'int', - 'last_user_data' => 'array' + 'last_user_data' => 'array', + 'birthday' => 'datetime', ]; - protected $dates = [ - 'birthday' - ]; protected $hidden = [ 'password' @@ -109,6 +107,27 @@ class TravelUser extends Model 'last_user_data' ]; + public static $salutationType = [ + 1 => 'Herr', + 2 => 'Frau', + 3 => 'Divers/keine Anrede', + 4 => 'Firma' + ]; + + public static $salutationNameType = [ + 1 => 'Herr', + 2 => 'Frau', + 3 => '', + 4 => 'Firma' + ]; + + public static $salutationDearType = [ + 1 => 'geehrter', + 2 => 'geehrte', + 3 => 'geehrte:r', + 4 => '' + ]; + public function travel_nationality() { return $this->belongsTo(\App\Models\TravelNationality::class); @@ -132,7 +151,15 @@ class TravelUser extends Model $this->attributes['birthday'] = isset($value) ? (new Carbon($value))->format('Y-m-d') : NULL; } - public function getSalutation(){ - return $this->salutation_id == 1 ? 'Herr' : 'Frau'; + public function getSalutation(){ + return isset(self::$salutationType[$this->salutation_id]) ? self::$salutationType[$this->salutation_id] : ''; + } + + public function getSalutationName(){ + return isset(self::$salutationNameType[$this->salutation_id]) ? self::$salutationNameType[$this->salutation_id] : ''; + } + + public function getSalutationDear(){ + return isset(self::$salutationDearType[$this->salutation_id]) ? self::$salutationDearType[$this->salutation_id] : ''; } } diff --git a/app/Models/TravelUserBookingFewo.php b/app/Models/TravelUserBookingFewo.php index 6f48078..b8332b7 100644 --- a/app/Models/TravelUserBookingFewo.php +++ b/app/Models/TravelUserBookingFewo.php @@ -47,7 +47,6 @@ use App\Services\Util; * @method static bool|null restore() * @method static \Illuminate\Database\Query\Builder|\App\Models\TravelUserBookingFewo withTrashed() * @method static \Illuminate\Database\Query\Builder|\App\Models\TravelUserBookingFewo withoutTrashed() - * @mixin \Eloquent * @property int|null $fewo_reservation_id * @property float|null $price_balance * @property float|null $price_extra @@ -108,6 +107,9 @@ use App\Services\Util; * @property-read \App\Models\TravelUser $customer * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TravelUserBookingFewoNotice[] $booking_fewo_notices * @property-read int|null $booking_fewo_notices_count + * @property bool $is_calendar_traum_fewo + * @method static \Illuminate\Database\Eloquent\Builder|TravelUserBookingFewo whereIsCalendarTraumFewo($value) + * @mixin \Eloquent */ class TravelUserBookingFewo extends Model { @@ -149,6 +151,7 @@ class TravelUserBookingFewo extends Model 'price_total' => 'float', 'travel_booking_fewo_channel_id' => 'int', 'is_calendar_fewo_direct' => 'bool', + 'is_calendar_traum_fewo' => 'bool', 'is_calendar_hrs' => 'bool', 'is_calendar_stern_tours' => 'bool', 'status' => 'int', @@ -156,14 +159,12 @@ class TravelUserBookingFewo extends Model 'send_service_mail' => 'array', 'send_info_mail' => 'array', 'send_employee_mail' => 'array', + 'booking_date' => 'datetime', + 'from_date' => 'datetime', + 'to_date' => 'datetime', + 'deleted_at' => 'datetime', ]; - protected $dates = [ - 'booking_date', - 'from_date', - 'to_date', - 'deleted_at' - ]; protected $fillable = [ 'travel_user_id', @@ -187,6 +188,7 @@ class TravelUserBookingFewo extends Model 'travel_booking_fewo_channel_id', 'notice', 'is_calendar_fewo_direct', + 'is_calendar_traum_fewo', 'is_calendar_hrs', 'is_calendar_stern_tours', 'status', @@ -268,19 +270,20 @@ class TravelUserBookingFewo extends Model public function getCheckedBadgeCalendar(){ $back = ""; $back .= $this->is_calendar_fewo_direct ? ' ' : ' '; + $back .= $this->is_calendar_traum_fewo ? ' ' : ' '; $back .= $this->is_calendar_hrs ? ' ' : ' '; $back .= $this->is_calendar_stern_tours ? ' ' : ' '; return $back; } - public function getPersonsAttribute($value) + public function getPersonsAttribute() { $this->attributes['persons'] = $this->adults + $this->children; return $this->attributes['persons']; } - public function setPersonsAttribute( $value ) { + public function setPersonsAttribute($value) { $this->attributes['persons'] = $this->adults + $this->children; @@ -321,10 +324,9 @@ class TravelUserBookingFewo extends Model return $ret; } - public function getBookingDateAttribute($value) + public function getBookingDateAttribute() { - if(!$value){ return ""; } - return Carbon::parse($value)->format(Util::formatDateDB()); + return isset($this->attributes['booking_date']) ? Carbon::parse($this->attributes['booking_date'])->format(Util::formatDateDB()) : NULL; } public function setBookingDateAttribute( $value ) { @@ -332,10 +334,9 @@ class TravelUserBookingFewo extends Model } //from_date - public function getFromDateAttribute($value) + public function getFromDateAttribute() { - if(!$value){ return ""; } - return Carbon::parse($value)->format(Util::formatDateDB()); + return isset($this->attributes['from_date']) ? Carbon::parse($this->attributes['from_date'])->format(Util::formatDateDB()) : NULL; } public function setFromDateAttribute( $value ) { $this->attributes['from_date'] = isset($value) ? (new Carbon($value))->format('Y-m-d') : NULL; @@ -346,10 +347,9 @@ class TravelUserBookingFewo extends Model } //to_date - public function getToDateAttribute($value) + public function getToDateAttribute() { - if(!$value){ return ""; } - return Carbon::parse($value)->format(Util::formatDateDB()); + return isset($this->attributes['to_date']) ? Carbon::parse($this->attributes['to_date'])->format(Util::formatDateDB()) : NULL; } public function setToDateAttribute( $value ) { $this->attributes['to_date'] = isset($value) ? (new Carbon($value))->format('Y-m-d') : NULL; @@ -367,8 +367,7 @@ class TravelUserBookingFewo extends Model public function getPriceTravelAttribute($value) { - if(!$value){ return 0; } - return number_format(($this->attributes['price_travel']), 2, ',', '.'); + return isset($this->attributes['price_travel']) ? number_format(($this->attributes['price_travel']), 2, ',', '.') : 0; } public function getPriceTravelRaw() @@ -399,8 +398,7 @@ class TravelUserBookingFewo extends Model } public function getPriceBalanceAttribute($value) { - if(!$value){ return 0; } - return number_format(($this->attributes['price_balance']), 2, ',', '.'); + return isset($this->attributes['price_balance']) ? number_format(($this->attributes['price_balance']), 2, ',', '.') : 0; } public function getPriceBalanceRaw() { @@ -415,10 +413,10 @@ class TravelUserBookingFewo extends Model } public function getPriceTravelTotalAttribute($value) { - if(!$value){ + if(!isset($this->attributes['price_travel_total']) || $this->attributes['price_travel_total'] == 0){ $this->attributes['price_travel_total'] = $this->getPriceTravelRaw() + $this->getPriceBalanceRaw() + $this->getPriceExtraRaw(); - } - return number_format(($this->attributes['price_travel_total']), 2, ',', '.'); + } + return isset($this->attributes['price_travel_total']) ? number_format(($this->attributes['price_travel_total']), 2, ',', '.') : 0; } public function getPriceTravelTotalRaw() { @@ -436,8 +434,7 @@ class TravelUserBookingFewo extends Model public function getPriceDepositAttribute($value) { - if(!$value){ return 0; } - return number_format(($this->attributes['price_deposit']), 2, ',', '.'); + return isset($this->attributes['price_deposit']) ? number_format(($this->attributes['price_deposit']), 2, ',', '.') : 0; } public function getPriceDepositRaw() @@ -453,8 +450,7 @@ class TravelUserBookingFewo extends Model public function getPriceServiceAttribute($value) { - if(!$value){ return 0; } - return number_format(($this->attributes['price_service']), 2, ',', '.'); + return isset($this->attributes['price_service']) ? number_format(($this->attributes['price_service']), 2, ',', '.') : 0; } public function getPriceServiceRaw() @@ -471,8 +467,7 @@ class TravelUserBookingFewo extends Model public function getPriceTotalAttribute($value) { - if(!$value){ return 0; } - return number_format(($this->attributes['price_total']), 2, ',', '.'); + return isset($this->attributes['price_total']) ? number_format(($this->attributes['price_total']), 2, ',', '.') : 0; } public function getPriceTotalRaw() @@ -548,10 +543,18 @@ class TravelUserBookingFewo extends Model if(!Storage::disk('fewo_invoices')->exists( $dir )){ Storage::disk('fewo_invoices')->makeDirectory($dir); //creates directory } - $path = Storage::disk('fewo_invoices')->getAdapter()->getPathPrefix(); + $path = Storage::disk('fewo_invoices')->path(''); return $path.$dir; } + public function getInvoiceDir(){ + $dir = $this->getBookingDateYear()."/"; + if(!Storage::disk('fewo_invoices')->exists( $dir )){ + Storage::disk('fewo_invoices')->makeDirectory($dir); //creates directory + } + return $dir; + } + public function isInvoice(){ if($this->invoice_number){ $dir = $this->getBookingDateYear()."/"; @@ -616,10 +619,18 @@ class TravelUserBookingFewo extends Model if(!Storage::disk('fewo_infos')->exists( $dir )){ Storage::disk('fewo_infos')->makeDirectory($dir); //creates directory } - $path = Storage::disk('fewo_infos')->getAdapter()->getPathPrefix(); + $path = Storage::disk('fewo_infos')->path(''); return $path.$dir; } + public function getTravelInfoDir(){ + $dir = $this->getBookingDateYear()."/"; + if(!Storage::disk('fewo_infos')->exists( $dir )){ + Storage::disk('fewo_infos')->makeDirectory($dir); //creates directory + } + return $dir; + } + public function isTravelInfo(){ if($this->invoice_number){ $dir = $this->getBookingDateYear()."/"; @@ -696,8 +707,12 @@ class TravelUserBookingFewo extends Model if($this->travel_user){ if($this->travel_user->salutation_id == 1){ $salutation = __('Dear Sir')." ".$this->travel_user->last_name; - }else{ - $salutation = __('Dear Mrs')." ".$this->travel_user->last_name; + } + if($this->travel_user->salutation_id == 2){ + $salutation = __('Dear Mrs')." ".$this->travel_user->last_name; + } + if($this->travel_user->salutation_id == 4){ + $salutation = __('Dear customer')." ".$this->travel_user->last_name; } } return $salutation; diff --git a/app/Models/TravelUserBookingFewoNotice.php b/app/Models/TravelUserBookingFewoNotice.php index 1d291e6..c9a0a40 100644 --- a/app/Models/TravelUserBookingFewoNotice.php +++ b/app/Models/TravelUserBookingFewoNotice.php @@ -53,12 +53,10 @@ class TravelUserBookingFewoNotice extends Model 'from_user_id' => 'int', 'to_user_id' => 'int', 'show' => 'bool', - 'important' => 'bool' + 'important' => 'bool', + 'edit_at' => 'datetime', ]; - protected $dates = [ - 'edit_at' - ]; protected $fillable = [ 'travel_user_booking_fewo_id', diff --git a/app/Models/UserUpdateEmail.php b/app/Models/UserUpdateEmail.php index 6473bb7..047c1db 100644 --- a/app/Models/UserUpdateEmail.php +++ b/app/Models/UserUpdateEmail.php @@ -8,7 +8,6 @@ use Illuminate\Database\Eloquent\Model; * App\Models\UserUpdateEmail * * @property-read \App\User $user - * @mixin \Eloquent * @property int $user_id * @property string $email * @property string $token @@ -20,6 +19,7 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail whereEmail($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail whereToken($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserUpdateEmail whereUserId($value) + * @mixin \Eloquent */ class UserUpdateEmail extends Model { diff --git a/app/Policies/ModelPolicy.php b/app/Policies/ModelPolicy.php new file mode 100755 index 0000000..b2fe18b --- /dev/null +++ b/app/Policies/ModelPolicy.php @@ -0,0 +1,72 @@ +can('view-any-' . $this->getModelClass()); + } + + public function view(User $user, Model $model) + { + if ($user->can('view-' . $this->getModelClass())) { + return true; + } + + if ($user->can('view-self-' . $this->getModelClass())) { + return $this->isOwner($user, $model); + } + + return false; + } + + public function create(User $user) + { + return $user->can('create-' . $this->getModelClass()); + } + + public function update(User $user, Model $model) + { + if ($user->can('update-' . $this->getModelClass())) { + return true; + } + + if ($user->can('update-self-' . $this->getModelClass())) { + return $this->isOwner($user, $model); + } + + return false; + } + + public function delete(User $user, Model $model) + { + if ($user->can('delete-' . $this->getModelClass())) { + return true; + } + + if ($user->can('delete-self-' . $this->getModelClass())) { + return $this->isOwner($user, $model); + } + + return false; + } + + private function isOwner(User $user, Model $model): bool + { + if (!empty($user) && method_exists($model, 'user')) { + return $user->getKey() === $model->getRelation('user')->getKey(); + } + + return false; + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 1896fb1..69e215e 100755 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -3,6 +3,7 @@ namespace App\Providers; use Illuminate\Support\Facades\Schema; +use Illuminate\Support\Facades\URL; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider @@ -14,6 +15,7 @@ class AppServiceProvider extends ServiceProvider */ public function boot() { + URL::forceScheme('https'); Schema::defaultStringLength(191); } diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 7294c85..bb413be 100755 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -2,9 +2,8 @@ namespace App\Providers; -use Illuminate\Support\Facades\Gate; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; -use Laravel\Passport\Passport; +use Illuminate\Support\Facades\Gate; class AuthServiceProvider extends ServiceProvider { @@ -22,12 +21,8 @@ class AuthServiceProvider extends ServiceProvider * * @return void */ - public function boot() + public function boot(): void { $this->registerPolicies(); - Passport::routes(); - - - // } } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 5ea48d3..37ce2bf 100755 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -2,72 +2,47 @@ namespace App\Providers; -use Illuminate\Support\Facades\Route; +use Illuminate\Cache\RateLimiting\Limit; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\RateLimiter; +use Illuminate\Support\Facades\Route; class RouteServiceProvider extends ServiceProvider { /** - * This namespace is applied to your controller routes. - * - * In addition, it is set as the URL generator's root namespace. + * The path to your application's "home" route. * * @var string */ + public const HOME = '/home'; + + /** + * The controller namespace for the application. + * Kept for backwards compatibility with string-based route definitions. + * + * @var string|null + */ protected $namespace = 'App\Http\Controllers'; /** - * Define your route model bindings, pattern filters, etc. - * - * @return void + * Define your route model bindings, pattern filters, and other route configuration. */ - public function boot() + public function boot(): void { - // + RateLimiter::for('api', function (Request $request) { + return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); + }); - parent::boot(); - } + $this->routes(function () { + Route::middleware('api') + ->prefix('api') + ->namespace($this->namespace) + ->group(base_path('routes/api.php')); - /** - * Define the routes for the application. - * - * @return void - */ - public function map() - { - $this->mapApiRoutes(); - - $this->mapWebRoutes(); - - // - } - - /** - * Define the "web" routes for the application. - * - * These routes all receive session state, CSRF protection, etc. - * - * @return void - */ - protected function mapWebRoutes() - { - Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); - } - - /** - * Define the "api" routes for the application. - * - * These routes are typically stateless. - * - * @return void - */ - protected function mapApiRoutes() - { - Route::prefix('api') - ->middleware('api') - ->namespace($this->namespace) - ->group(base_path('routes/api.php')); + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web.php')); + }); } } diff --git a/app/Repositories/BookingPDFRepository.php b/app/Repositories/BookingPDFRepository.php new file mode 100644 index 0000000..e5ba139 --- /dev/null +++ b/app/Repositories/BookingPDFRepository.php @@ -0,0 +1,319 @@ +model = $model; + $this->prepath = Storage::disk('public')->path(''); + } + + public function update($data) + { + return $this->model; + } + + public function createPDF($id, $data) + { + + $this->model = Booking::findOrFail($id); + + switch ($data['action']) { + case 'createPDF_Registration': + return $this->createPDF_Registration(); + break; + case 'createPDF_Confirmation': + return $this->createPDF_Confirmation(); + break; + case 'createPDF_Coupon': + return $this->createPDF_Coupon($data); + break; + case 'createPDF_Voucher': + $this->createPDF_Voucher(false); //client + return $this->createPDF_Voucher(true); //acency + + break; + case 'createPDF_VoucherAgency': + return $this->createPDF_Voucher(true); + break; + case 'createPDF_Storno': + return $this->createPDF_Storno($data); + break; + } + } + + public function createPDF_Registration() + { + $document = new stdClass(); + $document->name = 'registration'; + $document->number = $this->model->inquiry_id; + $document->title = 'BUCHUNGSAUFTRAG'; + $document->voucher = null; + $document->date = now(); + $document->total = $this->model->getPriceRaw(); + $dir = $this->getDirPath('pdf', 'booking', $document->date->format('Y')); + $filename = "Buchnungsauftrag-" . $this->model->inquiry_id . ".pdf"; + $pdf_file = new CreatePDF('pdf.booking_registration'); + $data = [ + 'booking' => $this->model, + 'document' => $document, + ]; + $pdf_file->create($data, $filename, 'save', $this->prepath . $dir); + $booking_document = $this->savePDF($dir, $filename, 'sterntours-template', 'registration', $document); + + return $booking_document; + } + + public function createPDF_Confirmation() + { + $document = new stdClass(); + $document->name = 'confirmation'; + $document->number = $this->model->inquiry_id; + $document->title = 'REISEBESTÄTIGUNG'; + $document->voucher = null; + $document->date = now(); + + $document->total = $this->model->getPriceRaw(); + $document->deposit = $this->model->getConfirmationDeposit(); + $document->final_payment = $this->model->getConfirmationFinalPayment(); + + if ($this->model->isDepositPossible()) { + $document->deposit_payment_date = date('Y-m-d'); + $maxDepositIntervalDays = config('booking.max_deposit_interval_days'); + $_start_date = clone $this->model->start_date; + $_start_date->modify('-' . $maxDepositIntervalDays . ' days'); + $document->final_payment_date = $_start_date->format('Y-m-d'); + } else { + $document->final_payment_date = date('Y-m-d'); + } + $dir = $this->getDirPath('pdf', 'booking', $document->date->format('Y')); + $filename = "Reisebestätigung-" . $this->model->inquiry_id . ".pdf"; + + $pdf_file = new CreatePDF('pdf.booking_confirmation'); + $data = [ + 'booking' => $this->model, + 'document' => $document, + ]; + $pdf_file->create($data, $filename, 'save', $this->prepath . $dir); + $booking_document = $this->savePDF($dir, $filename, 'sterntours-template', 'confirmation', $document); + + return $booking_document; + } + + public function createPDF_Coupon($data) + { + + $document = new stdClass(); + $document->name = 'coupon'; + $document->title = 'COUPON'; + $document->voucher = null; + $document->date = now(); + + $coupon = new Coupon(); + $coupon->booking_id = $this->model->id; + $coupon->customer_id = $this->model->customer->id; + $coupon->value = $data['value']; + $coupon->issue_date = $data['issue_date']; + $coupon->valid_date = $data['valid_date']; + $coupon->is_redeemed = false; + $coupon->save(); + + $document->number = $coupon->number; + $document->value = $coupon->value; + $document->issue_date = $coupon->issue_date; + $document->valid_date = $coupon->valid_date; + $document->coupon_id = $coupon->id; + + + $dir = $this->getDirPath('pdf', 'coupon', $document->date->format('Y')); + $filename = "Gutschein-" . $coupon->number . ".pdf"; + + $pdf_file = new CreatePDFCoupon('pdf.booking_coupon'); + $data = [ + 'booking' => $this->model, + 'document' => $document, + 'coupon' => $coupon, + ]; + $pdf_file->create($data, $filename, 'save', $this->prepath . $dir); + $booking_document = $this->savePDF($dir, $filename, 'sterntours-coupon', 'coupon', $document); + return $booking_document; + } + + public function createPDF_Voucher($agency = false) + { + $document = new stdClass(); + $document->name = 'voucher'; + $document->number = $this->model->inquiry_id; + $document->name = 'voucher'; + $document->title = $agency ? 'VOUCHER Agentur' : 'VOUCHER'; + $document->voucher = $agency ? 'agency' : 'client'; + $document->date = now(); + + $dir = $this->getDirPath('pdf', 'voucher', $document->date->format('Y')); + $filename = ($agency ? 'VoucherAgentur' : 'Voucher') . "-" . $this->model->inquiry_id . ".pdf"; + + $pdf_file = new CreatePDF('pdf.booking_voucher'); + $data = [ + 'booking' => $this->model, + 'document' => $document, + ]; + $pdf_file->create($data, $filename, 'save', $this->prepath . $dir); + $identifier = $agency ? 'voucher_agency' : 'voucher'; + $booking_document = $this->savePDF($dir, $filename, 'sterntours-template', $identifier, $document); + + return $booking_document; + } + + public function createPDF_Storno($data) + { + //Storno Values + $storno_status_id = (int) $data['storno_status_id']; + $storno_level = (float) $data['storno_level']; + $storno_level_number = \Util::_clean_float($data['storno_level_number']); + $storno_total_price = \Util::_clean_float($data['storno_total_price']); + $price = $this->model->getPriceRaw(); + if ($storno_level_number > 0 && $storno_level_number < 100) { + $storno_level = $storno_level_number; + } + //calculate price canceled + if ($storno_total_price > 0) { + $price_canceled = $storno_total_price; + $storno_level = ((100 / $price) * $storno_total_price); + } else { + $price_canceled = round($price / 100 * $storno_level, 2); + } + + + //init identifier + $identifier = 'storno'; + + //create / update BookingStorno + $fill = [ + 'booking_id' => $this->model->id, + 'total' => $price, + 'storno' => $price_canceled, + 'storno_date' => $data['storno_date'], + 'storno_print' => $data['storno_print'], + 'binary_data' => NULL, + ]; + if ($this->model->hasDocument($identifier)) { + $booking_document = $this->model->getDocument($identifier); + $booking_storno = $booking_document->booking_storno; + $booking_storno->update($fill); + } else { + $booking_storno = BookingStorno::create($fill); + } + + //init document + $document = new stdClass(); + $document->name = $identifier; + $document->number = $this->model->inquiry_id; + $document->title = 'STORNOBESTÄTIGUNG'; + $document->voucher = null; + $document->date = Carbon::parse($data['storno_print']); + $document->total = $price; + $document->storno = $price_canceled; + $document->storno_date = $data['storno_date']; + $document->storno_print = $data['storno_print']; + $document->storno_status_id = $storno_status_id; + $document->booking_storno_id = $booking_storno->id; + $document->storno_level = $storno_level; + + + + //update Booking // Lead Status + if ($storno_status_id) { + $this->model->lead->status_id = $storno_status_id; + $this->model->lead->save(); + } + + $this->model->canceled = $storno_level; + $this->model->price_canceled = $price_canceled; //must pay + $this->model->price_total = $price_canceled; //is the same as Canceled( ... + $this->model->price_balance = round($price - $price_canceled, 2); //is the Rest - must not pay + $this->model->save(); + + + + $dir = $this->getDirPath('pdf', 'storno', $document->date->format('Y')); + $filename = "Reisestornierung -" . $this->model->inquiry_id . ".pdf"; + + $pdf_file = new CreatePDF('pdf.booking_storno'); + $data = [ + 'booking' => $this->model, + 'document' => $document, + ]; + $pdf_file->create($data, $filename, 'save', $this->prepath . $dir); + $this->savePDF($dir, $filename, 'sterntours-template', $identifier, $document); + } + + + + //get Invoice Name / Paths / ... + private function getDirPath($file, $dir, $year) + { + + $path = $file . '/' . $dir . '/' . $year . '/'; + if (!Storage::disk('public')->exists($path)) { + Storage::disk('public')->makeDirectory($path); //creates directory + } + return $path; + } + + private function savePDF($dir, $filename, $template, $identifier, $document = null, $status = 0) + { + + $pdfMerger = new MyPDFMerger(); + $pdfMerger->addPDF($this->prepath . $dir . $filename); + $file = $pdfMerger->myMerge('string', $filename, $template); + Storage::disk('public')->put($dir . $filename, $file); + + $fill = [ + 'booking_id' => $this->model->id, + 'customer_id' => $this->model->customer_id, + // booking_documents.lead_id ist ein Shadow-Feld von booking.inquiry_id; + // die Spalte selbst wird von Phase 2 nicht umbenannt. + 'lead_id' => $this->model->inquiry_id, + 'identifier' => $identifier, + 'filename' => $filename, + 'dir' => $dir, + 'original_name' => $filename, + 'ext' => 'pdf', + 'mine' => 'application/pdf', + 'size' => Storage::disk('public')->size($dir . $filename), + 'date' => now(), + 'data' => $document, + 'status' => $status, + 'booking_storno_id' => isset($document->booking_storno_id) ? $document->booking_storno_id : null, + 'coupon_id' => isset($document->coupon_id) ? $document->coupon_id : null, + ]; + if ($this->model->hasDocument($identifier)) { + $booking_document = $this->model->getDocument($identifier); + $booking_document->update($fill); + } else { + $booking_document = BookingDocument::create($fill); + } + return $booking_document; + + //return $pdfMerger->myMerge('browser', $filename, $template); + + + } +} diff --git a/app/Repositories/BookingRepository.php b/app/Repositories/BookingRepository.php index 372d5f3..7c4838d 100644 --- a/app/Repositories/BookingRepository.php +++ b/app/Repositories/BookingRepository.php @@ -3,19 +3,21 @@ namespace App\Repositories; -use Auth; -use App\Models\Lead; -use App\Services\Util; use App\Models\Booking; -use App\Models\Participant; -use App\Models\BookingNotice; -use App\Models\BookingServiceItem; -use App\Models\ServiceProviderEntry; use App\Models\BookingCompanyService; use App\Models\BookingCountryService; +use App\Models\BookingDraftItem; +use App\Models\BookingNotice; use App\Models\BookingProviderService; +use App\Models\BookingServiceItem; +use App\Models\Lead; +use App\Models\Participant; +use App\Models\ServiceProviderEntry; +use App\Services\Util; +use Auth; -class BookingRepository extends BaseRepository { +class BookingRepository extends BaseRepository +{ public function __construct(Booking $model) @@ -29,35 +31,38 @@ class BookingRepository extends BaseRepository { } - public function updateNotice($id, $data){ + public function updateNotice($id, $data) + { $this->model = Booking::findOrFail($id); - if($data['action'] === 'edit_notice' && isset($data['notice_id'])){ + if ($data['action'] === 'edit_notice' && isset($data['notice_id'])) { $BookingNotice = BookingNotice::findOrFail($data['notice_id']); $BookingNotice->message = isset($data['booking_notice']) ? $data['booking_notice'] : ""; $BookingNotice->edit_at = now(); $BookingNotice->save(); - }else{ + } else { //save_notice - BookingNotice::create([ - 'booking_id' => $this->model->id, - 'from_user_id' => Auth::user()->id, - 'to_user_id' => isset($this->model->sf_guard_user->user_id) ? $this->model->sf_guard_user->user_id : null, - 'message' => isset($data['booking_notice']) ? $data['booking_notice'] : "", + BookingNotice::create( + [ + 'booking_id' => $this->model->id, + 'from_user_id' => Auth::user()->id, + 'to_user_id' => isset($this->model->sf_guard_user->user_id) ? $this->model->sf_guard_user->user_id : null, + 'message' => isset($data['booking_notice']) ? $data['booking_notice'] : "", ] ); } - + return $this->model; } - public function updateLeadStatus($id, $data){ + public function updateLeadStatus($id, $data) + { $this->model = Booking::findOrFail($id); - if(isset($data['lead'])){ + if (isset($data['lead'])) { $lead = $this->model->lead; - if($lead->id != $data['lead']['id']){ + if ($lead->id != $data['lead']['id']) { abort(500); } $lead->status_id = $data['lead']['status_id']; @@ -68,7 +73,8 @@ class BookingRepository extends BaseRepository { return $this->model; } - public function updateBooking($id, $data){ + public function updateBooking($id, $data) + { $this->model = Booking::findOrFail($id); @@ -87,7 +93,8 @@ class BookingRepository extends BaseRepository { 'travel_documents' => $data['travel_documents'], 'paying_out' => $data['paying_out'], 'paying_out_status' => $data['paying_out_status'], - 'branch_id' => $data['branch_id'], + 'branch_id' => isset($data['branch_id']) ? $data['branch_id'] : 4, + 'airport_id' => (isset($data['airport_id']) && $data['airport_id'] > 0) ? $data['airport_id'] : null, 'travel_company_id' => $data['travel_company_id'], //'airline_id' => $data['airline_id'], 'airline_ids' => isset($data['airline_ids']) ? $data['airline_ids'] : null, @@ -106,8 +113,8 @@ class BookingRepository extends BaseRepository { $this->model->fill($fill); $this->model->save(); - if($this->model->booking_draft_items){ - foreach($this->model->booking_draft_items as $booking_draft_item){ + if ($this->model->booking_draft_items) { + foreach ($this->model->booking_draft_items as $booking_draft_item) { $booking_draft_item->comfort = isset($data['travel_comfort']) ? true : false; $booking_draft_item->save(); } @@ -115,24 +122,26 @@ class BookingRepository extends BaseRepository { return $this->model; } - public function updateBookingServices($id, $data){ + public function updateBookingServices($id, $data) + { $this->model = Booking::findOrFail($id); - if(isset($data['country_service'])){ + if (isset($data['country_service'])) { $this->updateCountryService($data['country_service']); } - if(isset($data['provider_service'])){ + if (isset($data['provider_service'])) { $this->updateProviderService($data['provider_service']); } - if(isset($data['company_service'])){ + if (isset($data['company_service'])) { $this->updateCompanyService($data['company_service']); } return $this->model; } - public function updateBookingNumber($id, $data){ + public function updateBookingNumber($id, $data) + { $this->model = Booking::findOrFail($id); $fill = [ @@ -144,77 +153,85 @@ class BookingRepository extends BaseRepository { return $this->model; } - public function updateBookingPrice($id, $data){ + public function updateBookingPrice($id, $data) + { $this->model = Booking::findOrFail($id); $fill = [ 'deposit_total' => $data['deposit_total'] ? Util::_clean_float($data['deposit_total']) : 0, 'final_payment' => $data['final_payment'] ? Util::_clean_float($data['final_payment']) : 0, 'final_payment_date' => $data['final_payment_date'] ? _reformat_date($data['final_payment_date']) : null, + 'price_total' => ($this->model->getPriceRaw() + $this->model->getServiceTotal(true)), ]; $this->model->fill($fill); $this->model->save(); return $this->model; } - - public function updateServiceProviderEntry($id, $data){ + + public function updateServiceProviderEntry($id, $data) + { $this->model = Booking::findOrFail($id); - if(isset($data['service_provider_entry'])){ - foreach($data['service_provider_entry'] as $spe_id => $fill){ - $ServiceProviderEntry = ServiceProviderEntry::findOrFail($spe_id); - if($ServiceProviderEntry->booking_id !== $this->model->id){ + if (isset($data['service_provider_entry'])) { + foreach ($data['service_provider_entry'] as $spe_id => $fill) { + $ServiceProviderEntry = ServiceProviderEntry::findOrFail($spe_id); + if ($ServiceProviderEntry->booking_id !== $this->model->id) { abort(500); - } - $fill['is_cleared'] = isset($fill['is_cleared']) ? true : false; - $fill['payment_date'] = isset($fill['payment_date']) ? _reformat_date($fill['payment_date']) : null; - $ServiceProviderEntry->fill($fill); - $ServiceProviderEntry->save(); - } + } + $fill['is_cleared'] = isset($fill['is_cleared']) ? true : false; + $fill['payment_date'] = isset($fill['payment_date']) ? _reformat_date($fill['payment_date']) : null; + $ServiceProviderEntry->fill($fill); + $ServiceProviderEntry->save(); + } } return $this->model; } - public function updateBookingServiceItem($id, $data){ + public function updateBookingServiceItem($id, $data) + { $this->model = Booking::findOrFail($id); - if(isset($data['booking_service_item'])){ - foreach($data['booking_service_item'] as $bsi_id => $fill){ - $BookingServiceItem = BookingServiceItem::findOrFail($bsi_id); - if($BookingServiceItem->booking_id !== $this->model->id){ + if (isset($data['booking_service_item'])) { + foreach ($data['booking_service_item'] as $bsi_id => $fill) { + $BookingServiceItem = BookingServiceItem::findOrFail($bsi_id); + if ($BookingServiceItem->booking_id !== $this->model->id) { abort(500); - } - $fill['is_commission_locked'] = isset($fill['is_commission_locked']) ? true : false; - $fill['travel_date'] = isset($fill['travel_date']) ? _reformat_date($fill['travel_date']) : now(); - $BookingServiceItem->fill($fill); - $BookingServiceItem->save(); + } + $fill['is_commission_locked'] = isset($fill['is_commission_locked']) ? true : false; + $fill['travel_date'] = isset($fill['travel_date']) ? _reformat_date($fill['travel_date']) : now(); + $BookingServiceItem->fill($fill); + $BookingServiceItem->save(); - if($fill['is_commission_locked'] === true){ + if ($fill['is_commission_locked'] === true) { $service_price_refund = 0; - if($BookingServiceItem->getServicePriceRaw() > 0){ + if ($BookingServiceItem->getServicePriceRaw() > 0) { $service_price_refund = $BookingServiceItem->getServicePriceRaw() / 100 * $BookingServiceItem->travel_company->getPercentageRaw(); } $BookingServiceItem->setServicePriceRefundRaw($service_price_refund); $BookingServiceItem->save(); - } - } + } + } } + $this->model->price_total = ($this->model->getPriceRaw() + $this->model->getServiceTotal(true)); + $this->model->save(); + return $this->model; } - public function updateBookingParticipant($id, $data){ + public function updateBookingParticipant($id, $data) + { $this->model = Booking::findOrFail($id); - if(isset($data['participant'])){ - foreach($data['participant'] as $p_id => $fill){ - $Participant = Participant::findOrFail($p_id); - if($Participant->booking_id !== $this->model->id){ + if (isset($data['participant'])) { + foreach ($data['participant'] as $p_id => $fill) { + $Participant = Participant::findOrFail($p_id); + if ($Participant->booking_id !== $this->model->id) { abort(500); - } - $fill['participant_pass'] = isset($fill['participant_pass']) ? true : false; - $fill['participant_storno'] = isset($fill['participant_storno']) ? true : false; - $fill['participant_child'] = isset($fill['participant_child']) ? true : false; - $fill['participant_birthdate'] = isset($fill['participant_birthdate']) ? _reformat_date($fill['participant_birthdate']) : null; - $Participant->fill($fill); - $Participant->save(); - } + } + $fill['participant_pass'] = isset($fill['participant_pass']) ? true : false; + $fill['participant_storno'] = isset($fill['participant_storno']) ? true : false; + $fill['participant_child'] = isset($fill['participant_child']) ? true : false; + $fill['participant_birthdate'] = isset($fill['participant_birthdate']) ? _reformat_date($fill['participant_birthdate']) : null; + $Participant->fill($fill); + $Participant->save(); + } } //main $this->model->participant_salutation_id = isset($data['participant_salutation_id']) ? $data['participant_salutation_id'] : null; @@ -223,27 +240,31 @@ class BookingRepository extends BaseRepository { $this->model->nationality_id = isset($data['nationality_id']) ? $data['nationality_id'] : null; $this->model->participant_birthdate = isset($data['participant_birthdate']) ? _reformat_date($data['participant_birthdate']) : null; $this->model->participant_pass = isset($data['participant_pass']) ? true : false; - + //update pax + if ($this->model->participants->count() > 0) { + $this->model->pax = $this->model->participants->where('participant_storno', false)->count(); + } $this->model->save(); return $this->model; } - - - private function updateCountryService($country_services){ - foreach ($country_services as $country_service_id=>$val){ + + + private function updateCountryService($country_services) + { + foreach ($country_services as $country_service_id => $val) { $booking_country_service = BookingCountryService::where('travel_country_service_id', '=', $country_service_id) ->where('booking_id', '=', $this->model->id)->first(); - if(!$booking_country_service){ + if (!$booking_country_service) { BookingCountryService::create([ 'travel_country_service_id' => $country_service_id, 'booking_id' => $this->model->id, 'status' => $val ]); - }else{ + } else { $booking_country_service->fill([ 'status' => $val ]); @@ -252,18 +273,19 @@ class BookingRepository extends BaseRepository { } } - private function updateProviderService($provider_service){ - foreach ($provider_service as $provider_service_id=>$val){ + private function updateProviderService($provider_service) + { + foreach ($provider_service as $provider_service_id => $val) { $booking_provider_service = BookingProviderService::where('service_provider_service_id', '=', $provider_service_id) ->where('booking_id', '=', $this->model->id)->first(); - if(!$booking_provider_service){ + if (!$booking_provider_service) { BookingProviderService::create([ 'service_provider_service_id' => $provider_service_id, 'booking_id' => $this->model->id, 'status' => $val ]); - }else{ + } else { $booking_provider_service->fill([ 'status' => $val ]); @@ -272,18 +294,19 @@ class BookingRepository extends BaseRepository { } } - private function updateCompanyService($company_service){ - foreach ($company_service as $company_service_id=>$val){ + private function updateCompanyService($company_service) + { + foreach ($company_service as $company_service_id => $val) { $booking_company_service = BookingCompanyService::where('travel_company_service_id', '=', $company_service_id) - ->where('booking_id', '=', $this->model->id)->first(); + ->where('booking_id', '=', $this->model->id)->first(); - if(!$booking_company_service){ + if (!$booking_company_service) { BookingCompanyService::create([ 'travel_company_service_id' => $company_service_id, 'booking_id' => $this->model->id, 'status' => $val ]); - }else{ + } else { $booking_company_service->fill([ 'status' => $val ]); @@ -292,4 +315,135 @@ class BookingRepository extends BaseRepository { } } -} \ No newline at end of file + public function convertArrangementsToDrafts(Booking $booking) + { + if (!$booking->arrangements || $booking->arrangements->count() == 0) { + return; + } + + $nextPos = 1; + if ($booking->booking_draft_items && $booking->booking_draft_items->count() > 0) { + $nextPos = $booking->booking_draft_items->max('pos') + 1; + } + + foreach ($booking->arrangements->sortByDesc('view_position') as $arrangement) { + + $data = $arrangement->getDataAsMap(); + + + // Erstelle neues BookingDraftItem aus Arrangement + $draftItem = new BookingDraftItem(); + + // Mappe die grundlegenden Daten + $draftItem->booking_id = $booking->id; + $draftItem->pos = $nextPos++; + + // Daten von Arrangement übertragen + if ($arrangement->begin) { + $draftItem->start_date = $arrangement->begin->format('Y-m-d'); + } + if ($arrangement->end) { + $draftItem->end_date = $arrangement->end->format('Y-m-d'); + } + + // Service/Beschreibung aus data_s generieren + $serviceText = $arrangement->getDataS(); + $draftItem->service = $serviceText; + + $draftItem->adult = $data['Teilnehmer'] ?? $booking->pax; + $draftItem->price_adult = $data['Preis'] ?? 0; + + // PDF-Einstellung übernehmen + $draftItem->in_pdf = $arrangement->in_pdf ? 1 : 0; + + // Versuche DraftType zu finden basierend auf ArrangementType + if ($arrangement->arrangement_type && isset($arrangement->arrangement_type->name)) { + $draftType = \App\Models\DraftType::where('name', 'like', '%' . $arrangement->arrangement_type->name . '%')->first(); + if ($draftType) { + $draftItem->draft_type_id = $draftType->id; + } + } else { + // Fallback: Suche nach einem passenden DraftType basierend auf dem Namen + $draftType = \App\Models\DraftType::where('name', 'like', '%' . $arrangement->type_s . '%')->first(); + if ($draftType) { + $draftItem->draft_type_id = $draftType->id; + } + } + + // Standardwerte für neue Felder setzen + $draftItem->comfort = 0; + $draftItem->price = 0; + $draftItem->adult = 0; + $draftItem->price_children = 0; + $draftItem->children = 0; + + $draftItem->save(); + + // Arrangement als konvertiert markieren oder löschen + // Hier löschen wir das Arrangement nach erfolgreicher Konvertierung + $arrangement->delete(); + } + + // Stelle sicher, dass new_drafts aktiviert ist + if (!$booking->new_drafts) { + $booking->new_drafts = true; + $booking->save(); + } + + // Preise neu berechnen + $booking->calculate_price_total(); + } + + public function loadDraftToBooking($bookingId, $draftId) + { + $booking = Booking::findOrFail($bookingId); + $draft = \App\Models\Draft::findOrFail($draftId); + + if (!$booking->new_drafts) { + $booking->new_drafts = true; + $booking->save(); + } + + // Lösche bestehende Draft Items falls gewünscht + if ($booking->booking_draft_items && $booking->booking_draft_items->count() > 0) { + foreach ($booking->booking_draft_items as $existingItem) { + $existingItem->delete(); + } + } + + $pos = 1; + foreach ($draft->draft_items as $draftItem) { + $bookingDraftItem = new \App\Models\BookingDraftItem(); + + // Kopiere alle Daten aus der Draft Vorlage + $bookingDraftItem->booking_id = $booking->id; + $bookingDraftItem->draft_type_id = $draftItem->draft_type_id; + $bookingDraftItem->travel_program_id = null; // Wird später gesetzt wenn nötig + $bookingDraftItem->fewo_lodging_id = null; + $bookingDraftItem->travel_class_id = null; + $bookingDraftItem->draft_item_id = $draftItem->id; + $bookingDraftItem->request_date = null; + $bookingDraftItem->days_start = $draftItem->days_start; + $bookingDraftItem->days_duration = $draftItem->days_duration; + $bookingDraftItem->start_date = null; // Wird später basierend auf Reisebeginn gesetzt + $bookingDraftItem->end_date = null; // Wird später basierend auf Reiseende gesetzt + $bookingDraftItem->service = $draftItem->service; + $bookingDraftItem->price_adult = $draftItem->price_adult; + $bookingDraftItem->adult = $draftItem->adult; + $bookingDraftItem->price_children = $draftItem->price_children; + $bookingDraftItem->children = $draftItem->children; + $bookingDraftItem->price = 0; // Wird später berechnet + $bookingDraftItem->pos = $pos++; + $bookingDraftItem->in_pdf = $draftItem->in_pdf; + $bookingDraftItem->comfort = 0; + $bookingDraftItem->status = 1; + + $bookingDraftItem->save(); + } + + // Preise neu berechnen + $booking->calculate_price_total(); + + return $booking; + } +} diff --git a/app/Repositories/ContactRepository.php b/app/Repositories/ContactRepository.php new file mode 100644 index 0000000..f37e669 --- /dev/null +++ b/app/Repositories/ContactRepository.php @@ -0,0 +1,28 @@ +model = $model; + } + + public function updateContact(int|string $id, array $data): Contact + { + /** @var Contact $contact */ + $contact = Contact::findOrFail($id); + $contact->fill($data); + $contact->save(); + + return $contact; + } + + public function createContact(array $data): Contact + { + return Contact::create($data); + } +} diff --git a/app/Repositories/CustomerFewoFileRepository.php b/app/Repositories/CustomerFewoFileRepository.php index 2afdd72..b45aa1b 100644 --- a/app/Repositories/CustomerFewoFileRepository.php +++ b/app/Repositories/CustomerFewoFileRepository.php @@ -52,4 +52,8 @@ class CustomerFewoFileRepository extends FileRepository { ], 200); } + public function returnFile(){ + return $this->customer_file; + } + } \ No newline at end of file diff --git a/app/Repositories/CustomerMailRepository.php b/app/Repositories/CustomerMailRepository.php index 5bdd0b3..6397f0c 100644 --- a/app/Repositories/CustomerMailRepository.php +++ b/app/Repositories/CustomerMailRepository.php @@ -51,7 +51,7 @@ class CustomerMailRepository extends BaseRepository { $data['subject'] = $this->prepareContent($booking, $data['subject']); } $reply_id = isset($data['customer_mail_id']) ? $data['customer_mail_id'] : NULL; - $email = isset($data['send_mail_to_mail'][$booking_id]) ? $data['send_mail_to_mail'][$booking_id] : $booking->customer->email; + $email = isset($data['send_mail_to_mail'][$booking_id]) ? $data['send_mail_to_mail'][$booking_id] : null; $customer_mail = $this->store($booking, $data, $email, false, $reply_id); foreach ($customer_files as $file) { $file->customer_id = $booking->customer_id; @@ -135,7 +135,8 @@ class CustomerMailRepository extends BaseRepository { $customer_mail->fill([ 'booking_id' => $booking->id, 'customer_id' => $booking->customer_id, - 'lead_id' => $booking->lead_id, + // customer_mails.lead_id-Spalte bleibt unverändert; Wert kommt aus booking.inquiry_id + 'lead_id' => $booking->inquiry_id, 'is_answer' => $is_answer, 'reply_id' => $reply_id, 'email' => $mail_from, @@ -153,7 +154,8 @@ class CustomerMailRepository extends BaseRepository { $customer_mail = CustomerMail::create([ 'booking_id' => $booking->id, 'customer_id' => $booking->customer_id, - 'lead_id' => $booking->lead_id, + // customer_mails.lead_id-Spalte bleibt unverändert; Wert kommt aus booking.inquiry_id + 'lead_id' => $booking->inquiry_id, 'is_answer' => $is_answer, 'reply_id' => $reply_id, 'email' => $mail_from, @@ -300,7 +302,7 @@ class CustomerMailRepository extends BaseRepository { $value->id = $customer_mail->booking_id; $value->booking = $booking; $value->show = 'single'; - $value->lead_title_id = " - (".$value->booking->lead_id.")"; + $value->lead_title_id = " - (".$value->booking->inquiry_id.")"; $tmp = []; @@ -342,7 +344,7 @@ class CustomerMailRepository extends BaseRepository { $value->booking = $booking; $value->show = 'single'; $value->draft = true; - $value->lead_title_id = " - (".$value->booking->lead_id.")"; + $value->lead_title_id = " - (".$value->booking->inquiry_id.")"; }else{ //multi @@ -379,8 +381,8 @@ class CustomerMailRepository extends BaseRepository { $value->draft = false; $value->booking = $booking; $value->message = ""; - $value->subject = " - (".$value->booking->lead_id.")"; - $value->lead_title_id = " - (".$value->booking->lead_id.")"; + $value->subject = " - (".$value->booking->inquiry_id.")"; + $value->lead_title_id = " - (".$value->booking->inquiry_id.")"; $value->s_placeholder = "Betreff des Kunden"; $value->m_placeholder = "Nachricht des Kunden"; if(isset($data['customer_mail_id']) && $customer_mail = CustomerMail::find($data['customer_mail_id'])){ diff --git a/app/Repositories/CustomerRepository.php b/app/Repositories/CustomerRepository.php index ddfe472..c1bfbd8 100644 --- a/app/Repositories/CustomerRepository.php +++ b/app/Repositories/CustomerRepository.php @@ -3,8 +3,9 @@ namespace App\Repositories; -use App\Models\Customer; use App\Models\Lead; +use App\Models\Booking; +use App\Models\Customer; class CustomerRepository extends BaseRepository { @@ -22,7 +23,7 @@ class CustomerRepository extends BaseRepository { return $this->model; } - + //by Lead ID public function updateCustomerFromLead($id, $data){ $lead = Lead::findOrFail($id); @@ -30,5 +31,14 @@ class CustomerRepository extends BaseRepository { return $this->updateCustomer($lead->customer->id, $data['customer']); } } + //by Booking ID + public function updateCustomerFromBooking($id, $data){ + + $booking = Booking::findOrFail($id); + if(isset($data['customer']) && $booking->customer){ + return $this->updateCustomer($booking->customer->id, $data['customer']); + } + } + } \ No newline at end of file diff --git a/app/Repositories/DraftRepository.php b/app/Repositories/DraftRepository.php index 8feb359..c6ccdfe 100644 --- a/app/Repositories/DraftRepository.php +++ b/app/Repositories/DraftRepository.php @@ -493,7 +493,10 @@ class DraftRepository extends BaseRepository { foreach ($travel_program->travel_program_drafts as $travel_program_draft) { //this need an realation to travel class by booking and price - if(in_array($weekday, $travel_program_draft->weekdays)){ + if(in_array($weekday, $travel_program_draft->getWeekdaysOrAll())){ + if(!$travel_program_draft->travel_class){ + return $travel_program_draft->draft; + } if($data['comfort'] == false && strpos(strtolower($travel_program_draft->travel_class->name), 'standard') !== false){ return $travel_program_draft->draft; } diff --git a/app/Repositories/FileRepository.php b/app/Repositories/FileRepository.php index 0ddc8d8..a83e542 100644 --- a/app/Repositories/FileRepository.php +++ b/app/Repositories/FileRepository.php @@ -57,8 +57,7 @@ class FileRepository extends BaseRepository { $this->originalName = $file->getClientOriginalName(); $this->extension = strtolower($file->getClientOriginalExtension()); $this->mine = $file->getClientMimeType(); - $this->size = $file->getClientSize(); - + $this->size = $file->getSize(); $this->makeFilename(); //$dir = $this->model->getInvoiceStorageAttDir(); @@ -78,6 +77,15 @@ class FileRepository extends BaseRepository { return $this->response(); } + public function storeReturnFile( $content ) + { + $this->makeFilename(); + $this->store($content); + $this->size = Storage::disk($this->disk)->size($this->dir.$this->allowed_filename); + $this->save(); + return $this->returnFile(); + } + public function store($content){ if(!Storage::disk($this->disk)->exists( $this->dir )){ Storage::disk($this->disk)->makeDirectory($this->dir); //creates directory @@ -89,6 +97,11 @@ class FileRepository extends BaseRepository { } + public function returnFile(){ + + } + + public function response(){ return Response::json([ 'error' => false, @@ -112,6 +125,7 @@ class FileRepository extends BaseRepository { } return false; } + private function makeFilename(){ $originalNameWithoutExt = substr($this->originalName, 0, strlen($this->originalName) - strlen($this->extension) - 1); $this->filename = Util::sanitize($originalNameWithoutExt, true, false, true); diff --git a/app/Repositories/LeadRepository.php b/app/Repositories/LeadRepository.php index 2965156..ad0ac87 100644 --- a/app/Repositories/LeadRepository.php +++ b/app/Repositories/LeadRepository.php @@ -4,9 +4,11 @@ namespace App\Repositories; use App\Models\Lead; +use App\Models\Booking; use App\Models\LeadNotice; -use App\Models\LeadParticipant; +use App\Models\Participant; use App\Models\StatusHistory; +use App\Models\LeadParticipant; class LeadRepository extends BaseRepository { @@ -115,10 +117,88 @@ class LeadRepository extends BaseRepository { $this->model->participant_firstname = isset($data['participant_firstname']) ? $data['participant_firstname'] : null; //$this->model->nationality_id = isset($data['nationality_id']) ? $data['nationality_id'] : null; $this->model->participant_birthdate = isset($data['participant_birthdate']) ? _reformat_date($data['participant_birthdate']) : null; - + /*if($this->model->lead_participants->count() > 0){ + $this->model->pax = $this->model->lead_participants->count(); + }*/ $this->model->save(); return $this->model; } + public function createBooking($id, $data){ + $this->model = Lead::findOrFail($id); + + if ($this->model->bookings->count() > 0){ + abort(403, 'Die Anfrage hat bereits eine Buchnung.'); + } + + $data = [ + 'booking_date' => date('Y-m-d'), //now + 'customer_id' => $this->model->customer->id, + 'inquiry_id' => $this->model->id, + 'new_drafts' => 1, + 'sf_guard_user_id' => $this->model->sf_guard_user_id, + 'branch_id' => 4, + 'pax' => $this->model->pax, + 'title' => "", + 'comfort' => false, + 'start_date' => $this->model->travelperiod_start, + 'end_date' => $this->model->travelperiod_end, + 'website_id' => 1, + 'travel_number' => null, + 'participant_name' => null, + 'participant_firstname' => null, + 'participant_birthdate' => null, + 'participant_salutation_id' => null, + 'nationality_id' => null, + 'price' => $this->model->price, + 'price_total' => null, + 'deposit_total' => null, + 'final_payment' => null, + 'final_payment_date' => null, + 'travel_country_id' => $this->model->travelcountry_id, + 'travel_category_id' => $this->model->travelcategory_id, + 'travelagenda_id' => $this->model->travelagenda_id, + 'travel_company_id' => 4, + ]; + + //createBooking + $booking = Booking::create($data); + + // copy participants + if($this->model->lead_participants){ + foreach($this->model->lead_participants as $participant){ + Participant::create([ + 'booking_id' => $booking->id, + 'participant_name' => $participant->participant_name, + 'participant_firstname' => $participant->participant_firstname, + 'participant_birthdate' => $participant->participant_birthdate, + 'participant_salutation_id' => $participant->participant_salutation_id, + 'participant_child' => $participant->participant_child, + 'nationality_id' => $participant->nationality_id, + ]); + } + } + + //inquiries + //offers ??? + /*if($lead->getInquiry()->count() > 0) + { + foreach($lead->getInquiry() as $inquiry) + { + $arrangement = new Arrangement(); + $arrangement->setArrangementType($inquiry->getInquiryType()->getArrangementType()); + $arrangement->setBegin($inquiry->getBegin()); + $arrangement->setEnd($inquiry->getEnd()); + $arrangement->setDataS($inquiry->getDataS()); + $arrangement->setInPdf($inquiry->getInPdf()); + $arrangement->setBooking($booking); + $arrangement->save(); + } + }*/ + + return $this->model; + } + + } \ No newline at end of file diff --git a/app/Repositories/TravelProgramRepository.php b/app/Repositories/TravelProgramRepository.php index 3bfe1ca..d030b97 100644 --- a/app/Repositories/TravelProgramRepository.php +++ b/app/Repositories/TravelProgramRepository.php @@ -18,7 +18,7 @@ class TravelProgramRepository extends BaseRepository { public function update($data) { - if($data['id'] == "new"){ + /*if($data['id'] == "new"){ $this->model = TravelProgram::createNew(); } else{ @@ -29,9 +29,107 @@ class TravelProgramRepository extends BaseRepository { $this->model->fill($data); $this->model->status = isset($data['status']) ? true : false; $this->model->save(); + return $this->model;*/ + } + + + public function updateGeneral($id, $data){ + //weekdays + $this->model = TravelProgram::findOrFail($id); + + $this->checkDraftsWeekdays($data['weekdays']); + $data['weekdays'] = $this->model->setWeekdaysFromArray($data['weekdays']); + + $fill = [ + 'title' => $data['title'], + 'subtitle' => $data['subtitle'], + 'program_code' => $data['program_code'], + 'program_type' => $data['program_type'] ? $data['program_type'] : null, + 'category_id' => $data['category_id'] ? $data['category_id'] : null, + 'travel_country' => $data['travel_country'] ? $data['travel_country'] : null, + 'travel_agenda' => $data['travel_agenda'] ? $data['travel_agenda'] : null, + 'travel_category' => $data['travel_category'] ? $data['travel_category'] : null, + 'travel_company' => $data['travel_company'] ? $data['travel_company'] : null, + 'status' => isset($data['status']) ? 1 : 0, + 'weekdays' => $data['weekdays'], + ]; + $this->model->fill($fill); + $this->model->save(); return $this->model; } + + public function updateDetail($id, $data){ + //weekdays + $this->model = TravelProgram::findOrFail($id); + + $this->checkDraftsWeekdays($data['weekdays']); + $data['weekdays'] = $this->model->setWeekdaysFromArray($data['weekdays']); + + $fill = [ + 'default_flight_price' => $data['default_flight_price'] ? $data['default_flight_price'] : null, + 'deposit_percent' => $data['deposit_percent'] ? $data['deposit_percent'] : null, + 'discount' => $data['discount'] ? $data['discount'] : null, + 'discount_is_percent_value' => $data['discount_is_percent_value'] ? $data['discount_is_percent_value'] : null, + 'travel_arrival_point_id' => $data['travel_arrival_point_id'] ? $data['travel_arrival_point_id'] : null, + 'max_age_for_children' => $data['max_age_for_children'] ? $data['max_age_for_children'] : null, + //'url' => $data['url'] ? $data['url'] : null, + 'generalnote' => $data['generalnote'] ? $data['generalnote'] : null, + 'payment_conditions' => $data['payment_conditions'] ? $data['payment_conditions'] : null, + ]; + $this->model->fill($fill); + $this->model->save(); + return $this->model; + + } + + public function updatePage($id, $data){ + //weekdays + $this->model = TravelProgram::findOrFail($id); + if(!$this->model->page){ + return $this->model; + } + $fill = [ + 'title' => $data['page_title'] ? $data['page_title'] : null, + 'pagetitle' => $data['page_pagetitle'] ? $data['page_pagetitle'] : null, + 'description' => $data['page_description'] ? $data['page_description'] : null, + 'slug' => $data['page_slug'] ? $data['page_slug'] : null, + + ]; + $this->model->page->fill($fill); + $this->model->page->save(); + return $this->model; + + } + /* + + 'profit_margin', + 'program_duration', + 'is_seasonal', + 'youth', + 'slider_info', + 'organizer', + 'generalnote', + 'included', + 'class_description', + 'excluded', + 'advices', + 'notes', + 'html_description', + 'insurance_1', + 'insurance_2', + 'insurance_3', + 'insurance_4', + 'in_slider', + 'show_map', + 'map_html', + 'map_image', + 'map_image_ext', + 'netto_prices_in_euro', + 'text_right', + 'position', + */ + public function checkDraftsWeekdays($weekdays){ if(isset($weekdays) && is_array($weekdays) && $weekdays[0] === NULL){ $weekdays = range(0, 6); @@ -74,7 +172,7 @@ class TravelProgramRepository extends BaseRepository { } public function updateDraft($data) - { + { if(isset($data['weekdays']) && count($data['weekdays']) > 1 && in_array(NULL, $data['weekdays'])){ $data['weekdays'] = array_filter($data['weekdays'], 'is_numeric'); sort($data['weekdays']); @@ -84,13 +182,13 @@ class TravelProgramRepository extends BaseRepository { 'travel_program_id' => $data['travel_program_id'], 'travel_class_id' => $data['travel_class_id'], 'draft_id' => $data['draft_id'], - 'weekdays' => isset($data['weekdays']) ? $data['weekdays'] : null, + 'weekdays' => isset($data['weekdays']) ? $data['weekdays'] : NULL, ]); }else{ $travel_program_draft = TravelProgramDraft::findOrFail($data['id']); $travel_program_draft->draft_id = $data['draft_id']; $travel_program_draft->travel_class_id = $data['travel_class_id']; - $travel_program_draft->weekdays = isset($data['weekdays']) ? $data['weekdays'] : null; + $travel_program_draft->weekdays = isset($data['weekdays']) ? $data['weekdays'] : NULL; $travel_program_draft->save(); } return $travel_program_draft; diff --git a/app/Repositories/TravelUserBookingFewoRepository.php b/app/Repositories/TravelUserBookingFewoRepository.php index cee9bc7..e80c90c 100644 --- a/app/Repositories/TravelUserBookingFewoRepository.php +++ b/app/Repositories/TravelUserBookingFewoRepository.php @@ -4,22 +4,26 @@ namespace App\Repositories; -use App\Models\FewoPrice; -use App\Models\FewoReservation; -use App\Models\FewoSeason; -use App\Models\TravelClass; -use App\Models\TravelProgram; -use App\Models\TravelProgramDraft; -use App\Models\TravelUserBookingFewo; -use App\Models\TravelUserBookingFewoNotice; -use App\Services\Util; use PDF; -use Carbon\Carbon; use Request; use Storage; use Validator; +use Carbon\Carbon; +use App\Services\Util; +use App\Models\FewoPrice; +use App\Models\FewoSeason; +use App\Models\TravelClass; +use App\Libraries\CreatePDF; +use App\Models\TravelProgram; +use App\Models\FewoReservation; +use App\Models\TravelProgramDraft; +use App\Models\TravelUserBookingFewo; +use App\Models\TravelUserBookingFewoNotice; +use Illuminate\Validation\ValidationException; +use Illuminate\Support\Facades\Log; -class TravelUserBookingFewoRepository extends BaseRepository { +class TravelUserBookingFewoRepository extends BaseRepository +{ public function __construct(TravelProgram $model) @@ -27,31 +31,34 @@ class TravelUserBookingFewoRepository extends BaseRepository { $this->model = $model; } - public function updateNotice($id, $data){ + public function updateNotice($id, $data) + { $model = TravelUserBookingFewo::findOrFail($id); - if($data['action'] === 'edit_notice' && isset($data['notice_id'])){ + if ($data['action'] === 'edit_notice' && isset($data['notice_id'])) { $BookingNotice = TravelUserBookingFewoNotice::findOrFail($data['notice_id']); $BookingNotice->message = isset($data['booking_fewo_notice']) ? $data['booking_fewo_notice'] : ""; $BookingNotice->edit_at = now(); $BookingNotice->save(); - }else{ + } else { //save_notice - TravelUserBookingFewoNotice::create([ - 'travel_user_booking_fewo_id' => $model->id, - 'from_user_id' => \Auth::user()->id, - 'message' => isset($data['booking_fewo_notice']) ? $data['booking_fewo_notice'] : "", + TravelUserBookingFewoNotice::create( + [ + 'travel_user_booking_fewo_id' => $model->id, + 'from_user_id' => \Auth::user()->id, + 'message' => isset($data['booking_fewo_notice']) ? $data['booking_fewo_notice'] : "", ] ); } - + return $model; } - public function createTravelInfoPDF($id, $travel_info_user_text){ + public function createTravelInfoPDF($id, $travel_info_user_text) + { $model = TravelUserBookingFewo::findOrFail($id); - + $travel_info_user_text = str_replace("€", "€", $travel_info_user_text); $model->info_mail_text = $travel_info_user_text; $model->save(); @@ -59,32 +66,32 @@ class TravelUserBookingFewoRepository extends BaseRepository { 'model' => $model, 'travel_info_user_text' => $travel_info_user_text, ]; - $pdf = PDF::loadView('pdf.travel_info_fewo', $data); - $pdf->setPaper('A4', 'portrait'); - $path =$model->getTravelInfoPath(); + $path = $model->getTravelInfoPath(); + $dir = $model->getTravelInfoDir(); $filename = $model->getTravelInfoFileName(); - $pdf->save($path.$filename); - - return $path.$filename; - //return $pdf->stream('invoice.pdf'); + $pdf_file = new CreatePDF('pdf.travel_info_fewo', 'fewo_infos'); + $pdf_file->create($data, $filename, 'save', $path); + $pdf_file->merger($dir, $filename, 'sterntours-template-logo'); + return $path . $filename; } - public function createInvoicePDF($id){ + public function createInvoicePDF($id) + { $model = TravelUserBookingFewo::findOrFail($id); $data = [ 'model' => $model, ]; - $pdf = PDF::loadView('pdf.invoice_fewo', $data); - $pdf->setPaper('A4', 'portrait'); - $path =$model->getInvoicePath(); + $path = $model->getInvoicePath(); + $dir = $model->getInvoiceDir(); $filename = $model->getInvoiceFileName(); - $pdf->save($path.$filename); - return $path.$filename; - //return $pdf->stream('invoice.pdf'); + $pdf_file = new CreatePDF('pdf.invoice_fewo', 'fewo_invoices'); + $pdf_file->create($data, $filename, 'save', $path); + $pdf_file->merger($dir, $filename, 'sterntours-template-logo'); + return $path . $filename; } - public function check($id,$data) + public function check($id, $data) { //check for data $model = TravelUserBookingFewo::findOrFail($id); @@ -98,10 +105,10 @@ class TravelUserBookingFewoRepository extends BaseRepository { ->where('to_date', '>', $from_date) ->get(); - if($fewos->count()){ + if ($fewos->count()) { $error = []; - foreach ($fewos as $fewo){ - $error[] = "Reservierung gefunden: ".$fewo->from_date->format('d.m.Y')." - ".$fewo->to_date->format('d.m.Y'); + foreach ($fewos as $fewo) { + $error[] = "Reservierung gefunden: " . $fewo->from_date->format('d.m.Y') . " - " . $fewo->to_date->format('d.m.Y'); } return ['success' => false, 'error' => $error]; } @@ -111,13 +118,13 @@ class TravelUserBookingFewoRepository extends BaseRepository { 'travel_user_id' => 'required', 'fewo_lodging_id' => 'required', 'booking_date' => 'required', - 'invoice_number' => 'required|unique:mysql_stern.travel_user_booking_fewos,invoice_number,'.$model->id, - 'from_date'=>'required', - 'to_date'=>'required', + 'invoice_number' => 'required|unique:mysql_stern.travel_user_booking_fewos,invoice_number,' . $model->id, + 'from_date' => 'required', + 'to_date' => 'required', 'travel_booking_fewo_channel_id' => 'required', 'status' => 'required' ); - // $rules['email'] = 'required|string|email|max:255|unique:.travel_users,email,'.$model->id; + // $rules['email'] = 'required|string|email|max:255|unique:.travel_users,email,'.$model->id; $validator = Validator::make(Request::all(), $rules); if ($validator->fails()) { return ['success' => false, 'error' => $validator]; @@ -131,23 +138,24 @@ class TravelUserBookingFewoRepository extends BaseRepository { $model->daily_prices = $res['season']; - if($fewo_reservation = $model->fewo_reservation){ - if($model->is_calendar_stern_tours){ + if ($fewo_reservation = $model->fewo_reservation) { + if ($model->is_calendar_stern_tours) { $model->fewo_reservation->from_date = $model->getFromDateRaw(); $model->fewo_reservation->to_date = $model->getToDateRaw(); - }else{ + } else { $model->fewo_reservation->from_date = null; $model->fewo_reservation->to_date = null; } $model->fewo_reservation->save(); - }else{ - if($model->is_calendar_stern_tours){ + } else { + if ($model->is_calendar_stern_tours) { $res = FewoReservation::create([ 'lodging_id' => $model->fewo_lodging_id, 'from_date' => $model->getFromDateRaw(), 'to_date' => $model->getToDateRaw(), 'status' => 0, - 'type' => 0]); + 'type' => 0 + ]); $model->fewo_reservation_id = $res->id; $model->save(); } @@ -155,134 +163,169 @@ class TravelUserBookingFewoRepository extends BaseRepository { $model->save(); \Session()->flash('alert-save', '1'); return ['success' => true, 'id' => $model->id]; - } - public function update($id,$data) + public function update($id, $data) { - //check for data - $check_for_reservation = true; - $fewo_reservation_id = 0; - $model = false; - if($id > 0) { - $model = TravelUserBookingFewo::findOrFail($id); - if($data['from_date'] == $model->from_date && $data['to_date'] == $model->to_date){ - $check_for_reservation = false; - } - $fewo_reservation_id = $model->fewo_reservation_id; + try { + $needsReservationCheck = true; + $existingReservationId = 0; + $existingBooking = null; - } - if($check_for_reservation){ - $from_date = Carbon::parse($data['from_date'])->format('Y-m-d'); - $to_date = Carbon::parse($data['to_date'])->format('Y-m-d'); - $fewos = FewoReservation::where('lodging_id', $data['fewo_lodging_id']) - ->where('id', '!=', $fewo_reservation_id) - ->where('from_date', '<', $to_date) - ->where('to_date', '>', $from_date) - ->get(); - if($fewos->count()){ - $error = []; - foreach ($fewos as $fewo){ - $error[] = "Reservierung gefunden: ".$fewo->from_date->format('d.m.Y')." - ".$fewo->to_date->format('d.m.Y'); + // Prüfe ob es eine Bearbeitung ist + if (is_numeric($id) && $id > 0) { + $existingBooking = TravelUserBookingFewo::findOrFail($id); + + // Prüfe ob sich relevante Daten geändert haben + $needsReservationCheck = !($data['from_date'] == $existingBooking->from_date && + $data['to_date'] == $existingBooking->to_date && + $data['fewo_lodging_id'] == $existingBooking->fewo_lodging_id); + + $existingReservationId = $existingBooking->fewo_reservation_id; + } + + if ($needsReservationCheck) { + // Validiere und formatiere Daten + if (!isset($data['from_date'], $data['to_date'], $data['fewo_lodging_id'])) { + throw new ValidationException('Erforderliche Daten fehlen'); } - return back()->withRequest(Request::all())->withErrors($error); - } - } - //check for - $rules = array( - 'travel_user_id' => 'required', - 'fewo_lodging_id' => 'required', - 'from_date'=>'required', - 'to_date'=>'required', - 'travel_booking_fewo_channel_id' => 'required', - 'status' => 'required' - ); + $fromDate = Carbon::parse($data['from_date'])->startOfDay(); + $toDate = Carbon::parse($data['to_date'])->startOfDay(); - if($fewo_reservation_id > 0 && $model && Request::get('invoice_number')){ - $rules['invoice_number'] = 'required|unique:mysql_stern.travel_user_booking_fewos,invoice_number,'.$model->id; - } + // Prüfe auf Überschneidungen + $overlappingReservations = FewoReservation::where('lodging_id', $data['fewo_lodging_id']) + ->where('id', '!=', $existingReservationId) + ->where('from_date', '<', $toDate) + ->where('to_date', '>', $fromDate) + ->get(); - $validator = Validator::make(Request::all(), $rules); - - if ($validator->fails()) { - return back()->withRequest(Request::all())->withErrors($validator); - } - - $data['is_calendar_fewo_direct'] = isset($data['is_calendar_fewo_direct']) ? true : false; - $data['is_calendar_hrs'] = isset($data['is_calendar_hrs']) ? true : false; - $data['is_calendar_stern_tours'] = isset($data['is_calendar_stern_tours']) ? true : false; - - - if($id === "new") { - $model = TravelUserBookingFewo::create($data); - }else{ - $model = TravelUserBookingFewo::findOrFail($id); - if($data['from_date'] == $model->from_date && $data['to_date'] == $model->to_date){ - } - $model->fill($data)->save(); - } - - $model->last_change_at = now(); - $model->save(); - - $res = $this->calculatePriceNew($model); - - if($res['season_find'] && $res['price_find']){ - $model->daily_prices = $res['season']; - - if (isset($data['calculate_price_new'])) { - $model->price_travel = $res['price_travel']; - $model->price_service = $res['price_service']; - $model->price_deposit = $res['price_deposit']; - $model->calculate_price(); - $model->save(); - - if ($fewo_reservation = $model->fewo_reservation) { - $model->fewo_reservation->from_date = $model->getFromDateRaw(); - $model->fewo_reservation->to_date = $model->getToDateRaw(); - $model->fewo_reservation->save(); + if ($overlappingReservations->isNotEmpty()) { + $conflicts = $overlappingReservations->map(function ($reservation) { + $lodgingName = $reservation->fewo_lodging->name; + $fewoBooking = TravelUserBookingFewo::where('fewo_reservation_id', $reservation->id)->first(); + return "Reservierung gefunden: " . + $reservation->from_date->format('d.m.Y') . " - " . + $reservation->to_date->format('d.m.Y') . " (ID: " . $reservation->id . " | " . $lodgingName . ($fewoBooking ? " | " . $fewoBooking->id . " | " . $fewoBooking->travel_user->first_name . " " . $fewoBooking->travel_user->last_name : "") . ")"; + })->toArray(); + return back() + ->withInput() + ->withErrors($conflicts); } } - if ($fewo_reservation = $model->fewo_reservation) { - if ($model->is_calendar_stern_tours) { - $model->fewo_reservation->from_date = $model->getFromDateRaw(); - $model->fewo_reservation->to_date = $model->getToDateRaw(); - } else { - $model->fewo_reservation->from_date = null; - $model->fewo_reservation->to_date = null; - } - $model->fewo_reservation->save(); + + //check for + $rules = array( + 'travel_user_id' => 'required', + 'fewo_lodging_id' => 'required', + 'from_date' => 'required', + 'to_date' => 'required', + 'travel_booking_fewo_channel_id' => 'required', + 'status' => 'required' + ); + + if ($existingReservationId > 0 && $existingBooking && Request::get('invoice_number')) { + $rules['invoice_number'] = 'required|unique:mysql_stern.travel_user_booking_fewos,invoice_number,' . $existingBooking->id; + } + + $validator = Validator::make(Request::all(), $rules); + + if ($validator->fails()) { + return back()->withRequest(Request::all())->withErrors($validator); + } + + $data['is_calendar_fewo_direct'] = isset($data['is_calendar_fewo_direct']) ? true : false; + $data['is_calendar_traum_fewo'] = isset($data['is_calendar_traum_fewo']) ? true : false; + $data['is_calendar_hrs'] = isset($data['is_calendar_hrs']) ? true : false; + $data['is_calendar_stern_tours'] = isset($data['is_calendar_stern_tours']) ? true : false; + + + if ($id === "new") { + $model = TravelUserBookingFewo::create($data); } else { - if ($model->is_calendar_stern_tours) { + $model = TravelUserBookingFewo::findOrFail($id); + $model->fill($data)->save(); + } - $res = FewoReservation::create([ - 'lodging_id' => $model->fewo_lodging_id, - 'from_date' => $model->getFromDateRaw(), - 'to_date' => $model->getToDateRaw(), - 'status' => 0, - 'type' => 0]); - $model->fewo_reservation_id = $res->id; + $model->last_change_at = now(); + $model->save(); + + $res = $this->calculatePriceNew($model); + + if ($res['season_find'] && $res['price_find']) { + $model->daily_prices = $res['season']; + + if (isset($data['calculate_price_new'])) { + $model->price_travel = $res['price_travel']; + $model->price_service = $res['price_service']; + $model->price_deposit = $res['price_deposit']; + $model->calculate_price(); $model->save(); + + if ($fewo_reservation = $model->fewo_reservation) { + $model->fewo_reservation->from_date = $model->getFromDateRaw(); + $model->fewo_reservation->to_date = $model->getToDateRaw(); + $model->fewo_reservation->lodging_id = $model->fewo_lodging_id; + $model->fewo_reservation->save(); + } + } + if ($fewo_reservation = $model->fewo_reservation) { + if ($model->is_calendar_stern_tours) { + $model->fewo_reservation->from_date = $model->getFromDateRaw(); + $model->fewo_reservation->to_date = $model->getToDateRaw(); + $model->fewo_reservation->lodging_id = $model->fewo_lodging_id; + $model->fewo_reservation->save(); + } else { + $FewoReservation = FewoReservation::find($model->fewo_reservation_id); + $model->fewo_reservation_id = NULL; + $model->save(); + $FewoReservation->delete(); + + $FewoReservations = FewoReservation::where('lodging_id', $model->fewo_lodging_id)->where('from_date', $model->getFromDateRaw())->where('to_date', $model->getToDateRaw())->get(); + foreach ($FewoReservations as $FewoReservation) { + $FewoReservation->delete(); + } + // $model->fewo_reservation->from_date = null; + // $model->fewo_reservation->to_date = null; + } + } else { + if ($model->is_calendar_stern_tours) { + + $res = FewoReservation::create([ + 'lodging_id' => $model->fewo_lodging_id, + 'from_date' => $model->getFromDateRaw(), + 'to_date' => $model->getToDateRaw(), + 'status' => 0, + 'type' => 0 + ]); + $model->fewo_reservation_id = $res->id; + $model->save(); + } } } + $model->save(); + \Session()->flash('alert-save', '1'); + return redirect(route('travel_user_booking_fewo_detail', [$model->id])); + } catch (\Exception $e) { + Log::error('Fehler bei der Reservierungsprüfung: ' . $e->getMessage()); + return back() + ->withInput() + ->withErrors(['system' => 'Ein Systemfehler ist aufgetreten']); } - $model->save(); - \Session()->flash('alert-save', '1'); - return redirect(route('travel_user_booking_fewo_detail', [$model->id])); } - private function calculatePriceNew(TravelUserBookingFewo $travel_user_booking_fewo){ + private function calculatePriceNew(TravelUserBookingFewo $travel_user_booking_fewo) + { $FewoSeasons = FewoSeason::where('from_date', '<', $travel_user_booking_fewo->getToDateRaw()) ->where('to_date', '>=', $travel_user_booking_fewo->getFromDateRaw()) ->get(); $seasons = []; - foreach ($FewoSeasons as $fewoSeason){ + foreach ($FewoSeasons as $fewoSeason) { $FewoPrices = FewoPrice::where('lodging_id', $travel_user_booking_fewo->fewo_lodging_id)->where('season_id', $fewoSeason->id)->get(); $price = []; - foreach ($FewoPrices as $fewoPrice){ + foreach ($FewoPrices as $fewoPrice) { $price = $fewoPrice; } $seasons[] = [ @@ -292,7 +335,6 @@ class TravelUserBookingFewoRepository extends BaseRepository { 'minimum_stay' => $fewoSeason->minimum_stay, 'price' => $price, ]; - } $fromDate = Carbon::parse($travel_user_booking_fewo->getFromDateRaw()); $toDate = Carbon::parse($travel_user_booking_fewo->gettoDateRaw()); @@ -316,17 +358,17 @@ class TravelUserBookingFewoRepository extends BaseRepository { //days foreach ($period as $dt) { foreach ($seasons as $season) { - if($dt->format("Y-m-d") >= $season['fromDay'] && $dt->format("Y-m-d") <= $season['toDay']){ + if ($dt->format("Y-m-d") >= $season['fromDay'] && $dt->format("Y-m-d") <= $season['toDay']) { $check_days[] = $dt->format("d.m.Y"); $price = $season['price']; - if(isset($price->per_night)){ + if (isset($price->per_night)) { $result['price_find'] = true; } $name = $season['name']; $result['season_find'] = true; - if(!isset($result['season'][$name])){ + if (!isset($result['season'][$name])) { $result['season'][$name]['fromDay'] = $dt->format("d.m.Y"); $result['price_service'] = isset($price->flat_price) ? $price->flat_price : 0; $result['season'][$name]['price'] = 0; @@ -335,25 +377,20 @@ class TravelUserBookingFewoRepository extends BaseRepository { $result['season'][$name]['minimumStay'] = $season['minimum_stay']; } - if(!$frist_day){ + if (!$frist_day) { $result['season'][$name]['price'] += isset($price->per_night) ? $price->per_night : 0; - $result['season'][$name]['numberDays'] ++; + $result['season'][$name]['numberDays']++; $result['season'][$name]['toDay'] = $dt->format("d.m.Y"); $result['price_travel'] += isset($price->per_night) ? $price->per_night : 0; - $result['days'] ++; + $result['days']++; $result['season_find'] = true; - - }else{ + } else { $frist_day = true; } - } } - } $result['price_total'] = $result['price_deposit'] + $result['price_travel'] + $result['price_service']; return $result; - } - -} \ No newline at end of file +} diff --git a/app/Services/Booking.php b/app/Services/Booking.php index 64ed181..f831388 100644 --- a/app/Services/Booking.php +++ b/app/Services/Booking.php @@ -1,127 +1,84 @@ get()->sortByDesc('pos')->pluck('slug', 'id'); - return $booking_email_files; + public static function contentFiles(): \Illuminate\Support\Collection + { + return CMSContent::where('identifier', '=', 'booking-email-file') + ->get() + ->sortByDesc('pos') + ->pluck('slug', 'id'); } - public static function setOutputDirs($dir, $subdir){ - self::$output_dirs[$dir][] = $subdir; + public static function setOutputDirs(string $dir, string $subdir): void + { + MailDirService::setOutputDir($dir, $subdir); } - public static function getMailDirNotInOutput($booking_id, $dir){ - $is_o_dirs = isset(self::$output_dirs[$dir]) ? self::$output_dirs[$dir] : []; - $ret = []; - $CustomerMails = CustomerMail::whereBookingId($booking_id)->whereDir($dir)->get(); - if($CustomerMails){ - foreach($CustomerMails as $CustomerMail){ - if(!in_array($CustomerMail->subdir, $is_o_dirs)){ - $ret[] = $CustomerMail->subdir; - } + /** + * @return string[] + */ + public static function getMailDirNotInOutput(int $bookingId, string $dir): array + { + $mails = CustomerMail::whereBookingId($bookingId)->whereDir($dir)->get(); + return MailDirService::getMailDirsNotInOutput($mails, $dir); + } + + public static function getCustomerMailDirs(): \Illuminate\Database\Eloquent\Collection + { + return MailDirService::getCustomerMailDirs(); + } + + public static function getCustomerMailDir(int $id): ?\App\Models\CMSContent + { + return MailDirService::getCustomerMailDir($id); + } + + public static function getCustomerMailName(\App\Models\CMSContent $mailDir, int $mailDirId): string + { + return MailDirService::getCustomerMailName($mailDir, $mailDirId); + } + + public static function getCustomerMailEmails(\App\Models\CMSContent $mailDir, int $mailDirId): array|string + { + return MailDirService::getCustomerMailEmails($mailDir, $mailDirId); + } + + public static function getBookingInstructionPDFName(\App\Models\FewoLodging $fewo): string + { + return "HINWEISE-FERIENWOHNUNG-" . $fewo->pdf_name . ".pdf"; + } + + public static function getBookingCMSContent(\App\Models\CMSContent $content, string $identifier): \Illuminate\Database\Eloquent\Collection + { + return CMSContent::where('identifier', '=', $identifier) + ->where('integer', $content->id) + ->get() + ->sortBy('pos'); + } + + public static function getBookingCMSContentForPDF(string $identifierContent, string $identifier): array + { + $pdfContent = []; + $contents = CMSContent::where('identifier', '=', $identifierContent)->get()->sortBy('pos'); + + foreach ($contents as $content) { + if ($content->decimal > 0) { + $pdfContent[] = $content; } - } - return $ret; - } - - public static function getCustomerMailDirs(){ - $customer_mail_dirs = CMSContent::where('identifier', '=', 'customer-mail-dirs')->get()->sortBy('pos'); - return $customer_mail_dirs; - } - - public static function getCustomerMailDir($id){ - return CMSContent::where('identifier', '=', 'customer-mail-dirs')->where('pos', '=', $id)->first(); - } - - public static function getCustomerMailName($customer_mail_dir, $mail_dir_id){ - - switch ($customer_mail_dir->getArrayContent('model')){ - case 'TravelCountry': - $model = \App\Models\Sym\TravelCountry::find($mail_dir_id); - break; - case 'Airline': - $model = Airline::find($mail_dir_id); - break; - case 'Insurance': - $model = Insurance::find($mail_dir_id); - break; - case 'TravelCompany': - $model = TravelCompany::find($mail_dir_id); - break; - default: - return ''; - } - - if($model){ - if($customer_mail_dir->getArrayContent('model') === 'TravelCountry'){ - return $model->mail_dir_name; - } - return $model->name; - } - return ""; - } - - public static function getCustomerMailEmails($customer_mail_dir, $mail_dir_id){ - - switch ($customer_mail_dir->getArrayContent('model')){ - case 'TravelCountry': - $model = \App\Models\Sym\TravelCountry::find($mail_dir_id); - break; - case 'Airline': - $model = Airline::find($mail_dir_id); - break; - case 'Insurance': - $model = Insurance::find($mail_dir_id); - break; - case 'TravelCompany': - $model = TravelCompany::find($mail_dir_id); - break; - default: - //direkt from CMSContent - return $customer_mail_dir->getArrayContent('emails'); - } - - if($model){ - return $model->contact_emails; - } - return []; - } - - public static function getBookingInstructionPDFName($fewo){ - return "HINWEISE-FERIENWOHNUNG-".$fewo->pdf_name.".pdf"; - } - - public static function getBookingCMSContent($content, $identifier){ - return CMSContent::where('identifier', '=', $identifier)->where('integer', $content->id)->get()->sortBy('pos'); - } - - public static function getBookingCMSContentForPDF($identifier_content, $identifier){ - $pdf_content = []; - $contents = CMSContent::where('identifier', '=', $identifier_content)->get()->sortBy('pos'); - foreach ($contents as $content){ - if($content->decimal > 0){ //in_pdf - $pdf_content[] = $content; - } - if($fewo_contents = self::getBookingCMSContent($content, $identifier)){ - foreach ($fewo_contents as $fewo_content){ - if($fewo_content->decimal > 0){ //in_pdf - $pdf_content[] = $fewo_content; - } + foreach (self::getBookingCMSContent($content, $identifier) as $fewoContent) { + if ($fewoContent->decimal > 0) { + $pdfContent[] = $fewoContent; } } } - return $pdf_content; + + return $pdfContent; } -} \ No newline at end of file +} diff --git a/app/Services/BookingImport.php b/app/Services/BookingImport.php new file mode 100644 index 0000000..2e6988d --- /dev/null +++ b/app/Services/BookingImport.php @@ -0,0 +1,172 @@ + $travel_booking->salutation_id, + 'name' => $travel_booking->last_name, + 'firstname' => $travel_booking->first_name, + 'street' => $travel_booking->street, + 'zip' => $travel_booking->zipcode, + 'city' => $travel_booking->city, + 'country_id' => $travel_booking->country_id, + 'phone' => $travel_booking->phone, + 'phonemobile' => $travel_booking->mobile, + 'email' => $travel_booking->email + ]; + $customer = Customer::create($data); + + // ---- createLead + $data = [ + 'customer_id' => $customer->id, + 'request_date' => $travel_booking->created, + 'travelperiod_start' => $travel_booking->selected_start_date, + 'travelperiod_end' => $travel_booking->selected_end_date, + 'remarks' => $travel_booking->comments, + 'sf_guard_user_id' => 15, + 'is_closed' => true, + 'initialcontacttype_id' => 14, + 'status_id' => 7, + 'website_id' => 1, + ]; + $lead = Lead::create($data); + $lead->updateNextDueDate(); + + $comfort = false; + if(isset($travel_booking->drafts['comfort']) && $travel_booking->drafts['comfort']){ + $comfort = true; + } + $data = [ + 'booking_date' => $travel_booking->created->format('Y-m-d'), + 'customer_id' => $customer->id, + 'inquiry_id' => $lead->id, + 'new_drafts' => $travel_booking->drafts === null ? 0 : 1, + 'sf_guard_user_id' => 15, + 'branch_id' => 4, + 'pax' => $travel_booking->selected_adults, + 'title' => isset($travel_booking->selected_travel['travel_title']) ? $travel_booking->selected_travel['travel_title'] : "", + 'comfort' => $comfort, + 'start_date' => $travel_booking->selected_start_date->format('Y-m-d'), + 'end_date' => $travel_booking->selected_end_date->format('Y-m-d'), + 'website_id' => 1, + 'travel_number' => isset($travel_booking->selected_travel['travel_number']) ? $travel_booking->selected_travel['travel_number'] : null, + /*'participant_name' => isset($travel_booking->participants[0]['last_name']) ? $travel_booking->participants[0]['last_name'] : null, + 'participant_firstname' => isset($travel_booking->participants[0]['first_name']) ? $travel_booking->participants[0]['first_name'] : null, + 'participant_birthdate' => isset($travel_booking->participants[0]['birthday']) ? date( "Y-m-d", strtotime($travel_booking->participants[0]['birthday'])) : null, + 'participant_salutation_id' => isset($travel_booking->participants[0]['gender']) ? $travel_booking->participants[0]['gender'] : null, + 'nationality_id' => isset($travel_booking->participants[0]['nationality']) ? $travel_booking->participants[0]['nationality'] : null,*/ + 'participant_name' => null, + 'participant_firstname' => null, + 'participant_birthdate' => null, + 'participant_salutation_id' => null, + 'nationality_id' => null, + 'price' => $travel_booking->price, + 'price_total' => $travel_booking->price_total, + 'deposit_total' => $travel_booking->deposit_total, + 'final_payment' => $travel_booking->final_payment, + 'final_payment_date' => $travel_booking->final_payment_date->format('Y-m-d'), + 'travel_country_id' => isset($travel_booking->selected_travel['travel_country_id'][0]) ? $travel_booking->selected_travel['travel_country_id'][0] : null, + 'travel_category_id' => isset($travel_booking->selected_travel['travel_category_id']) ? $travel_booking->selected_travel['travel_category_id'] : null, + 'travelagenda_id' => isset($travel_booking->selected_travel['travelagenda_id']) ? $travel_booking->selected_travel['travelagenda_id'] : null, + 'travel_company_id' => isset($travel_booking->selected_travel['travel_company_id']) ? $travel_booking->selected_travel['travel_company_id'] : 4, + 'insurance_offer' => $travel_booking->insurance_offer, + ]; + + //createBooking + $booking = Booking::create($data); + + //createTraveler + if($travel_booking->participants){ + foreach ($travel_booking->participants as $key => $participant){ + Participant::create([ + 'booking_id' => $booking->id, + 'participant_name' => $participant['last_name'], + 'participant_firstname' => $participant['first_name'], + 'participant_birthdate' => date( "Y-m-d", strtotime($participant['birthday'])), + 'participant_salutation_id' => $participant['gender'], + 'participant_child' => $participant['child'], + 'nationality_id' =>$participant['nationality'], + ]); + + } + } + + //createServiceItem //service_items + if($travel_booking->service_items){ + foreach ($travel_booking->service_items as $key => $service_item){ + BookingServiceItem::create([ + 'booking_id' => $booking->id, + 'travel_company_id' => $service_item['travel_company_id'], + 'service_price' => $service_item['service_price'], + 'service_price_refund' => 0, + 'commission' => $service_item['commission'], + 'travel_date' => $service_item['travel_date'], + 'name' => $service_item['name'], + 'is_commission_locked' => 0, + ]); + } + } + + //createServiceItem //insurances + if($travel_booking->insurances){ + foreach ($travel_booking->insurances as $service_item){ + BookingServiceItem::create([ + 'booking_id' => $booking->id, + 'travel_company_id' => $service_item['travel_company_id'], + 'service_price' => $service_item['price'], + 'service_price_refund' => 0, + 'commission' => $service_item['commission'], + 'travel_date' => $service_item['travel_date'], + 'name' => $service_item['name'], + 'is_commission_locked' => 0, + ]); + } + } + + + + //createArrangement + if($travel_booking->arrangements) { + foreach ($travel_booking->arrangements as $key => $arrangement){ + Arrangement::create([ + 'state' => isset($arrangement['state']) ? $arrangement['state'] : null, + 'begin' => isset($arrangement['end']) ? $arrangement['end'] : null, + 'end' => isset($arrangement['end']) ? $arrangement['end'] : null, + 'type_s' => isset($arrangement['type_s']) ? $arrangement['type_s'] : null, + 'data_s' => isset($arrangement['data_s']) ? $arrangement['data_s'] : null, + 'view_position' => isset($arrangement['view_position']) ? $arrangement['view_position'] : null, + 'booking_id' => $booking->id, + 'type_id' => $arrangement['type_id'], + 'in_pdf' => isset($arrangement['in_pdf']) ? $arrangement['in_pdf'] : null, + ]); + } + } + + //createDrafts + + if($travel_booking->drafts) { + $draftRepo = new DraftRepository($booking); + $draftRepo->create_drafts_from_booking($booking->id, $travel_booking->drafts); + } + + $travel_booking->crm_booking_id = $booking->id; + $travel_booking->save(); + + return $booking; + + } +} \ No newline at end of file diff --git a/app/Services/Google2FA.php b/app/Services/Google2FA.php deleted file mode 100644 index 64ed181..0000000 --- a/app/Services/Google2FA.php +++ /dev/null @@ -1,127 +0,0 @@ -get()->sortByDesc('pos')->pluck('slug', 'id'); - return $booking_email_files; - } - - public static function setOutputDirs($dir, $subdir){ - self::$output_dirs[$dir][] = $subdir; - } - - public static function getMailDirNotInOutput($booking_id, $dir){ - $is_o_dirs = isset(self::$output_dirs[$dir]) ? self::$output_dirs[$dir] : []; - $ret = []; - $CustomerMails = CustomerMail::whereBookingId($booking_id)->whereDir($dir)->get(); - if($CustomerMails){ - foreach($CustomerMails as $CustomerMail){ - if(!in_array($CustomerMail->subdir, $is_o_dirs)){ - $ret[] = $CustomerMail->subdir; - } - } - } - return $ret; - } - - public static function getCustomerMailDirs(){ - $customer_mail_dirs = CMSContent::where('identifier', '=', 'customer-mail-dirs')->get()->sortBy('pos'); - return $customer_mail_dirs; - } - - - public static function getCustomerMailDir($id){ - return CMSContent::where('identifier', '=', 'customer-mail-dirs')->where('pos', '=', $id)->first(); - } - - public static function getCustomerMailName($customer_mail_dir, $mail_dir_id){ - - switch ($customer_mail_dir->getArrayContent('model')){ - case 'TravelCountry': - $model = \App\Models\Sym\TravelCountry::find($mail_dir_id); - break; - case 'Airline': - $model = Airline::find($mail_dir_id); - break; - case 'Insurance': - $model = Insurance::find($mail_dir_id); - break; - case 'TravelCompany': - $model = TravelCompany::find($mail_dir_id); - break; - default: - return ''; - } - - if($model){ - if($customer_mail_dir->getArrayContent('model') === 'TravelCountry'){ - return $model->mail_dir_name; - } - return $model->name; - } - return ""; - } - - public static function getCustomerMailEmails($customer_mail_dir, $mail_dir_id){ - - switch ($customer_mail_dir->getArrayContent('model')){ - case 'TravelCountry': - $model = \App\Models\Sym\TravelCountry::find($mail_dir_id); - break; - case 'Airline': - $model = Airline::find($mail_dir_id); - break; - case 'Insurance': - $model = Insurance::find($mail_dir_id); - break; - case 'TravelCompany': - $model = TravelCompany::find($mail_dir_id); - break; - default: - //direkt from CMSContent - return $customer_mail_dir->getArrayContent('emails'); - } - - if($model){ - return $model->contact_emails; - } - return []; - } - - public static function getBookingInstructionPDFName($fewo){ - return "HINWEISE-FERIENWOHNUNG-".$fewo->pdf_name.".pdf"; - } - - public static function getBookingCMSContent($content, $identifier){ - return CMSContent::where('identifier', '=', $identifier)->where('integer', $content->id)->get()->sortBy('pos'); - } - - public static function getBookingCMSContentForPDF($identifier_content, $identifier){ - $pdf_content = []; - $contents = CMSContent::where('identifier', '=', $identifier_content)->get()->sortBy('pos'); - foreach ($contents as $content){ - if($content->decimal > 0){ //in_pdf - $pdf_content[] = $content; - } - if($fewo_contents = self::getBookingCMSContent($content, $identifier)){ - foreach ($fewo_contents as $fewo_content){ - if($fewo_content->decimal > 0){ //in_pdf - $pdf_content[] = $fewo_content; - } - } - } - } - return $pdf_content; - } -} \ No newline at end of file diff --git a/app/Services/Lead.php b/app/Services/Lead.php index 5868452..e6b47dd 100644 --- a/app/Services/Lead.php +++ b/app/Services/Lead.php @@ -1,124 +1,51 @@ get()->sortByDesc('pos')->pluck('slug', 'id'); - return $lead_files; + public static function contentFiles(): \Illuminate\Support\Collection + { + return CMSContent::where('identifier', '=', 'lead-email-file') + ->get() + ->sortByDesc('pos') + ->pluck('slug', 'id'); } - public static function setOutputDirs($dir, $subdir){ - self::$output_dirs[$dir][] = $subdir; + public static function setOutputDirs(string $dir, string $subdir): void + { + MailDirService::setOutputDir($dir, $subdir); } - public static function getMailDirNotInOutput($lead_id, $dir){ - $is_o_dirs = isset(self::$output_dirs[$dir]) ? self::$output_dirs[$dir] : []; - $ret = []; - $LeadMails = LeadMail::whereLeadId($lead_id)->whereDir($dir)->get(); - if($LeadMails){ - foreach($LeadMails as $LeadMail){ - if(!in_array($LeadMail->subdir, $is_o_dirs)){ - $ret[] = $LeadMail->subdir; - } - } - } - return $ret; - } - - public static function getCustomerMailDirs(){ - $customer_mail_dirs = CMSContent::where('identifier', '=', 'customer-mail-dirs')->get()->sortBy('pos'); - return $customer_mail_dirs; + /** + * @return string[] + */ + public static function getMailDirNotInOutput(int $leadId, string $dir): array + { + $mails = LeadMail::whereLeadId($leadId)->whereDir($dir)->get(); + return MailDirService::getMailDirsNotInOutput($mails, $dir); } - public static function getCustomerMailDir($id){ - return CMSContent::where('identifier', '=', 'customer-mail-dirs')->where('pos', '=', $id)->first(); + public static function getCustomerMailDirs(): \Illuminate\Database\Eloquent\Collection + { + return MailDirService::getCustomerMailDirs(); } - public static function getCustomerMailName($lead_mail_dir, $mail_dir_id){ - - switch ($lead_mail_dir->getArrayContent('model')){ - case 'TravelCountry': - $model = \App\Models\Sym\TravelCountry::find($mail_dir_id); - break; - case 'Airline': - $model = Airline::find($mail_dir_id); - break; - case 'Insurance': - $model = Insurance::find($mail_dir_id); - break; - case 'TravelCompany': - $model = TravelCompany::find($mail_dir_id); - break; - default: - return ''; - } - - if($model){ - if($lead_mail_dir->getArrayContent('model') === 'TravelCountry'){ - return $model->mail_dir_name; - } - return $model->name; - } - return ""; + public static function getCustomerMailDir(int $id): ?\App\Models\CMSContent + { + return MailDirService::getCustomerMailDir($id); } - public static function getCustomerMailEmails($lead_mail_dir, $mail_dir_id){ - - switch ($lead_mail_dir->getArrayContent('model')){ - case 'TravelCountry': - $model = \App\Models\Sym\TravelCountry::find($mail_dir_id); - break; - case 'Airline': - $model = Airline::find($mail_dir_id); - break; - case 'Insurance': - $model = Insurance::find($mail_dir_id); - break; - case 'TravelCompany': - $model = TravelCompany::find($mail_dir_id); - break; - default: - //direkt from CMSContent - return $lead_mail_dir->getArrayContent('emails'); - } - - if($model){ - return $model->contact_emails; - } - return []; + public static function getCustomerMailName(\App\Models\CMSContent $mailDir, int $mailDirId): string + { + return MailDirService::getCustomerMailName($mailDir, $mailDirId); } - /*public static function getFeWoInstructionPDFName($fewo){ - return "HINWEISE-FERIENWOHNUNG-".$fewo->pdf_name.".pdf"; + public static function getCustomerMailEmails(\App\Models\CMSContent $mailDir, int $mailDirId): array|string + { + return MailDirService::getCustomerMailEmails($mailDir, $mailDirId); } - public static function getFeWoCMSContent($content, $identifier_fewo){ - return CMSContent::where('identifier', '=', $identifier_fewo)->where('integer', $content->id)->get()->sortBy('pos'); - } - - public static function getFeWoCMSContentForPDF($identifier_content, $identifier_fewo){ - $pdf_content = []; - $contents = CMSContent::where('identifier', '=', $identifier_content)->get()->sortBy('pos'); - foreach ($contents as $content){ - if($content->decimal > 0){ //in_pdf - $pdf_content[] = $content; - } - if($fewo_contents = BookingFewo::getFeWoCMSContent($content, $identifier_fewo)){ - foreach ($fewo_contents as $fewo_content){ - if($fewo_content->decimal > 0){ //in_pdf - $pdf_content[] = $fewo_content; - } - } - } - } - return $pdf_content; - }*/ -} \ No newline at end of file +} diff --git a/app/Services/MailDirService.php b/app/Services/MailDirService.php new file mode 100644 index 0000000..f36cec6 --- /dev/null +++ b/app/Services/MailDirService.php @@ -0,0 +1,92 @@ +get()->sortBy('pos'); + } + + public static function getCustomerMailDir(int $id): ?CMSContent + { + return CMSContent::where('identifier', '=', 'customer-mail-dirs')->where('pos', '=', $id)->first(); + } + + public static function getCustomerMailName(CMSContent $mailDir, int $mailDirId): string + { + $model = self::resolveModel($mailDir, $mailDirId); + + if ($model === null) { + return ''; + } + + if ($mailDir->getArrayContent('model') === 'TravelCountry') { + return $model->mail_dir_name ?? ''; + } + + return $model->name ?? ''; + } + + /** + * @return array|string + */ + public static function getCustomerMailEmails(CMSContent $mailDir, int $mailDirId): array|string + { + $model = self::resolveModel($mailDir, $mailDirId); + + if ($model === null) { + // Default: emails come directly from CMSContent + return $mailDir->getArrayContent('emails') ?? []; + } + + return $model->contact_emails ?? []; + } + + /** + * Returns subdirs from a mail collection that were not already in the output. + * + * @param \Illuminate\Database\Eloquent\Collection $mails Collection of CustomerMail or LeadMail + * @return string[] + */ + public static function getMailDirsNotInOutput(iterable $mails, string $dir): array + { + $processed = self::$outputDirs[$dir] ?? []; + $result = []; + + foreach ($mails as $mail) { + if (!in_array($mail->subdir, $processed, true)) { + $result[] = $mail->subdir; + } + } + + return $result; + } + + private static function resolveModel(CMSContent $mailDir, int $mailDirId): mixed + { + return match ($mailDir->getArrayContent('model')) { + 'TravelCountry' => \App\Models\Sym\TravelCountry::find($mailDirId), + 'Airline' => Airline::find($mailDirId), + 'Insurance' => Insurance::find($mailDirId), + 'TravelCompany' => TravelCompany::find($mailDirId), + default => null, + }; + } +} diff --git a/app/Services/Model.php b/app/Services/Model.php index 9fc8165..6f2e467 100644 --- a/app/Services/Model.php +++ b/app/Services/Model.php @@ -1,6 +1,7 @@ get()->pluck('fullname', 'id'); } @@ -25,18 +29,21 @@ class Model public static function getTravelCountryArray($emtpy = false){ $TravelCountry = TravelCountry::where('active_backend', 1)->orderBy('name')->get()->pluck('name', 'id'); return $emtpy ? $TravelCountry->prepend('-', 0) : $TravelCountry; + } - } - - public static function getTravelCountryCRMArray($emtpy = false){ + public static function getTravelCountryCRMArray($emtpy = false){ $TravelCountry = TravelCountry::where('active_backend', 1)->orderBy('name')->get()->pluck('name', 'crm_id'); return $emtpy ? $TravelCountry->prepend('-', 0) : $TravelCountry; } - public static function getTravelCategoryArray($emtpy = false){ - $TravelCategory = TravelCategory::orderBy('name')->get()->pluck('name', 'id'); - return $emtpy ? $TravelCategory->prepend('-', 0) : $TravelCategory; + public static function getTravelProgramArray($emtpy = false){ + $TravelProgram = TravelProgram::where('status', 1)->orderBy('title')->get()->pluck('title', 'id'); + return $emtpy ? $TravelProgram->prepend('-', 0) : $TravelProgram; + } + public static function getTravelCategoryArray($emtpy = false){ + $TravelCategory = TravelCategory::where('active', true)->orderBy('name')->get()->pluck('name', 'id'); + return $emtpy ? $TravelCategory->prepend('-', 0) : $TravelCategory; } public static function getTravelAgendaArray($emtpy = false, $travelcountry_id = false){ @@ -62,6 +69,23 @@ class Model $TravelCompany = TravelCompany::where('active', true)->orderBy('name')->get()->pluck('name', 'id'); return $emtpy ? $TravelCompany->prepend('-', 0) : $TravelCompany; } + + + public static function getAirportArray($emtpy = false){ + $Airports = Airport::where('active', true)->orderBy('name')->get()->pluck('name', 'id'); + return $emtpy ? $Airports->prepend('-', 0) : $Airports; + } + + public static function getTravelArrivalPointArray($emtpy = false){ + $TravelArrivalPoint = TravelArrivalPoint::where('active', true)->orderBy('name')->get()->pluck('name', 'id'); + return $emtpy ? $TravelArrivalPoint->prepend('-', 0) : $TravelArrivalPoint; + } + + public static function getTravelGerneralNotesArray($emtpy = false){ + $TravelGerneralNote = TravelGerneralNote::orderBy('name')->get()->pluck('name', 'id'); + return $emtpy ? $TravelGerneralNote->prepend('-', 0) : $TravelGerneralNote; + } + public static function getBranchArray($emtpy = false){ $Branch = Branch::orderBy('name')->get()->pluck('name', 'id'); @@ -74,7 +98,7 @@ class Model } public static function getSalutationArray($emtpy = false){ - $Salutation = Salutation::orderBy('name')->get()->pluck('name', 'id'); + $Salutation = Salutation::orderBy('id')->get()->pluck('name', 'id'); return $emtpy ? $Salutation->prepend('-', 0) : $Salutation; } @@ -93,7 +117,7 @@ class Model } public static function getCMSContentGeneralNameById($id = false){ - if($id > 0){ + if($id != 'new' && $id > 0){ $content = CMSContent::findOrFail($id); return $content->name; } diff --git a/app/Services/NavigationTreeService.php b/app/Services/NavigationTreeService.php new file mode 100644 index 0000000..abe5c32 --- /dev/null +++ b/app/Services/NavigationTreeService.php @@ -0,0 +1,681 @@ +cacheEnabled = $enabled; + return $this; + } + + /** + * Setzt die Cache-Zeit + * + * @param int $minutes + * @return $this + */ + public function setCacheTime(int $minutes): self + { + $this->cacheTime = $minutes; + return $this; + } + + /** + * Löscht den Navigation-Cache + * + * @return void + */ + public function clearCache(): void + { + Cache::forget('navigation_tree_full'); + Cache::forget('navigation_tree_active'); + Cache::forget('navigation_flat_full'); + Cache::forget('navigation_flat_active'); + + // Lösche auch alle Subtree-Caches + $keys = Cache::get('navigation_subtree_keys', []); + foreach ($keys as $key) { + Cache::forget($key); + } + Cache::forget('navigation_subtree_keys'); + } + /** + * Gibt den kompletten Navigationsbaum zurück + * + * @param bool $onlyActive Nur aktive und sichtbare Seiten zurückgeben + * @param bool $onlyShowInNavi Nur Seiten die in der Navigation angezeigt werden sollen + * @return array + */ + public function getNavigationTree(bool $onlyActive = false, bool $onlyShowInNavi = false): array + { + $cacheKey = $onlyActive ? 'navigation_tree_active' : 'navigation_tree_full'; + + if ($this->cacheEnabled) { + return Cache::remember($cacheKey, $this->cacheTime, function () use ($onlyActive, $onlyShowInNavi) { + return $this->buildNavigationTree($onlyActive, $onlyShowInNavi); + }); + } + + return $this->buildNavigationTree($onlyActive, $onlyShowInNavi); + } + + /** + * Gibt den Navigationsbaum wie im Frontend zurück (nur Länderseiten mit Children) + * + * @param bool $includeHidden Auch ausgeblendete Pages anzeigen + * @return array + */ + public function getFrontendNavigationTree(bool $includeHidden = false): array + { + $cacheKey = 'navigation_tree_frontend_' . ($includeHidden ? 'with_hidden' : 'visible'); + + if ($this->cacheEnabled) { + return Cache::remember($cacheKey, $this->cacheTime, function () use ($includeHidden) { + return $this->buildFrontendNavigationTree($includeHidden); + }); + } + + return $this->buildFrontendNavigationTree($includeHidden); + } + + /** + * Baut den Frontend-Navigationsbaum auf + * + * @param bool $includeHidden + * @return array + */ + protected function buildFrontendNavigationTree(bool $includeHidden = false): array + { + $tree = []; + + // 1. Länderseiten (Hauptnavigation) + $countryPages = $this->getCountryPages($includeHidden); + foreach ($countryPages as $page) { + $node = $this->buildFrontendNode($page, $includeHidden); + if ($node) { + $node['section'] = 'Länder-Navigation'; + $tree[] = $node; + } + } + + // 2. Ferienwohnungen (USEDOM) + $fewoPages = $this->getFewoPages($includeHidden); + if (!empty($fewoPages)) { + $tree[] = [ + 'is_section_separator' => true, + 'title' => 'USEDOM Ferienwohnungen', + 'icon' => 'isv-fewo', + 'section' => 'Ferienwohnungen' + ]; + foreach ($fewoPages as $page) { + $node = $this->buildFrontendNode($page, $includeHidden); + if ($node) { + $node['section'] = 'Ferienwohnungen'; + $tree[] = $node; + } + } + } + + // 3. Weitere wichtige Seiten (Mehr-Menü) + $morePages = $this->getMoreMenuPages($includeHidden); + if (!empty($morePages)) { + $tree[] = [ + 'is_section_separator' => true, + 'title' => 'Weitere Seiten (Mehr-Menü)', + 'icon' => 'fa fa-ellipsis-v', + 'section' => 'Mehr' + ]; + foreach ($morePages as $page) { + $node = $this->buildFrontendNode($page, $includeHidden); + if ($node) { + $node['section'] = 'Mehr'; + $tree[] = $node; + } + } + } + + return $tree; + } + + /** + * Hole alle Länderseiten + * + * @param bool $includeHidden + * @return \Illuminate\Database\Eloquent\Collection + */ + protected function getCountryPages(bool $includeHidden = false) + { + $query = Page::whereNull('parent_id') + ->whereNotNull('country_id') + ->orderBy('order') + ->orderBy('title'); + + if (!$includeHidden) { + $query->where('show_in_navi', 1); + $query->where('status', 1); + } + + return $query->get(); + } + + /** + * Hole Ferienwohnungs-Übersichtsseite mit Children + * + * @param bool $includeHidden + * @return array + */ + protected function getFewoPages(bool $includeHidden = false) + { + // Suche die Hauptseite "Ferienwohnungen" + $query = Page::where('slug', 'ferienwohnungen') + ->orWhere('real_url_path', '/ferienwohnungen'); + + if (!$includeHidden) { + $query->where('status', 1); + } + + $fewoMainPage = $query->first(); + + if (!$fewoMainPage) { + return []; + } + + // Nur die Hauptseite zurückgeben, Children werden über buildFrontendNode geladen + return [$fewoMainPage]; + } + + /** + * Hole Seiten für "Mehr"-Menü + * + * @param bool $includeHidden + * @return array + */ + protected function getMoreMenuPages(bool $includeHidden = false) + { + // Typische Slugs/Pfade aus dem Mehr-Menü mit ihren möglichen Children + $morePages = [ + 'ueber-uns' => true, // Könnte Children haben + 'reiseversicherung' => false, // Keine Children + 'reisefuehrer' => true, // Könnte Children haben + 'reisemagazin' => true, // Könnte Children haben + 'reisenews' => true // Könnte Children haben + ]; + + $pages = []; + + foreach ($morePages as $slug => $hasChildren) { + $query = Page::where('slug', $slug) + ->orWhere('real_url_path', '/' . $slug); + + if (!$includeHidden) { + $query->where('status', 1); + } + + $page = $query->first(); + if ($page) { + $pages[] = $page; + } + } + + return $pages; + } + + /** + * Baut einen Frontend-Node auf (mit Children gruppiert nach beforeTitle) + * + * @param Page $page + * @param bool $includeHidden + * @param bool $loadChildren Soll Children geladen werden? + * @return array|null + */ + protected function buildFrontendNode(Page $page, bool $includeHidden = false, bool $loadChildren = true): ?array + { + $node = $this->buildNodeData($page, true); + + if (!$loadChildren) { + $node['children'] = []; + $node['has_children'] = false; + return $node; + } + + // Hole Children + $query = Page::where('parent_id', $page->id) + ->orderBy('order') + ->orderBy('title'); + + if (!$includeHidden) { + $query->where('show_in_navi', 1); + $query->where('status', 1); + } + + $children = $query->get(); + + // Gruppiere Children nach beforeTitle + $groupedChildren = [ + 'main' => [], + 'infos' => [] + ]; + + foreach ($children as $child) { + $childNode = $this->buildNodeData($child, true); + + if ($child->before_title === 'Infos') { + $groupedChildren['infos'][] = $childNode; + } else { + $groupedChildren['main'][] = $childNode; + } + } + + // Baue finale Children-Liste mit Gruppierung + $finalChildren = []; + + // Erst Haupt-Children + foreach ($groupedChildren['main'] as $childNode) { + $finalChildren[] = $childNode; + } + + // Dann Info-Children mit Separator + if (!empty($groupedChildren['infos'])) { + $finalChildren[] = [ + 'is_separator' => true, + 'title' => 'Infos', + 'icon' => 'fa fa-info-circle' + ]; + foreach ($groupedChildren['infos'] as $childNode) { + $finalChildren[] = $childNode; + } + } + + $node['children'] = $finalChildren; + $node['has_children'] = count($finalChildren) > 0; + + return $node; + } + + /** + * Baut den Navigationsbaum auf (ohne Caching) + * + * @param bool $onlyActive + * @param bool $onlyShowInNavi + * @return array + */ + protected function buildNavigationTree(bool $onlyActive = false, bool $onlyShowInNavi = false): array + { + // Hole alle Root-Seiten (ohne Parent) + $query = Page::whereNull('parent_id') + ->orderBy('order') + ->orderBy('title'); + + if ($onlyActive) { + $query->where('status', 1); + } + + if ($onlyShowInNavi) { + $query->where('show_in_navi', 1); + } + + $rootPages = $query->get(); + + $tree = []; + foreach ($rootPages as $page) { + $tree[] = $this->buildNode($page, $onlyActive, $onlyShowInNavi); + } + + return $tree; + } + + /** + * Gibt einen Teilbaum zurück, beginnend mit einer bestimmten Page + * + * @param int $rootId Die ID der Root-Page + * @param bool $onlyActive Nur aktive Seiten zurückgeben + * @param bool $onlyShowInNavi Nur Seiten die in der Navigation angezeigt werden sollen + * @return array|null + */ + public function getNavigationSubTree(int $rootId, bool $onlyActive = false, bool $onlyShowInNavi = false): ?array + { + $cacheKey = "navigation_subtree_{$rootId}_" . ($onlyActive ? 'active' : 'full'); + + if ($this->cacheEnabled) { + // Speichere Cache-Key für späteres Löschen + $keys = Cache::get('navigation_subtree_keys', []); + if (!in_array($cacheKey, $keys)) { + $keys[] = $cacheKey; + Cache::put('navigation_subtree_keys', $keys, $this->cacheTime); + } + + return Cache::remember($cacheKey, $this->cacheTime, function () use ($rootId, $onlyActive, $onlyShowInNavi) { + return $this->buildSubTree($rootId, $onlyActive, $onlyShowInNavi); + }); + } + + return $this->buildSubTree($rootId, $onlyActive, $onlyShowInNavi); + } + + /** + * Baut einen Teilbaum auf (ohne Caching) + * + * @param int $rootId + * @param bool $onlyActive + * @param bool $onlyShowInNavi + * @return array|null + */ + protected function buildSubTree(int $rootId, bool $onlyActive = false, bool $onlyShowInNavi = false): ?array + { + $page = Page::find($rootId); + + if (!$page) { + return null; + } + + return $this->buildNode($page, $onlyActive, $onlyShowInNavi); + } + + /** + * Gibt eine flache Liste aller Navigationspunkte zurück + * + * @param bool $onlyActive Nur aktive Seiten zurückgeben + * @param bool $onlyShowInNavi Nur Seiten die in der Navigation angezeigt werden sollen + * @return array + */ + public function getFlatNavigationList(bool $onlyActive = false, bool $onlyShowInNavi = false): array + { + $cacheKey = $onlyActive ? 'navigation_flat_active' : 'navigation_flat_full'; + + if ($this->cacheEnabled) { + return Cache::remember($cacheKey, $this->cacheTime, function () use ($onlyActive, $onlyShowInNavi) { + return $this->buildFlatList($onlyActive, $onlyShowInNavi); + }); + } + + return $this->buildFlatList($onlyActive, $onlyShowInNavi); + } + + /** + * Baut eine flache Liste auf (ohne Caching) + * + * @param bool $onlyActive + * @param bool $onlyShowInNavi + * @return array + */ + protected function buildFlatList(bool $onlyActive = false, bool $onlyShowInNavi = false): array + { + $query = Page::orderBy('order') + ->orderBy('title'); + + if ($onlyActive) { + $query->where('status', 1); + } + + if ($onlyShowInNavi) { + $query->where('show_in_navi', 1); + } + + $pages = $query->get(); + + $list = []; + foreach ($pages as $page) { + $list[] = $this->buildNodeData($page, false); + } + + return $list; + } + + /** + * Baut einen einzelnen Knoten mit allen Kindern rekursiv auf + * + * @param Page $page + * @param bool $onlyActive + * @param bool $onlyShowInNavi + * @return array + */ + protected function buildNode(Page $page, bool $onlyActive = false, bool $onlyShowInNavi = false): array + { + $node = $this->buildNodeData($page, true); + + // Hole alle Child-Seiten + $query = Page::where('parent_id', $page->id) + ->orderBy('order') + ->orderBy('title'); + + if ($onlyActive) { + $query->where('status', 1); + } + + if ($onlyShowInNavi) { + $query->where('show_in_navi', 1); + } + + $children = $query->get(); + + $childNodes = []; + foreach ($children as $child) { + $childNodes[] = $this->buildNode($child, $onlyActive, $onlyShowInNavi); + } + + $node['children'] = $childNodes; + $node['has_children'] = count($childNodes) > 0; + + return $node; + } + + /** + * Erstellt die Datenstruktur für einen einzelnen Navigationspunkt + * + * @param Page $page + * @param bool $includeRelations Beziehungen laden (TravelProgram, etc.) + * @return array + */ + protected function buildNodeData(Page $page, bool $includeRelations = true): array + { + $data = [ + 'id' => $page->id, + 'title' => $page->title, + 'title_short' => $page->title_short, + 'before_title' => $page->before_title, + 'slug' => $page->slug, + 'real_url_path' => $page->real_url_path, + 'url' => $page->real_url_path ?: $this->buildUrlPath($page), + 'status' => $page->status, + 'show_in_navi' => $page->show_in_navi, + 'order' => $page->order, + 'template' => $page->template, + 'lvl' => $page->lvl, + 'parent_id' => $page->parent_id, + + // SEO-Informationen + 'pagetitle' => $page->pagetitle, + 'description' => $page->description, + 'keywords' => $page->keywords, + 'canonical_url' => $page->canonical_url, + + // Tree-Informationen + 'lft' => $page->lft, + 'rgt' => $page->rgt, + 'tree_root' => $page->tree_root, + + // Box-Informationen (für Karten/Boxen in der Navigation) + 'box_body' => $page->box_body, + 'box_image_url' => $page->box_image_url, + 'box_star' => $page->box_star, + 'box_discount' => $page->box_discount, + + // Zusätzliche Flags + 'is_travel_program' => !is_null($page->travel_program), + 'is_fewo_lodging' => !is_null($page->fewo_lodging), + 'is_country_page' => !is_null($page->country_id), + ]; + + if ($includeRelations) { + // Lade Beziehungen wenn benötigt + if ($page->travel_program) { + $travelProgram = $page->travel_program_content; + if ($travelProgram) { + $data['travel_program'] = [ + 'id' => $travelProgram->id, + 'title' => $travelProgram->title, + 'subtitle' => $travelProgram->subtitle, + 'status' => $travelProgram->status, + 'position' => $travelProgram->position, + 'duration' => $travelProgram->duration, + 'price_from' => $travelProgram->price_from, + ]; + } + } + + if ($page->fewo_lodging) { + $fewoLodging = $page->fewo_lodging(); + if ($fewoLodging) { + $fewo = $fewoLodging->first(); + if ($fewo) { + $data['fewo_lodging'] = [ + 'id' => $fewo->id, + 'name' => $fewo->name, + 'status' => $fewo->status, + ]; + } + } + } + + if ($page->country_id) { + $country = $page->travel_country; + if ($country) { + $data['country'] = [ + 'id' => $country->id, + 'name' => $country->name, + 'title' => $country->title, + 'slug' => $country->slug, + ]; + } + } + } + + // CMS Settings (JSON) + if ($page->cms_settings) { + try { + $data['cms_settings'] = json_decode($page->cms_settings, true); + } catch (\Exception $e) { + $data['cms_settings'] = null; + } + } + + return $data; + } + + /** + * Baut den URL-Pfad für eine Page rekursiv auf (Fallback wenn real_url_path nicht gesetzt) + * + * @param Page $page + * @return string + */ + protected function buildUrlPath(Page $page): string + { + $slugs = []; + $current = $page; + + // Sammle alle Slugs von unten nach oben + while ($current) { + if ($current->slug) { + array_unshift($slugs, $current->slug); + } + $current = $current->parent_page; + } + + return '/' . implode('/', $slugs); + } + + /** + * Zählt die Anzahl der Knoten im Baum + * + * @param array $tree + * @return int + */ + public function countNodes(array $tree): int + { + $count = 0; + foreach ($tree as $node) { + $count++; // Zähle den aktuellen Knoten + if (isset($node['children']) && is_array($node['children'])) { + $count += $this->countNodes($node['children']); + } + } + return $count; + } + + /** + * Findet einen Knoten anhand seiner ID im Baum + * + * @param array $tree + * @param int $nodeId + * @return array|null + */ + public function findNodeById(array $tree, int $nodeId): ?array + { + foreach ($tree as $node) { + if ($node['id'] === $nodeId) { + return $node; + } + if (isset($node['children']) && is_array($node['children'])) { + $found = $this->findNodeById($node['children'], $nodeId); + if ($found) { + return $found; + } + } + } + return null; + } + + /** + * Gibt den Breadcrumb-Pfad für eine bestimmte Page zurück + * + * @param int $pageId + * @return array + */ + public function getBreadcrumb(int $pageId): array + { + $page = Page::find($pageId); + if (!$page) { + return []; + } + + $breadcrumb = []; + $current = $page; + + while ($current) { + array_unshift($breadcrumb, [ + 'id' => $current->id, + 'title' => $current->title, + 'title_short' => $current->title_short, + 'url' => $current->real_url_path ?: $this->buildUrlPath($current), + 'slug' => $current->slug, + ]); + $current = $current->parent_page; + } + + return $breadcrumb; + } +} diff --git a/app/Services/Passolution.php b/app/Services/Passolution.php index 008d5b6..12bb01e 100644 --- a/app/Services/Passolution.php +++ b/app/Services/Passolution.php @@ -1,8 +1,9 @@ create(['contents' => $this->htmlText], $this->pdf_name, 'save', $this->pdf_path.$this->pdf_dir); + $pdf_file->merger($this->pdf_dir, $this->pdf_name, 'sterntours-template'); } public function findOrCreatePDF($create = false, $resync = false){ @@ -219,7 +221,7 @@ class Passolution if(!Storage::disk('public')->exists( $this->pdf_dir )){ Storage::disk('public')->makeDirectory($this->pdf_dir); //creates directory } - $this->pdf_path = Storage::disk('public')->getAdapter()->getPathPrefix(); + $this->pdf_path = Storage::disk('public')->path(''); } } diff --git a/app/Services/Placeholder.php b/app/Services/Placeholder.php index 648310e..e9b7676 100644 --- a/app/Services/Placeholder.php +++ b/app/Services/Placeholder.php @@ -147,13 +147,13 @@ class Placeholder public static function replaceBooking(Booking $booking, $content) { - $dear = $booking->customer->salutation_id == 1 ? 'geehrter' : 'geehrte'; + $dear = $booking->customer->getSalutationDear(); $first_name = $booking->customer->firstname; $last_name = $booking->customer->name; $title = $booking->customer->title; $country = $booking->travel_country_id ? $booking->travel_country->name : "-"; $program = $booking->travelagenda_id ? $booking->travel_agenda->name : "-"; - $salutation = isset($booking->customer->salutation) ? $booking->customer->salutation->name : '-'; + $salutation = isset($booking->customer->salutation) ? $booking->customer->getSalutationName() : '-'; $filekey = $booking->filekey; $flight_info = ""; @@ -174,7 +174,7 @@ class Placeholder $myjack_nr = $booking->merlin_order_number; - $participants = "Teilnehmer:
"; + $participants = "Teilnehmer:in
"; //first if($booking->participant_firstname){ $participants .= $booking->participant_salutation_id ? \App\Services\Model::getSalutationById($booking->participant_salutation_id)." " : ''; @@ -209,12 +209,12 @@ class Placeholder public static function replaceBookingFewo(TravelUserBookingFewo $booking_fewo, $content) { - $dear = $booking_fewo->travel_user->salutation_id == 1 ? 'geehrter' : 'geehrte'; + $dear = $booking_fewo->travel_user->getSalutationDear(); $first_name = $booking_fewo->travel_user->first_name; $last_name = $booking_fewo->travel_user->last_name; $title = $booking_fewo->travel_user->title; $program = $booking_fewo->fewo_lodging_id ? $booking_fewo->fewo_lodging->name : "-"; - $salutation = $booking_fewo->travel_user->salutation_id == 1 ? 'Herr' : 'Frau'; + $salutation = $booking_fewo->travel_user->getSalutationName(); $start_date = $booking_fewo->from_date; $end_date = $booking_fewo->to_date; $booking_date = $booking_fewo->booking_date; @@ -232,19 +232,19 @@ class Placeholder public static function replaceLead(Lead $lead, $content) { - $dear = $lead->customer->salutation_id == 1 ? 'geehrter' : 'geehrte'; + $dear = $lead->customer->getSalutationDear(); $first_name = $lead->customer->firstname; $last_name = $lead->customer->name; $title = $lead->customer->title; $country = $lead->travelcountry_id ? $lead->travel_country->name : "-"; $program = $lead->travelagenda_id ? $lead->travel_agenda->name : "-"; - $salutation = $lead->customer->salutation_id == 1 ? 'Herr' : 'Frau'; + $salutation = $lead->customer->getSalutationName(); $start_date = $lead->travelperiod_start ? _format_date($lead->travelperiod_start) : '-'; $end_date = $lead->travelperiod_end ? _format_date($lead->travelperiod_end) : '-'; $booking_date = $lead->request_date ? _format_date($lead->request_date) : '-'; $participants = ""; if($lead->lead_participants->count()){ - $participants = "Teilnehmer:
"; + $participants = "Teilnehmer:in
"; foreach($lead->lead_participants as $participant){ $participants .= $participant->salutation ? $participant->salutation->name." " : ''; $participants .= $participant->participant_firstname." ".$participant->participant_name; diff --git a/app/Services/SyS/Import.php b/app/Services/SyS/Import.php new file mode 100644 index 0000000..3ca8142 --- /dev/null +++ b/app/Services/SyS/Import.php @@ -0,0 +1,652 @@ +iq_content_tree_nodes as $tree_node){ + + $text .= $tree_node->id." -- ".$tree_node->title."\n"; + foreach ($tree_node->iq_content_sites as $site){ + if($site->travel_guide && $site->identifier === null){ + $identifier = $site->travel_guide->scope === 1 ? 'long' : 'short'; + //$site->identifier = $site->travel_guide->scope === 1 ? 'long' : 'short'; + $text .= "-- ".$site->id." -- ".$identifier."\n"; + } + } + } + } + $data = [ + 'text' => $text, + 'values' => $val, + ]; + return view('sys.tools.trees', $data); + } + + public function treeStore() + { + $trees = IQContentTree::all(); + foreach ($trees as $tree){ + foreach ($tree->iq_content_tree_nodes as $tree_node){ + + foreach ($tree_node->iq_content_sites as $site){ + if($site->travel_guide){ + $site->identifier = $site->travel_guide->scope === 1 ? 'long' : 'short'; + $site->save(); + } + } + } + } + return redirect()->back(); + } + + + //clean_tree_code + public function cleanTreeCode(){ + $val = []; + $text = ""; + + $travelGuide = TravelGuide::find(166); + $text = $travelGuide->full_text; + + $data = [ + 'new_text' => \App\Services\Util::cleanHTML($text), + 'full_text' => $travelGuide->full_text, + 'values' => $val, + ]; + return view('sys.tools.clean', $data); + } + + public function cleanTreeCodeStore(){ + $this->cleanTextTravelGuide(); + return redirect()->back(); + } + + public function cleanTextTravelGuide() + { + $TravelGuides = TravelGuide::all(); + foreach ($TravelGuides as $travelGuide){ + $new_text = \App\Services\Util::cleanHTML($travelGuide->full_text); + if(strcmp($travelGuide->full_text, $new_text) != 0){ + $travelGuide->full_text = $new_text; + $travelGuide->save(); + var_dump($travelGuide->id); + echo "
"; + } + } + die("done"); + } + + //media_insert + public function mediaInsert(){ + $val = []; + $text = ""; + $data = [ + 'text' => $text, + 'values' => $val, + ]; + return view('sys.tools.insert', $data); + } + + public function mediaInsertStore(){ + $val = []; + + $data = Request::all(); + $text = $data['text']; + + if($data['action'] === 'insert'){ + $lines = explode(PHP_EOL, $text); + $FolderC = new FolderController(); + $FileC = new FileController(); + + foreach ($lines as $line){ + $sep = explode(';', $line); + if(isset($sep[0]) && isset($sep[1]) && isset($sep[2])){ + //youtube //main dir + $working_dir = "/shares/youtube/".$sep[0]; + $folder_name = $sep[1]; + + $folder = $FolderC->makeFolder($working_dir, $folder_name); + $working_dir = $working_dir."/".$folder_name; + $file = $FileC->makeYoutube($working_dir, $sep[2]); + $val[] = $file.' - '.$sep[2]." | ".$working_dir; + } + } + } + if($data['action'] === 'youtube_ids'){ + $TravelGuides = TravelGuide::all(); + foreach ($TravelGuides as $travelGuide){ + $this->findYoutubeLinks($val, $travelGuide); + + /* */ + } + } + if($data['action'] === 'replace_youtube_links') { + $TravelGuides = TravelGuide::all(); + foreach ($TravelGuides as $travelGuide){ + $this->replaceYoutubeLinks($val, $travelGuide); + + /* */ + } + } + + if($data['action'] === 'replace_youtube_div') { + $this->replaceYoutubeDiv($val, TravelGuide::find(335)); + $TravelGuides = TravelGuide::all(); + foreach ($TravelGuides as $travelGuide){ + $this->replaceYoutubeDiv($val, $travelGuide); + + /* */ + } + } + + + $data = [ + 'text' => $text, + 'values' => $val, + ]; + return view('sys.tools.insert', $data); + + } + +//import + public function import() + { + $text = ""; + $val = []; + + $data = [ + 'text' => $text, + 'values' => $val, + ]; + return view('sys.tools.import', $data); + } + + public function importStore() + { + + $data = Request::all(); + + $lines = explode(PHP_EOL, $data['text']); + + if($data['action'] === 'import_TN'){ + foreach ($lines as $line){ + $ex = explode(';', $line); + $t_n = TravelNationality::whereName(trim($ex[1]))->first(); + if($t_n){ + $t_n->nat = $ex[0]; + $t_n->save(); + }else{ + TravelNationality::create([ + 'name' => trim($ex[1]), + 'nat' => $ex[0], + 'active' => false, + ] + ); + } + } + } + + if($data['action'] === 'import_CT') { + foreach ($lines as $line){ + $ex = explode(';', $line); + $t_c = TravelCountry::whereName(trim($ex[1]))->first(); + if($t_c){ + dump($t_c->name); + $t_c->destco = $ex[0]; + $t_c->save(); + + $tc = \App\Models\Sym\TravelCountry::find($t_c->crm_id); + $tc->destco = $ex[0]; + $tc->save(); + } + } + dd(""); + } + + return redirect()->back(); + } + + + private function replaceYoutubeDiv(&$val, $travelGuide) + { + $ret = []; + $dom = new \DOMDocument('1.0', 'utf-8'); + @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8')); + $links = $dom->getElementsByTagName('iframe'); + foreach ($links as $link) { + if($link->parentNode->parentNode->nodeName === 'div'){ + if($link->parentNode->parentNode->getAttribute('itemprop') === 'video'){ + if($link->parentNode->parentNode->getAttribute('class') === 'mediaA'){ + if($link->parentNode->parentNode->parentNode->getAttribute('itemprop') === 'video'){ + + $need = $link->parentNode->parentNode; + $replace = $link->parentNode->parentNode->parentNode; + $replace->parentNode->insertBefore($dom->importNode($need, true), $replace->nextSibling); + $replace->parentNode->removeChild($replace); + $html = $dom->saveHTML(); + + $travelGuide->full_text = $html; + $travelGuide->save(); + $val[] = 'replace - '.$travelGuide->id; + + }else{ + // dump("notfound itemprop over class mediaA".$travelGuide->id); + $val[] = 'notfound - itemprop over class mediaA - '.$travelGuide->id; + + //in + + foreach ($link->parentNode->parentNode->childNodes as $node){ + if($node->nodeName === 'h2'){ + + if($node->firstChild->nodeName === '#text'){ + + $span = $dom->createElement('span', htmlspecialchars($node->nodeValue)); + + $span->setAttribute('itemprop', 'name'); + $h2 = $dom->createElement('h2'); + $h2->appendChild($span); + + $node->parentNode->replaceChild($h2, $node); + $html = $dom->saveHTML(); + + $travelGuide->full_text = $html; + $travelGuide->save(); + $val[] = 'replace h2 - '.$travelGuide->id; + + + } + + + + + + + } + } + // + + } + //dump("found M div ".$travelGuide->id); + }else{ + // dump("notfound class mediaA".$travelGuide->id); + $val[] = 'notfound - class mediaA - '.$travelGuide->id; + } + }else{ + // dump("notfound div ".$travelGuide->id); + $val[] = 'notfound - video - '.$travelGuide->id; + + + } + // dump($travelGuide->id); + }else{ + //dump("notfound".$travelGuide->id); + $val[] = 'notfound - div - '.$travelGuide->id; + } + } + + + return $ret; + } + + private function replaceYoutubeLinks(&$val, $travelGuide) + { + $ret = []; + $dom = new \DOMDocument('1.0', 'utf-8'); + @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8')); + $links = $dom->getElementsByTagName('iframe'); + foreach ($links as $link) { + + $src = $link->getAttribute('src'); + + + // + $replace = false; + $reLink = false; + if($link->parentNode->nodeName === 'div'){ + if($link->parentNode->getAttribute('class') === 'video-container'){ + if($link->parentNode->parentNode->getAttribute('class') === 'mediaA' && $link->parentNode->parentNode->getAttribute('itemprop') !== 'video'){ + $replace = $link->parentNode->parentNode; + $reLink = $link->parentNode; + }else{ + $val[] = 'found - manual - '.$travelGuide->id; + } + }else{ + $val[] = 'first div - manual - '.$travelGuide->id; + + } + + }elseif ($link->parentNode->nodeName === 'p'){ + if($link->parentNode->parentNode->nodeName === 'div'){ + if($link->parentNode->parentNode->getAttribute('itemprop') === 'video'){ + //replace div + $replace = $link->parentNode->parentNode; + $reLink = $link->parentNode; + }else{ + //replace p + $replace = $link->parentNode; + $reLink = $link; + } + }else{ + $replace = $link->parentNode; + $reLink = $link; + } + + }else{ + $val[] = 'else div - manual - '.$travelGuide->id; + } + if($replace){ + + $id = preg_replace('/http.*?embed\//i', '', $src); + $videoID = preg_replace('#[&\?].+$#', '', $id); + $identifier = Str::slug(pre_slug($videoID), '-'); + $IQContentFile = IQContentFile::whereIdentifier($identifier)->first(); + if($IQContentFile) { + + $video = new \DOMDocument('1.0', 'utf-8'); + $makeText = '
'; + $makeText .= '

' . $IQContentFile->content['title'] . '

'; + $makeText .= ''; + $makeText .= ''; + $makeText .= ''; + $makeText .= ''; + $makeText .= '
'; + $makeText .= '

'.$IQContentFile->content['description'].'

'; + $makeText = str_replace('&', '&', $makeText); + $video->loadHTML($makeText); + $replace->insertBefore($dom->importNode($video->documentElement, true), $reLink->nextSibling); + $replace->removeChild($reLink); + $html = $dom->saveHTML(); + + $travelGuide->full_text = $html; + $travelGuide->save(); + + $val[] = 'replace - '.$travelGuide->id; + } + + + } + } + + + return $ret; + } + + private function findYoutubeLinks(&$val, $travelGuide) + { + $ret = []; + $dom = new \DOMDocument('1.0', 'utf-8'); + @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8')); + + $links = $dom->getElementsByTagName('iframe'); + foreach ($links as $link) { + + $src = $link->getAttribute('src'); + + $id = preg_replace('/http.*?embed\//i', '', $src); + $videoID = preg_replace('#[&\?].+$#', '', $id); + + $identifier = Str::slug(pre_slug($videoID), '-'); + $count = IQContentFile::whereIdentifier($identifier)->count(); + + if($count === 0){ + $ret[$videoID] = $count; + $val[] = "weitere;Travel-Guide;".$videoID.";"; + } + } + return $ret; + } + //private? + public function h1ToTitleTravelGuide() + { + $TravelGuides = TravelGuide::all(); + foreach ($TravelGuides as $travelGuide){ + if(strpos($travelGuide->full_text,'

' )){ + $dom = new \DOMDocument('1.0', 'utf-8'); + @$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8')); + $elements = $dom->getElementsByTagName('h1'); + + foreach ($elements as $element) { + if($element->nodeValue != ""){ + var_dump($travelGuide->id); + var_dump($element->nodeValue); + echo "
"; + var_dump($travelGuide->name); + echo "
"; + echo "--"; + echo "
"; + + $new_text = preg_replace('/]*>([\s\S]*?)<\/h1[^>]*>/', '', $travelGuide->full_text); + + $travelGuide->name = $element->nodeValue; + $travelGuide->full_text = $new_text; + $travelGuide->save(); + } + } + } + } + die("done"); + } + + public function readNodeAndSaveToTree(){ + $input = Request::all(); + $ret = []; + if(isset($input['text'])){ + $out = $this->ul_to_array($input['text']); + $this->array_to_nodes($out); + } + die("done"); + $data = [ + 'text' => $input['text'], + 'values' => $ret, + ]; + return view('iq.tools.links', $data); + } + + public function array_to_nodes($array, $lvl = 1, $parent_id = 1, $pos=100){ + + + if(is_array($array)){ + foreach ($array as $node){ + if(isset($node['slug'])){ + + $slug = substr($node['slug'], 0, 80); + // $slug = substr($node['slug'], 0, strrpos($slug, " ")); + + $name = substr($node['name'], 0, 255); + // $name = substr($node['name'], 0, strrpos($name, " ")); + + + $data = [ + 'tree_id' => 1, + 'parent_id' => $parent_id, + 'lvl' => $lvl, + 'name' => $name, + 'identifier' => $slug, + 'active' => false, + 'pos' => $pos++, + ]; + $tree_node = IQContentTreeNode::create($data); + + + $travel_guides = TravelGuide::whereSlug($node['slug'])->get(); + foreach ($travel_guides as $travel_guide){ + if(IQContentSite::whereTreeNodeId($tree_node->id)->whereTravelGuideId($travel_guide->id)->count() == 0) { + IQContentSite::create(['tree_node_id' => $tree_node->id, 'travel_guide_id' => $travel_guide->id]); + } + } + + + } + if(isset($node['children']) && is_array($node['children'])){ + $this->array_to_nodes($node['children'], $lvl + 1, $tree_node->id, $pos); + } + } + } + + } + + public function ul_to_array($ol){ + if(is_string($ol)){ + if(!$ol = simplexml_load_string($ol)) { + trigger_error("Syntax error in UL/LI structure"); + return FALSE; + } + return $this->ul_to_array($ol); + } else if(is_object($ol)){ + $output = array(); + foreach($ol->li as $li){ + + $tmp = false; + if(isset($li->ol)){ + $tmp = $this->ul_to_array($li->ol); + } + + if($li->count()){ + + $str = (string) $li; + + $a = new \SimpleXMLElement($li->children()->asXML()); + $str = (string) $a[0]." ".$str; + $str = str_replace("\n", "", $str); + $str = str_replace("\r", "", $str); + $str = str_replace("\t", "", $str); + $str = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $str); + + if(trim($str) !== "" && $str !== null){ + $slug = (string) $a['href']; + $link = explode("/", $slug); + + $link1 = array_pop($link); + $link1 = str_replace('.htm', '',$link1); + $output[] = ['slug'=> $link1, 'name'=>$str, 'children'=>$tmp]; + } + }else{ + $str = (string) $li; + $str = str_replace("\n", "", $str); + $str = str_replace("\r", "", $str); + $str = str_replace("\t", "", $str); + if(trim($str) !== "" && $str !== null){ + + $output[] = ['slug'=>'', 'name'=>$str, 'children'=>$tmp]; + } + } + + } + return $output; + } else { + return FALSE; + } + } + + public function rindex() + { + $data = [ + 'text' => "", + 'values' => [], + ]; + return view('iq.content.tools.redirects', $data); + } + + public function rstore() + { + + $iqContentTree = IQContentTree::find(2); + $this->makeTree($iqContentTree); + $input = Request::all(); + $ret = []; + + if(isset($input['text'])){ + + + $dom = new \DOMDocument('1.0', 'utf-8'); + @$dom->loadHTML(mb_convert_encoding($input['text'], 'HTML-ENTITIES', 'UTF-8')); + + $tags = ['ol']; + foreach ($tags as $tag){ + $domElements = []; + $elements = $dom->getElementsByTagName($tag)->item(0); + + foreach($elements as $node){ + foreach($node->childNodes as $child) { + $ret[] = array($child->nodeName => $child->nodeValue); + } + } + } + + /* $tags = ['a']; foreach ($tags as $tag){ + $domElements = []; + $elements = $dom->getElementsByTagName($tag); + foreach ($elements as $element) { + $domElements[] = $element; + + } + foreach ($domElements as $domElement) { + $r = "-----"; + $href = $domElement->getAttribute('href'); + $link = explode("/", $href); + + $link1 = array_pop($link); + $link1 = str_replace('.html', '',$link1); + $link1 = str_replace('-', '',$link1); + if(isset($this->tree[$link1])){ + $r = $this->tree[$link1]; + }else{ + $link1 = array_pop($link); + $link1 = str_replace('.html', '',$link1); + $link1 = str_replace('-', '',$link1); + if(isset($this->tree[$link1])){ + $r = $this->tree[$link1]; + } + } + + $ret[] = "Redirect 301 /".$href." ".$r; + + } + }*/ + + } + $data = [ + 'text' => $input['text'], + 'values' => $ret, + ]; + + return view('iq.content.tools.redirects', $data); + + } + + public function makeTree(IQContentTree $iq_content_tree, $lvl = 0, $parent_id = false, $url = "") + { + + if ($parent_id) { + //where('active', true) + $tree_nodes = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl)->where('active', true)->where('parent_id', $parent_id)->orderBy('pos', 'ASC')->get(); + } else { + + $url = "/" . $iq_content_tree->identifier . "/"; + $tree_nodes = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl)->where('active', true)->orderBy('pos', 'ASC')->get(); + } + + foreach ($tree_nodes as $node) { + $children = IQContentTreeNode::where('tree_id', $iq_content_tree->id)->where('lvl', $lvl + 1)->where('active', true)->where('parent_id', $node->id)->count(); + $this->tree[str_replace('-', '', $node->identifier)] = url($url . $node->identifier); + + if ($children) { + $this->makeTree($iq_content_tree, $lvl + 1, $node->id, $url . $node->identifier . "/"); + + } + } + return true; + } +} diff --git a/app/Services/SyS/ReCalcu.php b/app/Services/SyS/ReCalcu.php new file mode 100644 index 0000000..30317c8 --- /dev/null +++ b/app/Services/SyS/ReCalcu.php @@ -0,0 +1,71 @@ +select('booking.*')->where('new_drafts', true); + + $query->whereHas('booking_draft_items', function ($q) { + $q->where('comfort', true); + }); + $bookings = $query->get(); + foreach ($bookings as $booking){ + $booking->comfort = true; + $booking->save(); + } +*/ + + $bookings = Booking::orderBy('id', 'DESC')->offset(0)->limit(1000)->get(); + + + + + // dd("nothing"); + $val = []; + $text = ""; + + $data = [ + 'text' => $text, + 'bookings' => $bookings, + ]; + return view('sys.tools.links', $data); + + } + + /* + clean code + $travelGuides = TravelGuide::all(); + foreach ($travelGuides as $travelGuide){ + if(strpos($travelGuide->full_text, "


") !== false){ + $val[$travelGuide->id] = "


"; + } + } + + foreach ($travelGuides as $travelGuide){ + if(strpos($travelGuide->full_text, "id] = "full_text; + + // $new_text = preg_replace('/]*>([\s\S]*?)<\/h1[^>]*>/', '', $TravelGuide->full_text); + +*/ + + public function calcuStore() + { + return redirect()->back(); + } +} diff --git a/app/Services/SyS/ReImport.php b/app/Services/SyS/ReImport.php new file mode 100644 index 0000000..5431723 --- /dev/null +++ b/app/Services/SyS/ReImport.php @@ -0,0 +1,41 @@ +limit(200)->get(); + $data = [ + 'values' => $TravelBooking, + 'text' => '', + ]; + + return view('sys.tools.reimport', $data); + + } + + public static function store() + { + $data = Request::all(); + $ret = ""; + if(strpos($data['action'], 'checkOne_') !== false){ + $id = (int) str_replace('checkOne_', '', $data['action']); + $travel_booking = TravelBooking::findOrFail($id); + + $booking = BookingImport::importFrom($travel_booking); + + dd($booking); + } + \Session()->flash('alert-success', $ret); + return back(); + } +} diff --git a/app/Services/Util.php b/app/Services/Util.php index 4e2245d..d67c00d 100644 --- a/app/Services/Util.php +++ b/app/Services/Util.php @@ -1,114 +1,181 @@ format(\Util::formatDateTimeDB()); + if ($opt === 'html') { + return html_entity_decode(nl2br($text)); } - //date - return \Carbon::parse($date)->format(\Util::formatDateDB()); + return $text; } - public static function _reformat_date($date, $to = 'date'){ - if($to === 'datetime'){ - return \Carbon::parse($date)->format('Y-m-d - H:i'); + public static function _format_date($date, $to = 'date') + { + if ($to === 'datetime') { + return Carbon::parse($date)->format(self::formatDateTimeDB()); } - return \Carbon::parse($date)->format('Y-m-d'); + return Carbon::parse($date)->format(self::formatDateDB()); } - public static function _format_number($value){ + public static function _reformat_date($date, $to = 'date') + { + if ($to === 'datetime') { + return Carbon::parse($date)->format('Y-m-d - H:i'); + } + return Carbon::parse($date)->format('Y-m-d'); + } + + public static function _format_number($value) + { return preg_replace("/[^0-9,]/", "", $value); - } - public static function _number_format($value, $dec=2){ + public static function _number_format($value, $dec = 2) + { return number_format(($value), $dec, ',', '.'); - } - public static function _first_replace($value, $search='re:', $replace=''){ + public static function _first_replace($value, $search = 're:', $replace = '') + { do { $before = strlen($value); - $value = trim(preg_replace('/^'.$search.'/i', $replace, $value)); - - }while($before !== strlen($value)); + $value = trim(preg_replace('/^' . $search . '/i', $replace, $value)); + } while ($before !== strlen($value)); return $value; - } - public static function _explodeLines($value = false){ - if($value){ - return explode('#', str_replace(array("\r\n", "\r", "\n"),"#", $value)); + public static function _explodeLines($value = false) + { + if ($value) { + return explode('#', str_replace(array("\r\n", "\r", "\n"), "#", $value)); } return null; } - public static function _implodeLines($value, $glue=PHP_EOL){ - if(is_array($value)){ + + public static function _implodeLines($value, $glue = PHP_EOL) + { + if (is_array($value)) { return implode($glue, $value); } return $value; } - public static function _clean_float($value){ + public static function _clean_float($value) + { $groups = explode(".", preg_replace("/[^0-9.-]/", "", str_replace(',', '.', $value))); $lastGroup = 0; - if(count($groups) > 1){ + if (count($groups) > 1) { $lastGroup = array_pop($groups); } $number = implode('', $groups); - return (strlen($lastGroup) < 3) ? floatval($number.'.'.$lastGroup) : floatval($number.$lastGroup); + return (strlen($lastGroup) < 3) ? floatval($number . '.' . $lastGroup) : floatval($number . $lastGroup); } public static function sanitize($string, $force_lowercase = true, $anal = false, $substr = false) { - $strip = array("~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "=", "+", "[", "{", "]", - "}", "\\", "|", ";", ":", "\"", "'", "‘", "’", "“", "”", "–", "—", - "—", "–", ",", "<", ".", ">", "/", "?"); + $strip = array( + "~", + "`", + "!", + "@", + "#", + "$", + "%", + "^", + "&", + "*", + "(", + ")", + "_", + "=", + "+", + "[", + "{", + "]", + "}", + "\\", + "|", + ";", + ":", + "\"", + "'", + "‘", + "’", + "“", + "”", + "–", + "—", + "—", + "–", + ",", + "<", + ".", + ">", + "/", + "?" + ); $clean = trim(str_replace($strip, "", strip_tags($string))); $clean = preg_replace('/\s+/', "_", $clean); - $clean = ($anal) ? preg_replace("/[^a-zA-Z0-9]/", "", $clean) : $clean ; - - if($substr){ - $clean = (strlen($clean) > 33) ? substr($clean,0,33) : $clean; + $clean = ($anal) ? preg_replace("/[^a-zA-Z0-9]/", "", $clean) : $clean; + if ($substr) { + $clean = (strlen($clean) > 33) ? substr($clean, 0, 33) : $clean; } return ($force_lowercase) ? (function_exists('mb_strtolower')) ? - mb_strtolower($clean, 'UTF-8') : - strtolower($clean) : + mb_strtolower($clean, 'UTF-8') : + strtolower($clean) : $clean; } - public static function replacePlaceholders($search, $replace){ + public static function replacePlaceholders($search, $replace) + { preg_match_all("/\{{(.+?)\}}/", $search, $matches); - if (isset($matches[1]) && count($matches[1]) > 0){ + if (isset($matches[1]) && count($matches[1]) > 0) { foreach ($matches[1] as $key => $value) { $kvalue = trim($value); - if (array_key_exists($kvalue, $replace)){ + if (array_key_exists($kvalue, $replace)) { $search = preg_replace("/\{\{$value\}\}/", $replace[$kvalue], $search); } } @@ -140,7 +207,7 @@ class Util - // $html = preg_replace("/(

', '', $html); $html = str_replace('

', '', $html); @@ -158,7 +225,7 @@ class Util @$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8')); $removeStyleTags = ['ul', 'li', 'h1', 'h2', 'br']; - foreach ($removeStyleTags as $removeStyleTag){ + foreach ($removeStyleTags as $removeStyleTag) { $elements = $dom->getElementsByTagName($removeStyleTag); foreach ($elements as $element) { $element->removeAttribute('style'); @@ -166,17 +233,16 @@ class Util } $removeFullTags = ['span', 'a']; - foreach ($removeFullTags as $removeFullTag){ + foreach ($removeFullTags as $removeFullTag) { $domElemsToRemove = []; $elements = $dom->getElementsByTagName($removeFullTag); foreach ($elements as $element) { $domElemsToRemove[] = $element; - } foreach ($domElemsToRemove as $domElem) { - if($removeFullTag == 'span' && strpos($domElem->getAttribute('style'), 'font-weight: 700') !== false){ - $new_node = $dom->createTextNode("".$domElem->nodeValue.""); - }else{ + if ($removeFullTag == 'span' && strpos($domElem->getAttribute('style'), 'font-weight: 700') !== false) { + $new_node = $dom->createTextNode("" . $domElem->nodeValue . ""); + } else { $new_node = $dom->createTextNode($domElem->nodeValue); } $domElem->parentNode->replaceChild($new_node, $domElem); @@ -217,50 +283,66 @@ class Util $element->parentNode->replaceChild($new_node, $element); } */ - $new_node = $dom->createTextNode($element->nodeValue . "

"); - $p = $dom->createElement('p', $element->nodeValue); - $div = $dom->createElement('div'); - // $new_node = $dom->createElement('div', $new_node); - $div->setAttribute('class', 'mediaInfo'); - $div->appendChild($p); - - // dump($element); - // die(); - // - $element->parentNode->replaceChild($div, $element); + $new_node = $dom->createTextNode($element->nodeValue . "

"); + $p = $dom->createElement('p', $element->nodeValue); + $div = $dom->createElement('div'); + // $new_node = $dom->createElement('div', $new_node); + $div->setAttribute('class', 'mediaInfo'); + $div->appendChild($p); + // dump($element); + // die(); + // + $element->parentNode->replaceChild($div, $element); } $html = $dom->saveHTML(); return $html; } - public static function convertArrayWindowsCharset($values){ - foreach ($values as $key=>$string){ + public static function prepareCollapseValues() + { + if (\Session::has('collapse_shows')) { + $collapse_shows = \Session::get('collapse_shows'); + if (strpos($collapse_shows, ',')) { + $collapse_shows = explode(',', $collapse_shows); + return json_encode($collapse_shows); + } + return json_encode([0 => $collapse_shows]); + } + + return json_encode([0 => 'non']); + } + + public static function convertArrayWindowsCharset($values) + { + foreach ($values as $key => $string) { $values[$key] = self::convertStringWindowsCharset($string); } return $values; } - public static function convertStringWindowsCharset($value) { + public static function convertStringWindowsCharset($value) + { $charset = mb_detect_encoding($value, "UTF-8, ISO-8859-1, ISO-8859-15", true); return mb_convert_encoding($value, "Windows-1252", $charset); } - public static function getMimeFromHeader($http_response_header){ + public static function getMimeFromHeader($http_response_header) + { $pattern = "/^content-type\s*:\s*(.*)$/i"; if (($header = array_values(preg_grep($pattern, $http_response_header))) && - (preg_match($pattern, $header[0], $match) !== false)) - { + (preg_match($pattern, $header[0], $match) !== false) + ) { return $match[1]; - } return ""; } - public static function getExtensionFromMime($mine){ + public static function getExtensionFromMime($mine) + { $mime_types = [ 'application/pdf' => 'pdf', 'image/png' => 'png', @@ -273,15 +355,16 @@ class Util return isset($mime_types[$mine]) ? $mime_types[$mine] : ""; } - public static function getURLasContent($url, $base=false){ - $arrContextOptions=array( - "ssl"=>array( - "verify_peer"=>false, - "verify_peer_name"=>false, + public static function getURLasContent($url, $base = false) + { + $arrContextOptions = array( + "ssl" => array( + "verify_peer" => false, + "verify_peer_name" => false, ), ); $content = file_get_contents($url, false, stream_context_create($arrContextOptions)); - if($base){ + if ($base) { $type = pathinfo($url, PATHINFO_EXTENSION); $base64Data = base64_encode($content); return 'data:image/' . $type . ';base64,' . $base64Data; @@ -301,6 +384,4 @@ class Util return $size; } } - - -} \ No newline at end of file +} diff --git a/app/User.php b/app/User.php index a1caf0a..5d40e29 100755 --- a/app/User.php +++ b/app/User.php @@ -11,7 +11,7 @@ use Illuminate\Support\Facades\Crypt; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; -use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Distributions\F; +use Illuminate\Database\Eloquent\Factories\HasFactory; /** * App\User @@ -33,7 +33,6 @@ use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Distributions\F; * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereRememberToken($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereToken($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereUpdatedAt($value) - * @mixin \Eloquent * @property int|null $confirmed * @property string|null $confirmation_code * @property string|null $confirmation_date @@ -79,12 +78,15 @@ use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Distributions\F; * @property-read int|null $tokens_count * @property-read int|null $user_update_email_count * @property-read \App\Models\SfGuardUser|null $sf_guard_user + * @property string|null $secret_key + * @property int|null $google2fa + * @method static \Illuminate\Database\Eloquent\Builder|User whereGoogle2fa($value) + * @method static \Illuminate\Database\Eloquent\Builder|User whereSecretKey($value) + * @mixin \Eloquent */ class User extends Authenticatable { - use HasApiTokens, Notifiable; - - use SoftDeletes; + use HasApiTokens, HasFactory, Notifiable, SoftDeletes; protected $connection = 'mysql'; diff --git a/app/helpers.php b/app/helpers.php index 3e36843..3d41e3b 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -24,6 +24,21 @@ if (! function_exists('_format_date')) { } } +if (! function_exists('_format_text')) { + function _format_text($text, $opt = 'html') + { + return $text ? \App\Services\Util::_format_text($text, $opt) : null; + } +} + + +if (! function_exists('_number_format')) { + function _number_format($number, $dec = 2) + { + return $number ? \App\Services\Util::_number_format($number, $dec) : null; + } +} + if (! function_exists('_reformat_date')) { function _reformat_date($date, $to = 'date') { diff --git a/boost.json b/boost.json new file mode 100644 index 0000000..0b66267 --- /dev/null +++ b/boost.json @@ -0,0 +1,11 @@ +{ + "agents": [ + "claude_code", + "cursor" + ], + "editors": [ + "claude_code", + "cursor" + ], + "guidelines": [] +} diff --git a/bootstrap/cache/config.php b/bootstrap/cache/config.php new file mode 100644 index 0000000..66c2e87 --- /dev/null +++ b/bootstrap/cache/config.php @@ -0,0 +1,1729 @@ + + array ( + 'name' => 'STERN TOURS CRM', + 'env' => 'local', + 'debug' => true, + 'url' => 'https://mein.sterntours.test', + 'old_url' => 'https://cms-stern-tours.test', + 'url_v2' => 'https://v2.sterntours.test', + 'url_stern' => 'https://sterntours.test', + 'domain_tld' => 'test', + 'timezone' => 'Europe/Berlin', + 'locale' => 'de', + 'fallback_locale' => 'de', + 'key' => 'base64:cxq+xNckU1xLwp8V9Bfj9+nOK5iZL6urcZ1EBO8usXg=', + 'cipher' => 'AES-256-CBC', + 'success_key' => 'f6077389c9ce710e554763a5de02c8ec', + 'providers' => + array ( + 0 => 'Illuminate\\Auth\\AuthServiceProvider', + 1 => 'Illuminate\\Broadcasting\\BroadcastServiceProvider', + 2 => 'Illuminate\\Bus\\BusServiceProvider', + 3 => 'Illuminate\\Cache\\CacheServiceProvider', + 4 => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 5 => 'Illuminate\\Cookie\\CookieServiceProvider', + 6 => 'Illuminate\\Database\\DatabaseServiceProvider', + 7 => 'Illuminate\\Encryption\\EncryptionServiceProvider', + 8 => 'Illuminate\\Filesystem\\FilesystemServiceProvider', + 9 => 'Illuminate\\Foundation\\Providers\\FoundationServiceProvider', + 10 => 'Illuminate\\Hashing\\HashServiceProvider', + 11 => 'Illuminate\\Mail\\MailServiceProvider', + 12 => 'Illuminate\\Notifications\\NotificationServiceProvider', + 13 => 'Illuminate\\Pagination\\PaginationServiceProvider', + 14 => 'Illuminate\\Pipeline\\PipelineServiceProvider', + 15 => 'Illuminate\\Queue\\QueueServiceProvider', + 16 => 'Illuminate\\Redis\\RedisServiceProvider', + 17 => 'Illuminate\\Auth\\Passwords\\PasswordResetServiceProvider', + 18 => 'Illuminate\\Session\\SessionServiceProvider', + 19 => 'Illuminate\\Translation\\TranslationServiceProvider', + 20 => 'Illuminate\\Validation\\ValidationServiceProvider', + 21 => 'Illuminate\\View\\ViewServiceProvider', + 22 => 'Laravel\\Tinker\\TinkerServiceProvider', + 23 => 'Laravel\\Passport\\PassportServiceProvider', + 24 => 'App\\Providers\\AppServiceProvider', + 25 => 'App\\Providers\\AuthServiceProvider', + 26 => 'App\\Providers\\EventServiceProvider', + 27 => 'App\\Providers\\RouteServiceProvider', + 28 => 'Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider', + 29 => 'Barryvdh\\DomPDF\\ServiceProvider', + 30 => 'Jenssegers\\Date\\DateServiceProvider', + 31 => 'Collective\\Html\\HtmlServiceProvider', + 32 => 'Intervention\\Image\\ImageServiceProvider', + 33 => 'Maatwebsite\\Excel\\ExcelServiceProvider', + 34 => 'Yajra\\DataTables\\DataTablesServiceProvider', + 35 => 'Reliese\\Coders\\CodersServiceProvider', + ), + 'aliases' => + array ( + 'App' => 'Illuminate\\Support\\Facades\\App', + 'Arr' => 'Illuminate\\Support\\Arr', + 'Artisan' => 'Illuminate\\Support\\Facades\\Artisan', + 'Auth' => 'Illuminate\\Support\\Facades\\Auth', + 'Blade' => 'Illuminate\\Support\\Facades\\Blade', + 'Broadcast' => 'Illuminate\\Support\\Facades\\Broadcast', + 'Bus' => 'Illuminate\\Support\\Facades\\Bus', + 'Cache' => 'Illuminate\\Support\\Facades\\Cache', + 'Config' => 'Illuminate\\Support\\Facades\\Config', + 'Cookie' => 'Illuminate\\Support\\Facades\\Cookie', + 'Crypt' => 'Illuminate\\Support\\Facades\\Crypt', + 'DB' => 'Illuminate\\Support\\Facades\\DB', + 'Eloquent' => 'Illuminate\\Database\\Eloquent\\Model', + 'Event' => 'Illuminate\\Support\\Facades\\Event', + 'File' => 'Illuminate\\Support\\Facades\\File', + 'Gate' => 'Illuminate\\Support\\Facades\\Gate', + 'Hash' => 'Illuminate\\Support\\Facades\\Hash', + 'Lang' => 'Illuminate\\Support\\Facades\\Lang', + 'Log' => 'Illuminate\\Support\\Facades\\Log', + 'Mail' => 'Illuminate\\Support\\Facades\\Mail', + 'Notification' => 'Illuminate\\Support\\Facades\\Notification', + 'Password' => 'Illuminate\\Support\\Facades\\Password', + 'Queue' => 'Illuminate\\Support\\Facades\\Queue', + 'Redirect' => 'Illuminate\\Support\\Facades\\Redirect', + 'Redis' => 'Illuminate\\Support\\Facades\\Redis', + 'Request' => 'Illuminate\\Support\\Facades\\Request', + 'Response' => 'Illuminate\\Support\\Facades\\Response', + 'Route' => 'Illuminate\\Support\\Facades\\Route', + 'Schema' => 'Illuminate\\Support\\Facades\\Schema', + 'Session' => 'Illuminate\\Support\\Facades\\Session', + 'Storage' => 'Illuminate\\Support\\Facades\\Storage', + 'Str' => 'Illuminate\\Support\\Str', + 'URL' => 'Illuminate\\Support\\Facades\\URL', + 'Validator' => 'Illuminate\\Support\\Facades\\Validator', + 'View' => 'Illuminate\\Support\\Facades\\View', + 'Input' => 'Illuminate\\Support\\Facades\\Request', + 'Form' => 'Collective\\Html\\FormFacade', + 'Image' => 'Intervention\\Image\\Facades\\Image', + 'Carbon' => 'Carbon\\Carbon', + 'Date' => 'Jenssegers\\Date\\Date', + 'HTMLHelper' => 'App\\Helper\\HTMLHelper', + 'Util' => 'App\\Services\\Util', + 'Excel' => 'Maatwebsite\\Excel\\Facades\\Excel', + 'DataTables' => 'Yajra\\DataTables\\Facades\\DataTables', + 'PDF' => 'Barryvdh\\DomPDF\\Facade', + ), + ), + 'auth' => + array ( + 'defaults' => + array ( + 'guard' => 'web', + 'passwords' => 'users', + ), + 'guards' => + array ( + 'web' => + array ( + 'driver' => 'session', + 'provider' => 'users', + ), + 'api' => + array ( + 'driver' => 'passport', + 'provider' => 'users', + ), + ), + 'providers' => + array ( + 'users' => + array ( + 'driver' => 'eloquent', + 'model' => 'App\\User', + ), + ), + 'passwords' => + array ( + 'users' => + array ( + 'provider' => 'users', + 'table' => 'password_resets', + 'expire' => 60, + ), + ), + ), + 'booking' => + array ( + 'identifier_general' => 'booking-pdf-g-', + 'identifier_general_name' => 'booking-pdf-general-name', + 'identifier_content' => 'booking-pdf-c-', + 'identifier_content_name' => 'booking-pdf-content-name', + 'max_interval_days' => 28, + 'deposit_percentage_rate' => 25, + 'max_deposit_interval_days' => 28, + 'coupon_default_value' => '50,00', + 'coupon_valid_date_month' => 24, + ), + 'broadcasting' => + array ( + 'default' => 'log', + 'connections' => + array ( + 'pusher' => + array ( + 'driver' => 'pusher', + 'key' => '', + 'secret' => '', + 'app_id' => '', + 'options' => + array ( + 'cluster' => 'mt1', + 'encrypted' => true, + ), + ), + 'redis' => + array ( + 'driver' => 'redis', + 'connection' => 'default', + ), + 'log' => + array ( + 'driver' => 'log', + ), + 'null' => + array ( + 'driver' => 'null', + ), + ), + ), + 'cache' => + array ( + 'default' => 'file', + 'stores' => + array ( + 'apc' => + array ( + 'driver' => 'apc', + ), + 'array' => + array ( + 'driver' => 'array', + ), + 'database' => + array ( + 'driver' => 'database', + 'table' => 'cache', + 'connection' => NULL, + ), + 'file' => + array ( + 'driver' => 'file', + 'path' => '/workspace/mein.sterntours.de/storage/framework/cache/data', + ), + 'memcached' => + array ( + 'driver' => 'memcached', + 'persistent_id' => NULL, + 'sasl' => + array ( + 0 => NULL, + 1 => NULL, + ), + 'options' => + array ( + ), + 'servers' => + array ( + 0 => + array ( + 'host' => '127.0.0.1', + 'port' => 11211, + 'weight' => 100, + ), + ), + ), + 'redis' => + array ( + 'driver' => 'redis', + 'connection' => 'default', + ), + ), + 'prefix' => 'stern_tours_crm_cache', + ), + 'database' => + array ( + 'default' => 'mysql', + 'connections' => + array ( + 'sqlite' => + array ( + 'driver' => 'sqlite', + 'database' => 'stern_crm', + 'prefix' => '', + ), + 'mysql' => + array ( + 'driver' => 'mysql', + 'host' => 'global-mysql', + 'port' => '3306', + 'database' => 'stern_crm', + 'username' => 'root', + 'password' => 'password', + 'unix_socket' => '', + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'strict' => true, + 'engine' => NULL, + ), + 'mysql_stern' => + array ( + 'driver' => 'mysql', + 'host' => 'global-mysql', + 'port' => '3306', + 'database' => 'stern_db', + 'username' => 'root', + 'password' => 'password', + 'unix_socket' => '', + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'strict' => true, + 'engine' => NULL, + ), + 'pgsql' => + array ( + 'driver' => 'pgsql', + 'host' => 'global-mysql', + 'port' => '3306', + 'database' => 'stern_crm', + 'username' => 'root', + 'password' => 'password', + 'charset' => 'utf8', + 'prefix' => '', + 'schema' => 'public', + 'sslmode' => 'prefer', + ), + 'sqlsrv' => + array ( + 'driver' => 'sqlsrv', + 'host' => 'global-mysql', + 'port' => '3306', + 'database' => 'stern_crm', + 'username' => 'root', + 'password' => 'password', + 'charset' => 'utf8', + 'prefix' => '', + ), + ), + 'migrations' => 'migrations', + 'redis' => + array ( + 'client' => 'predis', + 'default' => + array ( + 'host' => 'global-redis', + 'password' => NULL, + 'port' => '6379', + 'database' => 0, + ), + ), + ), + 'datatables' => + array ( + 'search' => + array ( + 'smart' => true, + 'multi_term' => true, + 'case_insensitive' => true, + 'use_wildcards' => false, + ), + 'index_column' => 'DT_Row_Index', + 'engines' => + array ( + 'eloquent' => 'Yajra\\DataTables\\EloquentDataTable', + 'query' => 'Yajra\\DataTables\\QueryDataTable', + 'collection' => 'Yajra\\DataTables\\CollectionDataTable', + 'resource' => 'Yajra\\DataTables\\ApiResourceDataTable', + ), + 'builders' => + array ( + ), + 'nulls_last_sql' => '%s %s NULLS LAST', + 'error' => NULL, + 'columns' => + array ( + 'excess' => + array ( + 0 => 'rn', + 1 => 'row_num', + ), + 'escape' => '*', + 'raw' => + array ( + 0 => 'action', + ), + 'blacklist' => + array ( + 0 => 'password', + 1 => 'remember_token', + ), + 'whitelist' => '*', + ), + 'json' => + array ( + 'header' => + array ( + ), + 'options' => 0, + ), + 'callback' => + array ( + 0 => '$', + 1 => '$.', + 2 => 'function', + ), + ), + 'debugbar' => + array ( + 'enabled' => NULL, + 'hide_empty_tabs' => true, + 'except' => + array ( + 0 => 'telescope*', + ), + 'storage' => + array ( + 'enabled' => false, + 'driver' => 'file', + 'path' => '/workspace/mein.sterntours.de/storage/debugbar', + 'connection' => NULL, + 'provider' => '', + ), + 'editor' => 'phpstorm', + 'remote_sites_path' => NULL, + 'local_sites_path' => NULL, + 'include_vendors' => true, + 'capture_ajax' => false, + 'add_ajax_timing' => false, + 'ajax_handler_auto_show' => true, + 'ajax_handler_enable_tab' => true, + 'defer_datasets' => false, + 'error_handler' => false, + 'error_level' => 32767, + 'clockwork' => false, + 'collectors' => + array ( + 'phpinfo' => true, + 'messages' => true, + 'time' => true, + 'memory' => true, + 'exceptions' => true, + 'log' => true, + 'db' => true, + 'views' => true, + 'route' => true, + 'auth' => false, + 'gate' => true, + 'session' => true, + 'symfony_request' => true, + 'mail' => true, + 'laravel' => false, + 'events' => false, + 'default_request' => false, + 'logs' => false, + 'files' => false, + 'config' => false, + 'cache' => false, + 'models' => false, + ), + 'options' => + array ( + 'auth' => + array ( + 'show_name' => true, + ), + 'db' => + array ( + 'with_params' => true, + 'backtrace' => true, + 'timeline' => false, + 'explain' => + array ( + 'enabled' => false, + 'types' => + array ( + 0 => 'SELECT', + ), + ), + 'hints' => true, + ), + 'mail' => + array ( + 'full_log' => false, + ), + 'views' => + array ( + 'data' => false, + ), + 'route' => + array ( + 'label' => true, + ), + 'logs' => + array ( + 'file' => NULL, + ), + 'cache' => + array ( + 'values' => true, + ), + ), + 'inject' => true, + 'route_prefix' => '_debugbar', + 'route_middleware' => + array ( + ), + 'route_domain' => NULL, + 'theme' => 'auto', + 'debug_backtrace_limit' => 50, + ), + 'dompdf' => + array ( + 'show_warnings' => false, + 'public_path' => NULL, + 'convert_entities' => true, + 'options' => + array ( + 'font_dir' => '/workspace/mein.sterntours.de/storage/fonts', + 'font_cache' => '/workspace/mein.sterntours.de/storage/fonts', + 'temp_dir' => '/tmp', + 'chroot' => '/workspace/mein.sterntours.de', + 'allowed_protocols' => + array ( + 'file://' => + array ( + 'rules' => + array ( + ), + ), + 'http://' => + array ( + 'rules' => + array ( + ), + ), + 'https://' => + array ( + 'rules' => + array ( + ), + ), + ), + 'log_output_file' => NULL, + 'enable_font_subsetting' => false, + 'pdf_backend' => 'CPDF', + 'default_media_type' => 'screen', + 'default_paper_size' => 'a4', + 'default_paper_orientation' => 'portrait', + 'default_font' => 'serif', + 'dpi' => 96, + 'enable_php' => false, + 'enable_javascript' => true, + 'enable_remote' => true, + 'font_height_ratio' => 1.1, + 'enable_html5_parser' => true, + ), + 'orientation' => 'portrait', + 'defines' => + array ( + 'font_dir' => '/workspace/mein.sterntours.de/storage/fonts/', + 'font_cache' => '/workspace/mein.sterntours.de/storage/fonts/', + 'temp_dir' => '/tmp', + 'chroot' => '/workspace/mein.sterntours.de', + 'enable_font_subsetting' => false, + 'pdf_backend' => 'CPDF', + 'default_media_type' => 'print', + 'default_paper_size' => 'a4', + 'default_font' => 'sans-serif', + 'dpi' => 300, + 'enable_php' => false, + 'enable_javascript' => true, + 'enable_remote' => true, + 'font_height_ratio' => 0.8, + 'enable_html5_parser' => false, + ), + ), + 'excel' => + array ( + 'exports' => + array ( + 'chunk_size' => 1000, + 'pre_calculate_formulas' => false, + 'csv' => + array ( + 'delimiter' => ',', + 'enclosure' => '"', + 'line_ending' => ' +', + 'use_bom' => false, + 'include_separator_line' => false, + 'excel_compatibility' => false, + ), + ), + 'imports' => + array ( + 'read_only' => true, + 'heading_row' => + array ( + 'formatter' => 'slug', + ), + 'csv' => + array ( + 'delimiter' => ',', + 'enclosure' => '"', + 'escape_character' => '\\', + 'contiguous' => false, + 'input_encoding' => 'UTF-8', + ), + ), + 'extension_detector' => + array ( + 'xlsx' => 'Xlsx', + 'xlsm' => 'Xlsx', + 'xltx' => 'Xlsx', + 'xltm' => 'Xlsx', + 'xls' => 'Xls', + 'xlt' => 'Xls', + 'ods' => 'Ods', + 'ots' => 'Ods', + 'slk' => 'Slk', + 'xml' => 'Xml', + 'gnumeric' => 'Gnumeric', + 'htm' => 'Html', + 'html' => 'Html', + 'csv' => 'Csv', + 'tsv' => 'Csv', + 'pdf' => 'Dompdf', + ), + 'value_binder' => + array ( + 'default' => 'Maatwebsite\\Excel\\DefaultValueBinder', + ), + 'cache' => + array ( + 'driver' => 'memory', + 'batch' => + array ( + 'memory_limit' => 60000, + ), + 'illuminate' => + array ( + 'store' => NULL, + ), + 'default_ttl' => 10800, + ), + 'transactions' => + array ( + 'handler' => 'db', + ), + 'temporary_files' => + array ( + 'local_path' => '/tmp', + 'remote_disk' => NULL, + ), + ), + 'fewo' => + array ( + 'identifier_content' => 'fewo-pdf-general', + 'identifier_fewo' => 'fewo-pdf-', + ), + 'filesystems' => + array ( + 'default' => 'local', + 'cloud' => 's3', + 'disks' => + array ( + 'local' => + array ( + 'driver' => 'local', + 'root' => '/workspace/mein.sterntours.de/storage/app', + ), + 'public' => + array ( + 'driver' => 'local', + 'root' => '/workspace/mein.sterntours.de/storage/app/public', + 'url' => 'https://mein.sterntours.test/storage', + 'visibility' => 'public', + ), + 'customer' => + array ( + 'driver' => 'local', + 'root' => '/workspace/mein.sterntours.de/storage/app/customer', + 'url' => 'https://mein.sterntours.test/storage/customer', + 'visibility' => 'public', + ), + 'travel_user' => + array ( + 'driver' => 'local', + 'root' => '/workspace/mein.sterntours.de/storage/app/travel_user', + 'url' => 'https://mein.sterntours.test/storage/travel_user', + 'visibility' => 'public', + ), + 'booking' => + array ( + 'driver' => 'local', + 'root' => '/workspace/mein.sterntours.de/storage/app/booking', + 'url' => 'https://mein.sterntours.test/storage/booking', + 'visibility' => 'public', + ), + 'general' => + array ( + 'driver' => 'local', + 'root' => '/workspace/mein.sterntours.de/storage/app/general', + 'url' => 'https://mein.sterntours.test/storage/general', + 'visibility' => 'public', + ), + 'booking_fewo' => + array ( + 'driver' => 'local', + 'root' => '/workspace/mein.sterntours.de/storage/app/booking_fewo', + 'url' => 'https://mein.sterntours.test/storage/booking_fewo', + 'visibility' => 'public', + ), + 'lead' => + array ( + 'driver' => 'local', + 'root' => '/workspace/mein.sterntours.de/storage/app/lead', + 'url' => 'https://mein.sterntours.test/storage/lead', + 'visibility' => 'public', + ), + 'fewo_invoices' => + array ( + 'driver' => 'local', + 'root' => '/workspace/mein.sterntours.de/storage/app/fewo/invoices', + 'url' => 'https://mein.sterntours.test/storage/fewo/invoices', + 'visibility' => 'public', + ), + 'fewo_infos' => + array ( + 'driver' => 'local', + 'root' => '/workspace/mein.sterntours.de/storage/app/fewo/infos', + 'url' => 'https://mein.sterntours.test/storage/fewo/infos', + 'visibility' => 'public', + ), + 's3' => + array ( + 'driver' => 's3', + 'key' => NULL, + 'secret' => NULL, + 'region' => NULL, + 'bucket' => NULL, + 'url' => NULL, + ), + ), + ), + 'fpdf' => + array ( + 'orientation' => 'P', + 'unit' => 'mm', + 'size' => 'A4', + 'useVaporHeaders' => false, + ), + 'google2fa' => + array ( + 'enabled' => true, + 'lifetime' => 0, + 'keep_alive' => true, + 'auth' => 'auth', + 'guard' => '', + 'session_var' => 'google2fa', + 'otp_input' => 'one_time_password', + 'window' => 1, + 'forbid_old_passwords' => false, + 'otp_secret_column' => 'secret_key', + 'view' => 'auth.google2fa', + 'error_messages' => + array ( + 'wrong_otp' => 'Das \'One Time Password\' ist falsch.', + 'cannot_be_empty' => 'Das \'One Time Password\' kann nicht leer sein.', + 'unknown' => 'Ein unbekannter Fehler ist aufgetreten. Bitte versuche es erneut.', + ), + 'throw_exceptions' => true, + 'qrcode_image_backend' => 'svg', + ), + 'hashing' => + array ( + 'driver' => 'bcrypt', + 'bcrypt' => + array ( + 'rounds' => 10, + ), + 'argon' => + array ( + 'memory' => 1024, + 'threads' => 2, + 'time' => 2, + ), + ), + 'ide-helper' => + array ( + 'filename' => '_ide_helper', + 'models_filename' => '_ide_helper_models.php', + 'meta_filename' => '.phpstorm.meta.php', + 'include_fluent' => false, + 'include_factory_builders' => false, + 'write_model_magic_where' => true, + 'write_model_external_builder_methods' => true, + 'write_model_relation_count_properties' => true, + 'write_eloquent_model_mixins' => false, + 'include_helpers' => false, + 'helper_files' => + array ( + 0 => '/workspace/mein.sterntours.de/vendor/laravel/framework/src/Illuminate/Support/helpers.php', + ), + 'model_locations' => + array ( + 0 => 'app', + 1 => 'packages', + ), + 'ignored_models' => + array ( + ), + 'model_hooks' => + array ( + ), + 'extra' => + array ( + 'Eloquent' => + array ( + 0 => 'Illuminate\\Database\\Eloquent\\Builder', + 1 => 'Illuminate\\Database\\Query\\Builder', + ), + 'Session' => + array ( + 0 => 'Illuminate\\Session\\Store', + ), + ), + 'magic' => + array ( + 'Log' => + array ( + 'debug' => 'Monolog\\Logger::addDebug', + 'info' => 'Monolog\\Logger::addInfo', + 'notice' => 'Monolog\\Logger::addNotice', + 'warning' => 'Monolog\\Logger::addWarning', + 'error' => 'Monolog\\Logger::addError', + 'critical' => 'Monolog\\Logger::addCritical', + 'alert' => 'Monolog\\Logger::addAlert', + 'emergency' => 'Monolog\\Logger::addEmergency', + ), + ), + 'interfaces' => + array ( + ), + 'model_camel_case_properties' => false, + 'type_overrides' => + array ( + 'integer' => 'int', + 'boolean' => 'bool', + ), + 'include_class_docblocks' => false, + 'force_fqn' => false, + 'use_generics_annotations' => true, + 'additional_relation_types' => + array ( + ), + 'additional_relation_return_types' => + array ( + ), + 'post_migrate' => + array ( + ), + 'format' => 'php', + 'custom_db_types' => + array ( + ), + ), + 'image' => + array ( + 'driver' => 'gd', + ), + 'lfm' => + array ( + 'use_package_routes' => true, + 'allow_multi_user' => false, + 'allow_share_folder' => false, + 'user_folder_name' => 'IqContent\\LaravelFilemanager\\Handlers\\ConfigHandler', + 'shared_folder_name' => 'shares', + 'thumb_folder_name' => 'thumbs', + 'folder_categories' => + array ( + 'file' => + array ( + 'folder_name' => 'files', + 'startup_view' => 'grid', + 'max_size' => 50000, + 'valid_mime' => + array ( + 0 => 'image/jpeg', + 1 => 'image/pjpeg', + 2 => 'image/png', + 3 => 'image/gif', + 4 => 'image/svg+xml', + 5 => 'application/pdf', + 6 => 'text/plain', + 7 => 'application/msword', + 8 => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 9 => 'application/vnd.ms-word.template.macroEnabled.12', + 10 => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 11 => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 12 => 'application/excel', + ), + ), + 'image' => + array ( + 'folder_name' => 'photos', + 'startup_view' => 'list', + 'max_size' => 50000, + 'valid_mime' => + array ( + 0 => 'image/jpeg', + 1 => 'image/pjpeg', + 2 => 'image/png', + 3 => 'image/gif', + 4 => 'image/svg+xml', + 5 => 'application/pdf', + 6 => 'text/plain', + ), + ), + ), + 'disk' => 'public', + 'rename_file' => false, + 'alphanumeric_filename' => true, + 'alphanumeric_directory' => true, + 'should_validate_size' => false, + 'should_validate_mime' => false, + 'create_folder_mode' => 493, + 'create_file_mode' => 420, + 'should_change_file_mode' => true, + 'over_write_on_duplicate' => false, + 'should_create_thumbnails' => true, + 'raster_mimetypes' => + array ( + 0 => 'image/jpeg', + 1 => 'image/pjpeg', + 2 => 'image/png', + ), + 'thumb_img_width' => 200, + 'thumb_img_height' => 200, + 'default_color' => '#ffc926', + 'resize_aspectRatio' => false, + 'resize_containment' => true, + 'file_type_array' => + array ( + 'pdf' => 'Adobe Acrobat', + 'doc' => 'Microsoft Word', + 'docx' => 'Microsoft Word', + 'xls' => 'Microsoft Excel', + 'xlsx' => 'Microsoft Excel', + 'zip' => 'Archive', + 'gif' => 'GIF Image', + 'jpg' => 'JPEG Image', + 'jpeg' => 'JPEG Image', + 'png' => 'PNG Image', + 'ppt' => 'Microsoft PowerPoint', + 'pptx' => 'Microsoft PowerPoint', + ), + 'file_icon_array' => + array ( + 'pdf' => 'fa-file-pdf', + 'doc' => 'fa-file-word', + 'docx' => 'fa-file-word', + 'xls' => 'fa-file-excel', + 'xlsx' => 'fa-file-excel', + 'zip' => 'fa-file-archive', + 'gif' => 'fa-file-image', + 'jpg' => 'fa-file-image', + 'jpeg' => 'fa-file-image', + 'png' => 'fa-file-image', + 'ppt' => 'fa-file-powerpoint', + 'pptx' => 'fa-file-powerpoint', + 'mp3' => 'fa-file-audio', + 'mp4' => 'fa-file-video', + 'txt' => 'fa-file-alt', + 'dwg' => 'fa-file-image', + 'youtube' => 'fab fa-youtube-square', + ), + 'php_ini_overrides' => + array ( + 'memory_limit' => '256M', + ), + ), + 'localization' => + array ( + 'supportedLocales' => + array ( + 'de' => + array ( + 'name' => 'German', + 'script' => 'Latn', + 'native' => 'Deutsch', + 'regional' => 'de_DE', + ), + ), + ), + 'logging' => + array ( + 'default' => 'stack', + 'channels' => + array ( + 'stack' => + array ( + 'driver' => 'stack', + 'channels' => + array ( + 0 => 'single', + ), + ), + 'single' => + array ( + 'driver' => 'single', + 'path' => '/workspace/mein.sterntours.de/storage/logs/laravel.log', + 'level' => 'debug', + ), + 'daily' => + array ( + 'driver' => 'daily', + 'path' => '/workspace/mein.sterntours.de/storage/logs/laravel.log', + 'level' => 'debug', + 'days' => 7, + ), + 'slack' => + array ( + 'driver' => 'slack', + 'url' => NULL, + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => 'critical', + ), + 'stderr' => + array ( + 'driver' => 'monolog', + 'handler' => 'Monolog\\Handler\\StreamHandler', + 'with' => + array ( + 'stream' => 'php://stderr', + ), + ), + 'syslog' => + array ( + 'driver' => 'syslog', + 'level' => 'debug', + ), + 'errorlog' => + array ( + 'driver' => 'errorlog', + 'level' => 'debug', + ), + 'browser' => + array ( + 'driver' => 'single', + 'path' => '/workspace/mein.sterntours.de/storage/logs/browser.log', + 'level' => 'debug', + 'days' => 14, + ), + ), + ), + 'mail' => + array ( + 'driver' => 'smtp', + 'host' => 'global-mailpit', + 'port' => '587', + 'from' => + array ( + 'address' => 'stern@sterntours.de', + 'name' => 'DEV Reisebüro STERN TOURS', + ), + 'mail_bbc' => + array ( + 0 => 'kevin@adametz.media', + ), + 'mail_fewo_employee' => 'kevin@adametz.media', + 'encryption' => 'TLS', + 'username' => 'stern@stern-tours.de', + 'password' => '13C!NlecB!Phil4beAxKl', + 'sendmail' => '/usr/sbin/sendmail -bs', + 'markdown' => + array ( + 'theme' => 'default', + 'paths' => + array ( + 0 => '/workspace/mein.sterntours.de/resources/views/vendor/mail', + ), + ), + ), + 'models' => + array ( + '*' => + array ( + 'path' => '/workspace/mein.sterntours.de/app/Models', + 'namespace' => 'App\\Models', + 'parent' => 'Illuminate\\Database\\Eloquent\\Model', + 'use' => + array ( + ), + 'connection' => false, + 'timestamps' => true, + 'soft_deletes' => true, + 'date_format' => 'Y-m-d H:i:s', + 'per_page' => 15, + 'base_files' => false, + 'snake_attributes' => true, + 'qualified_tables' => false, + 'hidden' => + array ( + 0 => '*secret*', + 1 => '*password', + 2 => '*token', + ), + 'guarded' => + array ( + ), + 'casts' => + array ( + '*_json' => 'json', + ), + 'except' => + array ( + 0 => 'migrations', + ), + ), + ), + 'permissions' => + array ( + 'groups' => + array ( + 0 => + array ( + 'my-dat' => + array ( + 'name' => 'Ihre Daten', + 'color' => 'client', + ), + ), + 1 => + array ( + 'crm' => + array ( + 'name' => 'ADMIN CRM ', + 'color' => 'admin', + ), + 'crm-tp' => + array ( + 'name' => 'ADMIN CRM > Reiseprogramme', + 'color' => 'admin', + ), + 'crm-tp-pr' => + array ( + 'name' => 'ADMIN CRM > Reiseprogramme > Programme', + 'color' => 'admin', + ), + 'crm-tp-dr' => + array ( + 'name' => 'ADMIN CRM > Reiseprogramme > Vorlagen', + 'color' => 'admin', + ), + 'crm-tp-tc' => + array ( + 'name' => 'ADMIN CRM > Reiseprogramme > Inhalte', + 'color' => 'admin', + ), + 'crm-bo' => + array ( + 'name' => 'ADMIN CRM > Buchungen', + 'color' => 'admin', + ), + 'crm-bo-re' => + array ( + 'name' => 'ADMIN CRM > Buchungen > Übersicht', + 'color' => 'admin', + ), + 'crm-bo-bo' => + array ( + 'name' => 'ADMIN CRM > Buchungen > Buchungen', + 'color' => 'admin', + ), + 'crm-bo-le' => + array ( + 'name' => 'ADMIN CRM > Buchungen > Anfragen', + 'color' => 'admin', + ), + 'crm-bo-cu' => + array ( + 'name' => 'ADMIN CRM > Buchungen > Kunden', + 'color' => 'admin', + ), + 'crm-cm' => + array ( + 'name' => 'ADMIN CRM > Kundenverwaltung', + 'color' => 'admin', + ), + 'crm-cm-cf' => + array ( + 'name' => 'ADMIN CRM > Kundenverwaltung > Kunden (FeWo)', + 'color' => 'admin', + ), + 'crm-cm-bf' => + array ( + 'name' => 'ADMIN CRM > Kundenverwaltung > Buchungen (FeWo)', + 'color' => 'admin', + ), + 'crm-mail' => + array ( + 'name' => 'ADMIN CRM > E-Mails', + 'color' => 'admin', + ), + 'crm-mail-le' => + array ( + 'name' => 'ADMIN CRM > E-Mails > Anfragen', + 'color' => 'admin', + ), + 'crm-mail-bo' => + array ( + 'name' => 'ADMIN CRM > E-Mails > Buchungen', + 'color' => 'admin', + ), + 'crm-mail-bf' => + array ( + 'name' => 'ADMIN CRM > E-Mails > Buchungen (Fewo)', + 'color' => 'admin', + ), + 'crm-iq-tl' => + array ( + 'name' => 'ADMIN CRM > Reisebausteine', + 'color' => 'admin', + ), + 'crm-iq-tl-pro' => + array ( + 'name' => 'ADMIN CRM > Reisebausteine > Programm', + 'color' => 'admin', + ), + 'crm-iq-tl-gp' => + array ( + 'name' => 'ADMIN CRM > Reisebausteine > Gruppe', + 'color' => 'admin', + ), + 'crm-iq-tl-it' => + array ( + 'name' => 'ADMIN CRM > Reisebausteine > Baustein', + 'color' => 'admin', + ), + 'crm-old-cm' => + array ( + 'name' => 'ADMIN CRM altes System > Kundenverwaltung', + 'color' => 'info', + ), + 'cms' => + array ( + 'name' => 'ADMIN CMS', + 'color' => 'secondary', + ), + 'cms-iq-assets' => + array ( + 'name' => 'ADMIN CMS > Medien', + 'color' => 'secondary', + ), + 'cms-tg' => + array ( + 'name' => 'ADMIN CMS > Reiseführer', + 'color' => 'secondary', + ), + 'cms-fewo' => + array ( + 'name' => 'ADMIN CMS > FeWo', + 'color' => 'secondary', + ), + 'cms-book' => + array ( + 'name' => 'ADMIN CMS > Buchungen', + 'color' => 'secondary', + ), + 'cms-fb' => + array ( + 'name' => 'ADMIN CMS > Feedback', + 'color' => 'secondary', + ), + 'cms-nw' => + array ( + 'name' => 'ADMIN CMS > News', + 'color' => 'secondary', + ), + 'cms-aq' => + array ( + 'name' => 'ADMIN CMS > Fragen & Antworten', + 'color' => 'secondary', + ), + 'cms-sb' => + array ( + 'name' => 'ADMIN CMS > Sidebar', + 'color' => 'secondary', + ), + 'cms-cn' => + array ( + 'name' => 'ADMIN CMS > Inhalte', + 'color' => 'secondary', + ), + 'cms-cn-in' => + array ( + 'name' => 'ADMIN CMS > Inhalte > Infos', + 'color' => 'secondary', + ), + 'cms-cn-al' => + array ( + 'name' => 'ADMIN CMS > Inhalte > Inhalte', + 'color' => 'secondary', + ), + 'cms-cn-au' => + array ( + 'name' => 'ADMIN CMS > Inhalte > Autor', + 'color' => 'secondary', + ), + 'cms-cn-co' => + array ( + 'name' => 'ADMIN CMS > Inhalte > Länder', + 'color' => 'secondary', + ), + 'cms-newsletter' => + array ( + 'name' => 'ADMIN CMS > Newsletter', + 'color' => 'secondary', + ), + 'crm-nav-api' => + array ( + 'name' => 'ADMIN CRM > Navigation API', + 'color' => 'secondary', + ), + ), + 2 => + array ( + 'sua-bo-n-edit' => + array ( + 'name' => 'SUPERADMIN > Buchungen > Notizen > bearbeiten', + 'color' => 'secondary', + ), + 'sua-fewo-n-edit' => + array ( + 'name' => 'SUPERADMIN > FeWo > Notizen > bearbeiten', + 'color' => 'secondary', + ), + 'sua-st' => + array ( + 'name' => 'SUPERADMIN > Einstellungen', + 'color' => 'superadmin', + ), + 'sua-st-al' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > Airline', + 'color' => 'superadmin', + ), + 'sua-st-ap' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > Airport', + 'color' => 'superadmin', + ), + 'sua-st-em' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > E-Mails', + 'color' => 'superadmin', + ), + 'sua-st-ke' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > Keywords', + 'color' => 'superadmin', + ), + 'sua-st-sp' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > Leistungsträger', + 'color' => 'superadmin', + ), + 'sua-st-tn' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > Nationalitäten', + 'color' => 'superadmin', + ), + 'sua-st-co' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > Reiseländer', + 'color' => 'superadmin', + ), + 'sua-st-tp' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > Reiseprogramme', + 'color' => 'superadmin', + ), + 'sua-st-tpl' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > Reiseorte', + 'color' => 'superadmin', + ), + 'sua-st-bs' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > Reisestatus', + 'color' => 'superadmin', + ), + 'sua-st-tc' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > Veranstalter', + 'color' => 'superadmin', + ), + 'sua-st-tca' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > Reiseart', + 'color' => 'superadmin', + ), + 'sua-st-tap' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > Zielflughafen', + 'color' => 'superadmin', + ), + 'sua-st-in' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > Versicherungen', + 'color' => 'superadmin', + ), + 'sua-st-ca' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > Kategorien', + 'color' => 'superadmin', + ), + 'sua-st-tgn' => + array ( + 'name' => 'SUPERADMIN > Einstellungen > Reisehinweise', + 'color' => 'superadmin', + ), + 'sua-re' => + array ( + 'name' => 'SUPERADMIN > Export', + 'color' => 'superadmin', + ), + 'sua-re-bo' => + array ( + 'name' => 'SUPERADMIN > Export > Buchungen', + 'color' => 'superadmin', + ), + 'sua-re-pp' => + array ( + 'name' => 'SUPERADMIN > Export > Leistungsträger', + 'color' => 'superadmin', + ), + 'sua-re-fw' => + array ( + 'name' => 'SUPERADMIN > Export > Fewo', + 'color' => 'superadmin', + ), + 'sua-re-le' => + array ( + 'name' => 'SUPERADMIN > Export > Anfragen', + 'color' => 'superadmin', + ), + 'sua-ur-rt' => + array ( + 'name' => 'SUPERADMIN > User Rechte', + 'color' => 'danger', + ), + ), + ), + 'roles' => + array ( + 0 => 'Kunde', + 1 => 'Admin', + 2 => 'SuperAdmin', + ), + ), + 'queue' => + array ( + 'default' => 'sync', + 'connections' => + array ( + 'sync' => + array ( + 'driver' => 'sync', + ), + 'database' => + array ( + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + ), + 'beanstalkd' => + array ( + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + ), + 'sqs' => + array ( + 'driver' => 'sqs', + 'key' => 'your-public-key', + 'secret' => 'your-secret-key', + 'prefix' => 'https://sqs.us-east-1.amazonaws.com/your-account-id', + 'queue' => 'your-queue-name', + 'region' => 'us-east-1', + ), + 'redis' => + array ( + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => NULL, + ), + ), + 'failed' => + array ( + 'database' => 'mysql', + 'table' => 'failed_jobs', + ), + ), + 'services' => + array ( + 'mailgun' => + array ( + 'domain' => NULL, + 'secret' => NULL, + ), + 'ses' => + array ( + 'key' => NULL, + 'secret' => NULL, + 'region' => 'us-east-1', + ), + 'sparkpost' => + array ( + 'secret' => NULL, + ), + 'stripe' => + array ( + 'model' => 'App\\User', + 'key' => NULL, + 'secret' => NULL, + ), + ), + 'session' => + array ( + 'driver' => 'file', + 'lifetime' => '120', + 'expire_on_close' => false, + 'encrypt' => false, + 'files' => '/workspace/mein.sterntours.de/storage/framework/sessions', + 'connection' => NULL, + 'table' => 'sessions', + 'store' => NULL, + 'lottery' => + array ( + 0 => 2, + 1 => 100, + ), + 'cookie' => 'stern_tours_crm_session', + 'path' => '/', + 'domain' => NULL, + 'secure' => false, + 'http_only' => true, + 'same_site' => NULL, + ), + 'tinker' => + array ( + 'commands' => + array ( + ), + 'alias' => + array ( + ), + 'dont_alias' => + array ( + ), + 'trust_project' => 'always', + ), + 'trustedproxy' => + array ( + 'proxies' => NULL, + 'headers' => 62, + ), + 'view' => + array ( + 'paths' => + array ( + 0 => '/workspace/mein.sterntours.de/resources/views', + ), + 'compiled' => '/workspace/mein.sterntours.de/storage/framework/views', + ), + 'cart' => + array ( + 'tax' => 10, + 'database' => + array ( + 'connection' => NULL, + 'table' => 'shoppingcart', + ), + 'destroy_on_logout' => false, + 'format' => + array ( + 'decimals' => 2, + 'decimal_point' => '.', + 'thousand_seperator' => '', + ), + 'discountOnFees' => false, + ), + 'boost' => + array ( + 'enabled' => true, + 'browser_logs_watcher' => true, + 'executable_paths' => + array ( + 'php' => NULL, + 'composer' => NULL, + 'npm' => NULL, + 'vendor_bin' => NULL, + ), + ), + 'mcp' => + array ( + 'redirect_domains' => + array ( + 0 => '*', + ), + ), + 'passport' => + array ( + 'guard' => 'web', + 'private_key' => NULL, + 'public_key' => NULL, + 'client_uuids' => false, + 'personal_access_client' => + array ( + 'id' => NULL, + 'secret' => NULL, + ), + ), + 'flare' => + array ( + 'key' => NULL, + 'flare_middleware' => + array ( + 0 => 'Spatie\\FlareClient\\FlareMiddleware\\RemoveRequestIp', + 1 => 'Spatie\\FlareClient\\FlareMiddleware\\AddGitInformation', + 2 => 'Spatie\\LaravelIgnition\\FlareMiddleware\\AddNotifierName', + 3 => 'Spatie\\LaravelIgnition\\FlareMiddleware\\AddEnvironmentInformation', + 4 => 'Spatie\\LaravelIgnition\\FlareMiddleware\\AddExceptionInformation', + 5 => 'Spatie\\LaravelIgnition\\FlareMiddleware\\AddDumps', + 'Spatie\\LaravelIgnition\\FlareMiddleware\\AddLogs' => + array ( + 'maximum_number_of_collected_logs' => 200, + ), + 'Spatie\\LaravelIgnition\\FlareMiddleware\\AddQueries' => + array ( + 'maximum_number_of_collected_queries' => 200, + 'report_query_bindings' => true, + ), + 'Spatie\\LaravelIgnition\\FlareMiddleware\\AddJobs' => + array ( + 'max_chained_job_reporting_depth' => 5, + ), + 6 => 'Spatie\\LaravelIgnition\\FlareMiddleware\\AddContext', + 7 => 'Spatie\\LaravelIgnition\\FlareMiddleware\\AddExceptionHandledStatus', + 'Spatie\\FlareClient\\FlareMiddleware\\CensorRequestBodyFields' => + array ( + 'censor_fields' => + array ( + 0 => 'password', + 1 => 'password_confirmation', + ), + ), + 'Spatie\\FlareClient\\FlareMiddleware\\CensorRequestHeaders' => + array ( + 'headers' => + array ( + 0 => 'API-KEY', + 1 => 'Authorization', + 2 => 'Cookie', + 3 => 'Set-Cookie', + 4 => 'X-CSRF-TOKEN', + 5 => 'X-XSRF-TOKEN', + ), + ), + ), + 'send_logs_as_events' => true, + ), + 'ignition' => + array ( + 'editor' => 'phpstorm', + 'theme' => 'auto', + 'enable_share_button' => true, + 'register_commands' => false, + 'solution_providers' => + array ( + 0 => 'Spatie\\Ignition\\Solutions\\SolutionProviders\\BadMethodCallSolutionProvider', + 1 => 'Spatie\\Ignition\\Solutions\\SolutionProviders\\MergeConflictSolutionProvider', + 2 => 'Spatie\\Ignition\\Solutions\\SolutionProviders\\UndefinedPropertySolutionProvider', + 3 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\IncorrectValetDbCredentialsSolutionProvider', + 4 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\MissingAppKeySolutionProvider', + 5 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\DefaultDbNameSolutionProvider', + 6 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\TableNotFoundSolutionProvider', + 7 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\MissingImportSolutionProvider', + 8 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\InvalidRouteActionSolutionProvider', + 9 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\ViewNotFoundSolutionProvider', + 10 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\RunningLaravelDuskInProductionProvider', + 11 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\MissingColumnSolutionProvider', + 12 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\UnknownValidationSolutionProvider', + 13 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\MissingMixManifestSolutionProvider', + 14 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\MissingViteManifestSolutionProvider', + 15 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\MissingLivewireComponentSolutionProvider', + 16 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\UndefinedViewVariableSolutionProvider', + 17 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\GenericLaravelExceptionSolutionProvider', + 18 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\OpenAiSolutionProvider', + 19 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\SailNetworkSolutionProvider', + 20 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\UnknownMysql8CollationSolutionProvider', + 21 => 'Spatie\\LaravelIgnition\\Solutions\\SolutionProviders\\UnknownMariadbCollationSolutionProvider', + ), + 'ignored_solution_providers' => + array ( + ), + 'enable_runnable_solutions' => NULL, + 'remote_sites_path' => '/workspace/mein.sterntours.de', + 'local_sites_path' => '', + 'housekeeping_endpoint_prefix' => '_ignition', + 'settings_file_path' => '', + 'recorders' => + array ( + 0 => 'Spatie\\LaravelIgnition\\Recorders\\DumpRecorder\\DumpRecorder', + 1 => 'Spatie\\LaravelIgnition\\Recorders\\JobRecorder\\JobRecorder', + 2 => 'Spatie\\LaravelIgnition\\Recorders\\LogRecorder\\LogRecorder', + 3 => 'Spatie\\LaravelIgnition\\Recorders\\QueryRecorder\\QueryRecorder', + ), + 'open_ai_key' => NULL, + 'with_stack_frame_arguments' => true, + 'argument_reducers' => + array ( + 0 => 'Spatie\\Backtrace\\Arguments\\Reducers\\BaseTypeArgumentReducer', + 1 => 'Spatie\\Backtrace\\Arguments\\Reducers\\ArrayArgumentReducer', + 2 => 'Spatie\\Backtrace\\Arguments\\Reducers\\StdClassArgumentReducer', + 3 => 'Spatie\\Backtrace\\Arguments\\Reducers\\EnumArgumentReducer', + 4 => 'Spatie\\Backtrace\\Arguments\\Reducers\\ClosureArgumentReducer', + 5 => 'Spatie\\Backtrace\\Arguments\\Reducers\\DateTimeArgumentReducer', + 6 => 'Spatie\\Backtrace\\Arguments\\Reducers\\DateTimeZoneArgumentReducer', + 7 => 'Spatie\\Backtrace\\Arguments\\Reducers\\SymphonyRequestArgumentReducer', + 8 => 'Spatie\\LaravelIgnition\\ArgumentReducers\\ModelArgumentReducer', + 9 => 'Spatie\\LaravelIgnition\\ArgumentReducers\\CollectionArgumentReducer', + 10 => 'Spatie\\Backtrace\\Arguments\\Reducers\\StringableArgumentReducer', + ), + ), + 'sluggable' => + array ( + 'source' => NULL, + 'maxLength' => NULL, + 'maxLengthKeepWords' => true, + 'method' => NULL, + 'separator' => '-', + 'unique' => true, + 'uniqueSuffix' => NULL, + 'firstUniqueSuffix' => 2, + 'includeTrashed' => false, + 'reserved' => NULL, + 'onUpdate' => false, + 'slugEngineOptions' => + array ( + ), + ), +); diff --git a/bootstrap/cache/packages.php b/bootstrap/cache/packages.php index b8ec015..ca9b227 100755 --- a/bootstrap/cache/packages.php +++ b/bootstrap/cache/packages.php @@ -1,25 +1,26 @@ array ( + 'aliases' => + array ( + 'Debugbar' => 'Barryvdh\\Debugbar\\Facades\\Debugbar', + ), 'providers' => array ( 0 => 'Barryvdh\\Debugbar\\ServiceProvider', ), - 'aliases' => - array ( - 'Debugbar' => 'Barryvdh\\Debugbar\\Facade', - ), ), 'barryvdh/laravel-dompdf' => array ( + 'aliases' => + array ( + 'PDF' => 'Barryvdh\\DomPDF\\Facade\\Pdf', + 'Pdf' => 'Barryvdh\\DomPDF\\Facade\\Pdf', + ), 'providers' => array ( 0 => 'Barryvdh\\DomPDF\\ServiceProvider', ), - 'aliases' => - array ( - 'PDF' => 'Barryvdh\\DomPDF\\Facade', - ), ), 'barryvdh/laravel-ide-helper' => array ( @@ -46,41 +47,16 @@ 'Cart' => 'Gloudemans\\Shoppingcart\\Facades\\Cart', ), ), - 'facade/ignition' => - array ( - 'providers' => - array ( - 0 => 'Facade\\Ignition\\IgnitionServiceProvider', - ), - 'aliases' => - array ( - 'Flare' => 'Facade\\Ignition\\Facades\\Flare', - ), - ), - 'fideloper/proxy' => - array ( - 'providers' => - array ( - 0 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider', - ), - ), - 'fruitcake/laravel-cors' => - array ( - 'providers' => - array ( - 0 => 'Fruitcake\\Cors\\CorsServiceProvider', - ), - ), 'intervention/image' => array ( - 'providers' => - array ( - 0 => 'Intervention\\Image\\ImageServiceProvider', - ), 'aliases' => array ( 'Image' => 'Intervention\\Image\\Facades\\Image', ), + 'providers' => + array ( + 0 => 'Intervention\\Image\\ImageServiceProvider', + ), ), 'iqcontent/laravel-filemanager' => array ( @@ -94,24 +70,42 @@ ), 'jenssegers/date' => array ( - 'providers' => - array ( - 0 => 'Jenssegers\\Date\\DateServiceProvider', - ), 'aliases' => array ( 'Date' => 'Jenssegers\\Date\\Date', ), + 'providers' => + array ( + 0 => 'Jenssegers\\Date\\DateServiceProvider', + ), ), 'laracasts/flash' => array ( + 'aliases' => + array ( + 'Flash' => 'Laracasts\\Flash\\Flash', + ), 'providers' => array ( 0 => 'Laracasts\\Flash\\FlashServiceProvider', ), + ), + 'laravel/boost' => + array ( + 'providers' => + array ( + 0 => 'Laravel\\Boost\\BoostServiceProvider', + ), + ), + 'laravel/mcp' => + array ( 'aliases' => array ( - 'Flash' => 'Laracasts\\Flash\\Flash', + 'Mcp' => 'Laravel\\Mcp\\Server\\Facades\\Mcp', + ), + 'providers' => + array ( + 0 => 'Laravel\\Mcp\\Server\\McpServiceProvider', ), ), 'laravel/passport' => @@ -121,6 +115,13 @@ 0 => 'Laravel\\Passport\\PassportServiceProvider', ), ), + 'laravel/roster' => + array ( + 'providers' => + array ( + 0 => 'Laravel\\Roster\\RosterServiceProvider', + ), + ), 'laravel/sail' => array ( 'providers' => @@ -156,14 +157,14 @@ ), 'maatwebsite/excel' => array ( - 'providers' => - array ( - 0 => 'Maatwebsite\\Excel\\ExcelServiceProvider', - ), 'aliases' => array ( 'Excel' => 'Maatwebsite\\Excel\\Facades\\Excel', ), + 'providers' => + array ( + 0 => 'Maatwebsite\\Excel\\ExcelServiceProvider', + ), ), 'nesbot/carbon' => array ( @@ -179,16 +180,23 @@ 0 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider', ), ), - 'pragmarx/google2fa-laravel' => + 'nunomaduro/termwind' => array ( 'providers' => array ( - 0 => 'PragmaRX\\Google2FALaravel\\ServiceProvider', + 0 => 'Termwind\\Laravel\\TermwindServiceProvider', ), + ), + 'pragmarx/google2fa-laravel' => + array ( 'aliases' => array ( 'Google2FA' => 'PragmaRX\\Google2FALaravel\\Facade', ), + 'providers' => + array ( + 0 => 'PragmaRX\\Google2FALaravel\\ServiceProvider', + ), ), 'reliese/laravel' => array ( @@ -197,15 +205,26 @@ 0 => 'Reliese\\Coders\\CodersServiceProvider', ), ), - 'yajra/laravel-datatables-oracle' => + 'spatie/laravel-ignition' => array ( + 'aliases' => + array ( + 'Flare' => 'Spatie\\LaravelIgnition\\Facades\\Flare', + ), 'providers' => array ( - 0 => 'Yajra\\DataTables\\DataTablesServiceProvider', + 0 => 'Spatie\\LaravelIgnition\\IgnitionServiceProvider', ), + ), + 'yajra/laravel-datatables-oracle' => + array ( 'aliases' => array ( 'DataTables' => 'Yajra\\DataTables\\Facades\\DataTables', ), + 'providers' => + array ( + 0 => 'Yajra\\DataTables\\DataTablesServiceProvider', + ), ), ); \ No newline at end of file diff --git a/bootstrap/cache/services.php b/bootstrap/cache/services.php index c7f91d4..a5336f7 100755 --- a/bootstrap/cache/services.php +++ b/bootstrap/cache/services.php @@ -28,14 +28,14 @@ 24 => 'Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider', 25 => 'Cviebrock\\EloquentSluggable\\ServiceProvider', 26 => 'Gloudemans\\Shoppingcart\\ShoppingcartServiceProvider', - 27 => 'Facade\\Ignition\\IgnitionServiceProvider', - 28 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider', - 29 => 'Fruitcake\\Cors\\CorsServiceProvider', - 30 => 'Intervention\\Image\\ImageServiceProvider', - 31 => 'IqContent\\LaravelFilemanager\\LaravelFilemanagerServiceProvider', - 32 => 'Jenssegers\\Date\\DateServiceProvider', - 33 => 'Laracasts\\Flash\\FlashServiceProvider', - 34 => 'Laravel\\Passport\\PassportServiceProvider', + 27 => 'Intervention\\Image\\ImageServiceProvider', + 28 => 'IqContent\\LaravelFilemanager\\LaravelFilemanagerServiceProvider', + 29 => 'Jenssegers\\Date\\DateServiceProvider', + 30 => 'Laracasts\\Flash\\FlashServiceProvider', + 31 => 'Laravel\\Boost\\BoostServiceProvider', + 32 => 'Laravel\\Mcp\\Server\\McpServiceProvider', + 33 => 'Laravel\\Passport\\PassportServiceProvider', + 34 => 'Laravel\\Roster\\RosterServiceProvider', 35 => 'Laravel\\Sail\\SailServiceProvider', 36 => 'Laravel\\Tinker\\TinkerServiceProvider', 37 => 'Laravel\\Ui\\UiServiceProvider', @@ -43,23 +43,25 @@ 39 => 'Maatwebsite\\Excel\\ExcelServiceProvider', 40 => 'Carbon\\Laravel\\ServiceProvider', 41 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider', - 42 => 'PragmaRX\\Google2FALaravel\\ServiceProvider', - 43 => 'Reliese\\Coders\\CodersServiceProvider', - 44 => 'Yajra\\DataTables\\DataTablesServiceProvider', - 45 => 'Laravel\\Tinker\\TinkerServiceProvider', - 46 => 'Laravel\\Passport\\PassportServiceProvider', - 47 => 'App\\Providers\\AppServiceProvider', - 48 => 'App\\Providers\\AuthServiceProvider', - 49 => 'App\\Providers\\EventServiceProvider', - 50 => 'App\\Providers\\RouteServiceProvider', - 51 => 'Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider', - 52 => 'Barryvdh\\DomPDF\\ServiceProvider', - 53 => 'Jenssegers\\Date\\DateServiceProvider', - 54 => 'Collective\\Html\\HtmlServiceProvider', - 55 => 'Intervention\\Image\\ImageServiceProvider', - 56 => 'Maatwebsite\\Excel\\ExcelServiceProvider', - 57 => 'Yajra\\DataTables\\DataTablesServiceProvider', - 58 => 'Reliese\\Coders\\CodersServiceProvider', + 42 => 'Termwind\\Laravel\\TermwindServiceProvider', + 43 => 'PragmaRX\\Google2FALaravel\\ServiceProvider', + 44 => 'Reliese\\Coders\\CodersServiceProvider', + 45 => 'Spatie\\LaravelIgnition\\IgnitionServiceProvider', + 46 => 'Yajra\\DataTables\\DataTablesServiceProvider', + 47 => 'Laravel\\Tinker\\TinkerServiceProvider', + 48 => 'Laravel\\Passport\\PassportServiceProvider', + 49 => 'App\\Providers\\AppServiceProvider', + 50 => 'App\\Providers\\AuthServiceProvider', + 51 => 'App\\Providers\\EventServiceProvider', + 52 => 'App\\Providers\\RouteServiceProvider', + 53 => 'Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider', + 54 => 'Barryvdh\\DomPDF\\ServiceProvider', + 55 => 'Jenssegers\\Date\\DateServiceProvider', + 56 => 'Collective\\Html\\HtmlServiceProvider', + 57 => 'Intervention\\Image\\ImageServiceProvider', + 58 => 'Maatwebsite\\Excel\\ExcelServiceProvider', + 59 => 'Yajra\\DataTables\\DataTablesServiceProvider', + 60 => 'Reliese\\Coders\\CodersServiceProvider', ), 'eager' => array ( @@ -77,32 +79,34 @@ 11 => 'Barryvdh\\DomPDF\\ServiceProvider', 12 => 'Cviebrock\\EloquentSluggable\\ServiceProvider', 13 => 'Gloudemans\\Shoppingcart\\ShoppingcartServiceProvider', - 14 => 'Facade\\Ignition\\IgnitionServiceProvider', - 15 => 'Fideloper\\Proxy\\TrustedProxyServiceProvider', - 16 => 'Fruitcake\\Cors\\CorsServiceProvider', - 17 => 'Intervention\\Image\\ImageServiceProvider', - 18 => 'IqContent\\LaravelFilemanager\\LaravelFilemanagerServiceProvider', - 19 => 'Jenssegers\\Date\\DateServiceProvider', - 20 => 'Laracasts\\Flash\\FlashServiceProvider', - 21 => 'Laravel\\Passport\\PassportServiceProvider', + 14 => 'Intervention\\Image\\ImageServiceProvider', + 15 => 'IqContent\\LaravelFilemanager\\LaravelFilemanagerServiceProvider', + 16 => 'Jenssegers\\Date\\DateServiceProvider', + 17 => 'Laracasts\\Flash\\FlashServiceProvider', + 18 => 'Laravel\\Boost\\BoostServiceProvider', + 19 => 'Laravel\\Mcp\\Server\\McpServiceProvider', + 20 => 'Laravel\\Passport\\PassportServiceProvider', + 21 => 'Laravel\\Roster\\RosterServiceProvider', 22 => 'Laravel\\Ui\\UiServiceProvider', 23 => 'Maatwebsite\\Excel\\ExcelServiceProvider', 24 => 'Carbon\\Laravel\\ServiceProvider', 25 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider', - 26 => 'PragmaRX\\Google2FALaravel\\ServiceProvider', - 27 => 'Reliese\\Coders\\CodersServiceProvider', - 28 => 'Yajra\\DataTables\\DataTablesServiceProvider', - 29 => 'Laravel\\Passport\\PassportServiceProvider', - 30 => 'App\\Providers\\AppServiceProvider', - 31 => 'App\\Providers\\AuthServiceProvider', - 32 => 'App\\Providers\\EventServiceProvider', - 33 => 'App\\Providers\\RouteServiceProvider', - 34 => 'Barryvdh\\DomPDF\\ServiceProvider', - 35 => 'Jenssegers\\Date\\DateServiceProvider', - 36 => 'Intervention\\Image\\ImageServiceProvider', - 37 => 'Maatwebsite\\Excel\\ExcelServiceProvider', - 38 => 'Yajra\\DataTables\\DataTablesServiceProvider', - 39 => 'Reliese\\Coders\\CodersServiceProvider', + 26 => 'Termwind\\Laravel\\TermwindServiceProvider', + 27 => 'PragmaRX\\Google2FALaravel\\ServiceProvider', + 28 => 'Reliese\\Coders\\CodersServiceProvider', + 29 => 'Spatie\\LaravelIgnition\\IgnitionServiceProvider', + 30 => 'Yajra\\DataTables\\DataTablesServiceProvider', + 31 => 'Laravel\\Passport\\PassportServiceProvider', + 32 => 'App\\Providers\\AppServiceProvider', + 33 => 'App\\Providers\\AuthServiceProvider', + 34 => 'App\\Providers\\EventServiceProvider', + 35 => 'App\\Providers\\RouteServiceProvider', + 36 => 'Barryvdh\\DomPDF\\ServiceProvider', + 37 => 'Jenssegers\\Date\\DateServiceProvider', + 38 => 'Intervention\\Image\\ImageServiceProvider', + 39 => 'Maatwebsite\\Excel\\ExcelServiceProvider', + 40 => 'Yajra\\DataTables\\DataTablesServiceProvider', + 41 => 'Reliese\\Coders\\CodersServiceProvider', ), 'deferred' => array ( @@ -113,98 +117,116 @@ 'Illuminate\\Contracts\\Bus\\Dispatcher' => 'Illuminate\\Bus\\BusServiceProvider', 'Illuminate\\Contracts\\Bus\\QueueingDispatcher' => 'Illuminate\\Bus\\BusServiceProvider', 'Illuminate\\Bus\\BatchRepository' => 'Illuminate\\Bus\\BusServiceProvider', + 'Illuminate\\Bus\\DatabaseBatchRepository' => 'Illuminate\\Bus\\BusServiceProvider', 'cache' => 'Illuminate\\Cache\\CacheServiceProvider', 'cache.store' => 'Illuminate\\Cache\\CacheServiceProvider', 'cache.psr6' => 'Illuminate\\Cache\\CacheServiceProvider', 'memcached.connector' => 'Illuminate\\Cache\\CacheServiceProvider', 'Illuminate\\Cache\\RateLimiter' => 'Illuminate\\Cache\\CacheServiceProvider', - 'command.cache.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.cache.forget' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.clear-compiled' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.auth.resets.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.config.cache' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.config.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\AboutCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Cache\\Console\\ClearCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Cache\\Console\\ForgetCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ClearCompiledCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Auth\\Console\\ClearResetsCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ConfigCacheCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ConfigClearCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ConfigShowCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Database\\Console\\DbCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.db.prune' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.db.wipe' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.down' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.environment' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.event.cache' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.event.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.event.list' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.key.generate' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.optimize' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.optimize.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.package.discover' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.queue.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.queue.failed' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.queue.flush' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.queue.forget' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.queue.listen' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.queue.monitor' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.queue.prune-batches' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.queue.prune-failed-jobs' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.queue.restart' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.queue.retry' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.queue.retry-batch' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.queue.work' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.route.cache' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.route.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.route.list' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.schema.dump' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.seed' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\MonitorCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\PruneCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\ShowCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\TableCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\WipeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\DownCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\EnvironmentCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\EnvironmentDecryptCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\EnvironmentEncryptCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\EventCacheCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\EventClearCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\EventListCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\KeyGenerateCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\OptimizeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\OptimizeClearCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\PackageDiscoverCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Cache\\Console\\PruneStaleTagsCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Queue\\Console\\ClearCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Queue\\Console\\ListFailedCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Queue\\Console\\FlushFailedCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Queue\\Console\\ForgetFailedCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Queue\\Console\\ListenCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Queue\\Console\\MonitorCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Queue\\Console\\PruneBatchesCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Queue\\Console\\PruneFailedJobsCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Queue\\Console\\RestartCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Queue\\Console\\RetryCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Queue\\Console\\RetryBatchCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Queue\\Console\\WorkCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\RouteCacheCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\RouteClearCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\RouteListCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\DumpCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\Seeds\\SeedCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Console\\Scheduling\\ScheduleFinishCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Console\\Scheduling\\ScheduleListCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Console\\Scheduling\\ScheduleRunCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Console\\Scheduling\\ScheduleClearCacheCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Console\\Scheduling\\ScheduleTestCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'Illuminate\\Console\\Scheduling\\ScheduleWorkCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.storage.link' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.up' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.view.cache' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.view.clear' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.cache.table' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.cast.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.channel.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.component.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.console.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.controller.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.event.generate' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.event.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.exception.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.factory.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.job.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.listener.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.mail.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.middleware.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.model.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.notification.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.notification.table' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.observer.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.policy.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.provider.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.queue.failed-table' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.queue.table' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.queue.batches-table' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.request.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.resource.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.rule.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.seeder.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.session.table' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.serve' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.stub.publish' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.test.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.vendor.publish' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Console\\Scheduling\\ScheduleInterruptCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\ShowModelCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\StorageLinkCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\StorageUnlinkCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\UpCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ViewCacheCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ViewClearCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Cache\\Console\\CacheTableCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\CastMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ChannelListCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ChannelMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ComponentMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ConsoleMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Routing\\Console\\ControllerMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\DocsCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\EventGenerateCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\EventMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ExceptionMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\Factories\\FactoryMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\JobMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\LangPublishCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ListenerMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\MailMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Routing\\Console\\MiddlewareMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ModelMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\NotificationMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Notifications\\Console\\NotificationTableCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ObserverMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\PolicyMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ProviderMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Queue\\Console\\FailedTableCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Queue\\Console\\TableCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Queue\\Console\\BatchesTableCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\RequestMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ResourceMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\RuleMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ScopeMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\Seeds\\SeederMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Session\\Console\\SessionTableCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ServeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\StubPublishCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\TestMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\VendorPublishCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Foundation\\Console\\ViewMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'migrator' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'migration.repository' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'migration.creator' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.migrate' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.migrate.fresh' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.migrate.install' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.migrate.refresh' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.migrate.reset' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.migrate.rollback' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.migrate.status' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', - 'command.migrate.make' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\Migrations\\MigrateCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\Migrations\\FreshCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\Migrations\\InstallCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\Migrations\\RefreshCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\Migrations\\ResetCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\Migrations\\RollbackCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\Migrations\\StatusCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', + 'Illuminate\\Database\\Console\\Migrations\\MigrateMakeCommand' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'composer' => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider', 'hash' => 'Illuminate\\Hashing\\HashServiceProvider', 'hash.driver' => 'Illuminate\\Hashing\\HashServiceProvider', @@ -212,6 +234,7 @@ 'mailer' => 'Illuminate\\Mail\\MailServiceProvider', 'Illuminate\\Mail\\Markdown' => 'Illuminate\\Mail\\MailServiceProvider', 'Illuminate\\Contracts\\Pipeline\\Hub' => 'Illuminate\\Pipeline\\PipelineServiceProvider', + 'pipeline' => 'Illuminate\\Pipeline\\PipelineServiceProvider', 'queue' => 'Illuminate\\Queue\\QueueServiceProvider', 'queue.connection' => 'Illuminate\\Queue\\QueueServiceProvider', 'queue.failer' => 'Illuminate\\Queue\\QueueServiceProvider', @@ -225,6 +248,7 @@ 'translation.loader' => 'Illuminate\\Translation\\TranslationServiceProvider', 'validator' => 'Illuminate\\Validation\\ValidationServiceProvider', 'validation.presence' => 'Illuminate\\Validation\\ValidationServiceProvider', + 'Illuminate\\Contracts\\Validation\\UncompromisedVerifier' => 'Illuminate\\Validation\\ValidationServiceProvider', 'command.ide-helper.generate' => 'Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider', 'command.ide-helper.models' => 'Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider', 'Laravel\\Sail\\Console\\InstallCommand' => 'Laravel\\Sail\\SailServiceProvider', diff --git a/composer.json b/composer.json index 02e2ce5..c9828db 100755 --- a/composer.json +++ b/composer.json @@ -1,7 +1,10 @@ { "name": "laravel/laravel", "description": "The Laravel Framework.", - "keywords": ["framework", "laravel"], + "keywords": [ + "framework", + "laravel" + ], "license": "MIT", "type": "project", "repositories": [ @@ -11,55 +14,90 @@ "options": { "symlink": true } + }, + { + "type": "package", + "package": { + "name": "laravelcollective/html", + "version": "6.5.0", + "description": "HTML and Form Builders for the Laravel Framework (L10+ patch)", + "license": "MIT", + "require": { + "php": "^8.0", + "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/routing": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/session": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/view": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "spatie/once": "^3.0" + }, + "autoload": { + "psr-4": { + "Collective\\Html\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": ["Collective\\Html\\HtmlServiceProvider"], + "aliases": { + "Form": "Collective\\Html\\FormFacade", + "Html": "Collective\\Html\\HtmlFacade" + } + } + }, + "source": { + "type": "git", + "url": "https://github.com/LaravelCollective/html.git", + "reference": "v6.4.1" + } + } } ], "require": { - - "php": "^7.3|^8.0", - "barryvdh/laravel-dompdf": "*", - "cviebrock/eloquent-sluggable": "*", + "php": "^8.1|^8.2|^8.3", + "bacon/bacon-qr-code": "^3.0", + "barryvdh/laravel-dompdf": "^2.2", + "cviebrock/eloquent-sluggable": "^10.0", "digital-bird/shoppingcart": "^3.0", - "doctrine/dbal": "*", - "fideloper/proxy": "^4.4", - "fruitcake/laravel-cors": "^2.0", - "guzzlehttp/guzzle": "^7.0.1", - "intervention/image": "*", + "doctrine/dbal": "^3.0", + "guzzlehttp/guzzle": "^7.0", + "intervention/image": "^2.7", + "iqcontent/laravel-filemanager": "*", "jenssegers/date": "*", "laracasts/flash": "*", - "laravel/framework": "^8.12", + "laravel/framework": "^10.49", "laravel/helpers": "*", - "laravel/passport": "*", - "laravel/tinker": "^2.5", - "laravel/ui": "^3.1", - "laravelcollective/html": "*", + "laravel/passport": "^11.0", + "laravel/tinker": "^2.9", + "laravel/ui": "^4.0", + "laravelcollective/html": "^6.5", + "maatwebsite/excel": "^3.1", + "pragmarx/google2fa-laravel": "*", "reliese/laravel": "*", "rguedes/pdfmerger": "^1.0", "setasign/fpdf": "*", "setasign/fpdi": "*", - "yajra/laravel-datatables-oracle": "*", - "iqcontent/laravel-filemanager": "*", - "maatwebsite/excel": "^3.1" + "yajra/laravel-datatables-oracle": "^10.0" }, "require-dev": { - "facade/ignition": "^2.5", - "fakerphp/faker": "^1.9.1", - "laravel/sail": "^1.0.1", - "mockery/mockery": "^1.4.2", - "nunomaduro/collision": "^5.0", - "phpunit/phpunit": "^9.3.3", - "barryvdh/laravel-debugbar": "*", - "barryvdh/laravel-ide-helper": "*" + "barryvdh/laravel-debugbar": "^3.13", + "barryvdh/laravel-ide-helper": "^3.1", + "fakerphp/faker": "^1.23", + "laravel/boost": "^1.8", + "laravel/sail": "^1.29", + "mockery/mockery": "^1.6", + "nunomaduro/collision": "^7.0", + "phpunit/phpunit": "^10.5", + "spatie/laravel-ignition": "^2.0" }, "autoload": { "files": [ "app/helpers.php" ], - "classmap": [ - "database/seeds", - "database/factories" - ], "psr-4": { - "App\\": "app/" + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeds/" } }, "autoload-dev": { @@ -69,17 +107,12 @@ }, "extra": { "laravel": { - "dont-discover": [ - ] + "dont-discover": [] } }, "scripts": { "post-update-cmd": [ - "php artisan clear-compiled", - "Illuminate\\Foundation\\ComposerScripts::postUpdate", - "php artisan ide-helper:generate", - "php artisan ide-helper:meta", - "php artisan ide-helper:models" + "php artisan clear-compiled" ], "post-root-package-install": [ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" @@ -88,14 +121,16 @@ "@php artisan key:generate" ], "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover" + "@php artisan package:discover --ansi" ] }, "config": { "optimize-autoloader": true, "preferred-install": "dist", - "sort-packages": true + "sort-packages": true, + "allow-plugins": { + "php-http/discovery": true + } }, "minimum-stability": "dev", "prefer-stable": true diff --git a/composer.lock b/composer.lock old mode 100755 new mode 100644 index 217b9a7..9d5af6e --- a/composer.lock +++ b/composer.lock @@ -4,39 +4,101 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ec3aa7b85348a4bdb5f7b43f409003b5", + "content-hash": "477420f7285a4f55e4c9437d2ed8a9cd", "packages": [ { - "name": "barryvdh/laravel-dompdf", - "version": "v0.8.6", + "name": "bacon/bacon-qr-code", + "version": "v3.1.1", "source": { "type": "git", - "url": "https://github.com/barryvdh/laravel-dompdf.git", - "reference": "d7108f78cf5254a2d8c224542967f133e5a6d4e8" + "url": "https://github.com/Bacon/BaconQrCode.git", + "reference": "4da2233e72eeecd9be3b62e0dc2cc9ed8e2e31c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/d7108f78cf5254a2d8c224542967f133e5a6d4e8", - "reference": "d7108f78cf5254a2d8c224542967f133e5a6d4e8", + "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/4da2233e72eeecd9be3b62e0dc2cc9ed8e2e31c2", + "reference": "4da2233e72eeecd9be3b62e0dc2cc9ed8e2e31c2", "shasum": "" }, "require": { - "dompdf/dompdf": "^0.8", - "illuminate/support": "^5.5|^6|^7", - "php": ">=7" + "dasprid/enum": "^1.0.3", + "ext-iconv": "*", + "php": "^8.1" + }, + "require-dev": { + "phly/keep-a-changelog": "^2.12", + "phpunit/phpunit": "^10.5.11 || ^11.0.4", + "spatie/phpunit-snapshot-assertions": "^5.1.5", + "spatie/pixelmatch-php": "^1.2.0", + "squizlabs/php_codesniffer": "^3.9" + }, + "suggest": { + "ext-imagick": "to generate QR code images" + }, + "type": "library", + "autoload": { + "psr-4": { + "BaconQrCode\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "https://dasprids.de/", + "role": "Developer" + } + ], + "description": "BaconQrCode is a QR code generator for PHP.", + "homepage": "https://github.com/Bacon/BaconQrCode", + "support": { + "issues": "https://github.com/Bacon/BaconQrCode/issues", + "source": "https://github.com/Bacon/BaconQrCode/tree/v3.1.1" + }, + "time": "2026-04-05T21:06:35+00:00" + }, + { + "name": "barryvdh/laravel-dompdf", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/laravel-dompdf.git", + "reference": "c96f90c97666cebec154ca1ffb67afed372114d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/c96f90c97666cebec154ca1ffb67afed372114d8", + "reference": "c96f90c97666cebec154ca1ffb67afed372114d8", + "shasum": "" + }, + "require": { + "dompdf/dompdf": "^2.0.7", + "illuminate/support": "^6|^7|^8|^9|^10|^11", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "larastan/larastan": "^1.0|^2.7.0", + "orchestra/testbench": "^4|^5|^6|^7|^8|^9", + "phpro/grumphp": "^1 || ^2.5", + "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "0.8-dev" - }, "laravel": { + "aliases": { + "PDF": "Barryvdh\\DomPDF\\Facade\\Pdf", + "Pdf": "Barryvdh\\DomPDF\\Facade\\Pdf" + }, "providers": [ "Barryvdh\\DomPDF\\ServiceProvider" - ], - "aliases": { - "PDF": "Barryvdh\\DomPDF\\Facade" - } + ] + }, + "branch-alias": { + "dev-master": "2.0-dev" } }, "autoload": { @@ -60,25 +122,168 @@ "laravel", "pdf" ], - "time": "2020-02-25T20:44:34+00:00" + "support": { + "issues": "https://github.com/barryvdh/laravel-dompdf/issues", + "source": "https://github.com/barryvdh/laravel-dompdf/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2024-04-25T13:16:04+00:00" }, { - "name": "cocur/slugify", - "version": "v4.0.0", + "name": "brick/math", + "version": "0.12.3", "source": { "type": "git", - "url": "https://github.com/cocur/slugify.git", - "reference": "3f1ffc300f164f23abe8b64ffb3f92d35cec8307" + "url": "https://github.com/brick/math.git", + "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cocur/slugify/zipball/3f1ffc300f164f23abe8b64ffb3f92d35cec8307", - "reference": "3f1ffc300f164f23abe8b64ffb3f92d35cec8307", + "url": "https://api.github.com/repos/brick/math/zipball/866551da34e9a618e64a819ee1e01c20d8a588ba", + "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^10.1", + "vimeo/psalm": "6.8.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "bignumber", + "brick", + "decimal", + "integer", + "math", + "mathematics", + "rational" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.12.3" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2025-02-28T13:11:00+00:00" + }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "doctrine/dbal": "<3.7.0 || >=4.0.0" + }, + "require-dev": { + "doctrine/dbal": "^3.7.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2023-12-11T17:09:12+00:00" + }, + { + "name": "cocur/slugify", + "version": "v4.7.1", + "source": { + "type": "git", + "url": "https://github.com/cocur/slugify.git", + "reference": "a860dab2b9f5f37775fc6414d4f049434848165f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cocur/slugify/zipball/a860dab2b9f5f37775fc6414d4f049434848165f", + "reference": "a860dab2b9f5f37775fc6414d4f049434848165f", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": ">=7.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "conflict": { "symfony/config": "<3.4 || >=4,<4.3", @@ -87,18 +292,18 @@ "twig/twig": "<2.12.1" }, "require-dev": { - "laravel/framework": "~5.1", + "laravel/framework": "^5.0|^6.0|^7.0|^8.0", "latte/latte": "~2.2", "league/container": "^2.2.0", "mikey179/vfsstream": "~1.6.8", "mockery/mockery": "^1.3", "nette/di": "~2.4", - "phpunit/phpunit": "^5.7.27", "pimple/pimple": "~1.1", "plumphp/plum": "~0.1", - "symfony/config": "^3.4 || ^4.3 || ^5.0", - "symfony/dependency-injection": "^3.4 || ^4.3 || ^5.0", - "symfony/http-kernel": "^3.4 || ^4.3 || ^5.0", + "symfony/config": "^3.4 || ^4.3 || ^5.0 || ^6.0", + "symfony/dependency-injection": "^3.4 || ^4.3 || ^5.0 || ^6.0", + "symfony/http-kernel": "^3.4 || ^4.3 || ^5.0 || ^6.0", + "symfony/phpunit-bridge": "^5.4 || ^6.0", "twig/twig": "^2.12.1 || ~3.0", "zendframework/zend-modulemanager": "~2.2", "zendframework/zend-servicemanager": "~2.2", @@ -130,35 +335,194 @@ "slug", "slugify" ], - "time": "2019-12-14T13:04:14+00:00" + "support": { + "issues": "https://github.com/cocur/slugify/issues", + "source": "https://github.com/cocur/slugify/tree/v4.7.1" + }, + "time": "2025-11-27T18:57:36+00:00" }, { - "name": "cviebrock/eloquent-sluggable", - "version": "6.0.3", + "name": "composer/pcre", + "version": "3.3.2", "source": { "type": "git", - "url": "https://github.com/cviebrock/eloquent-sluggable.git", - "reference": "ebaefa01b810b93d0c33a0465eb6c53c38340388" + "url": "https://github.com/composer/pcre.git", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cviebrock/eloquent-sluggable/zipball/ebaefa01b810b93d0c33a0465eb6c53c38340388", - "reference": "ebaefa01b810b93d0c33a0465eb6c53c38340388", + "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", "shasum": "" }, "require": { - "cocur/slugify": "^4.0", - "illuminate/config": "^6.0", - "illuminate/database": "^6.0", - "illuminate/support": "^6.0", - "php": "^7.2" + "php": "^7.4 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<1.11.10" }, "require-dev": { - "limedeck/phpunit-detailed-printer": "^5.0", - "mockery/mockery": "^1.2.3", - "orchestra/database": "4.*", - "orchestra/testbench": "4.*", - "phpunit/phpunit": "^8.0" + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", + "phpunit/phpunit": "^8 || ^9" + }, + "type": "library", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.3.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-11-12T16:29:46+00:00" + }, + { + "name": "composer/semver", + "version": "3.4.4", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.4" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + } + ], + "time": "2025-08-20T19:15:30+00:00" + }, + { + "name": "cviebrock/eloquent-sluggable", + "version": "10.0.0", + "source": { + "type": "git", + "url": "https://github.com/cviebrock/eloquent-sluggable.git", + "reference": "92f456b10337ca97c1cccfcc853a1cf51d2cedd0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cviebrock/eloquent-sluggable/zipball/92f456b10337ca97c1cccfcc853a1cf51d2cedd0", + "reference": "92f456b10337ca97c1cccfcc853a1cf51d2cedd0", + "shasum": "" + }, + "require": { + "cocur/slugify": "^4.3", + "illuminate/config": "^10.0", + "illuminate/database": "^10.0", + "illuminate/support": "^10.0", + "php": "^8.1" + }, + "require-dev": { + "limedeck/phpunit-detailed-printer": "^6.0", + "mockery/mockery": "^1.4.4", + "orchestra/testbench": "^8.0", + "pestphp/pest": "2.x-dev" }, "type": "library", "extra": { @@ -193,30 +557,90 @@ "slug", "sluggable" ], - "time": "2020-02-09T23:06:22+00:00" + "support": { + "issues": "https://github.com/cviebrock/eloquent-sluggable/issues", + "source": "https://github.com/cviebrock/eloquent-sluggable/tree/10.0.0" + }, + "funding": [ + { + "url": "https://github.com/cviebrock", + "type": "github" + } + ], + "time": "2023-02-16T23:01:35+00:00" }, { - "name": "defuse/php-encryption", - "version": "v2.2.1", + "name": "dasprid/enum", + "version": "1.0.7", "source": { "type": "git", - "url": "https://github.com/defuse/php-encryption.git", - "reference": "0f407c43b953d571421e0020ba92082ed5fb7620" + "url": "https://github.com/DASPRiD/Enum.git", + "reference": "b5874fa9ed0043116c72162ec7f4fb50e02e7cce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/defuse/php-encryption/zipball/0f407c43b953d571421e0020ba92082ed5fb7620", - "reference": "0f407c43b953d571421e0020ba92082ed5fb7620", + "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/b5874fa9ed0043116c72162ec7f4fb50e02e7cce", + "reference": "b5874fa9ed0043116c72162ec7f4fb50e02e7cce", + "shasum": "" + }, + "require": { + "php": ">=7.1 <9.0" + }, + "require-dev": { + "phpunit/phpunit": "^7 || ^8 || ^9 || ^10 || ^11", + "squizlabs/php_codesniffer": "*" + }, + "type": "library", + "autoload": { + "psr-4": { + "DASPRiD\\Enum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "https://dasprids.de/", + "role": "Developer" + } + ], + "description": "PHP 7.1 enum implementation", + "keywords": [ + "enum", + "map" + ], + "support": { + "issues": "https://github.com/DASPRiD/Enum/issues", + "source": "https://github.com/DASPRiD/Enum/tree/1.0.7" + }, + "time": "2025-09-16T12:23:56+00:00" + }, + { + "name": "defuse/php-encryption", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/defuse/php-encryption.git", + "reference": "f53396c2d34225064647a05ca76c1da9d99e5828" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/defuse/php-encryption/zipball/f53396c2d34225064647a05ca76c1da9d99e5828", + "reference": "f53396c2d34225064647a05ca76c1da9d99e5828", "shasum": "" }, "require": { "ext-openssl": "*", "paragonie/random_compat": ">= 2", - "php": ">=5.4.0" + "php": ">=5.6.0" }, "require-dev": { - "nikic/php-parser": "^2.0|^3.0|^4.0", - "phpunit/phpunit": "^4|^5" + "phpunit/phpunit": "^5|^6|^7|^8|^9|^10", + "yoast/phpunit-polyfills": "^2.0.0" }, "bin": [ "bin/generate-defuse-key" @@ -256,80 +680,45 @@ "security", "symmetric key cryptography" ], - "time": "2018-07-24T23:27:56+00:00" + "support": { + "issues": "https://github.com/defuse/php-encryption/issues", + "source": "https://github.com/defuse/php-encryption/tree/v2.4.0" + }, + "time": "2023-06-19T06:10:36+00:00" }, { - "name": "dnoegel/php-xdg-base-dir", - "version": "v0.1.1", + "name": "dflydev/dot-access-data", + "version": "v3.0.3", "source": { "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f", + "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.1 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "XdgBaseDir\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "implementation of xdg base directory specification for php", - "time": "2019-12-04T15:06:13+00:00" - }, - { - "name": "doctrine/cache", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/382e7f4db9a12dc6c19431743a2b096041bcdd62", - "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62", - "shasum": "" - }, - "require": { - "php": "~7.1" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", - "doctrine/coding-standard": "^6.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0", - "predis/predis": "~1.0" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + "Dflydev\\DotAccessData\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -338,69 +727,138 @@ ], "authors": [ { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" }, { - "name": "Roman Borschel", - "email": "roman@code-factory.org" + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" }, { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" }, { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" } ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" + "access", + "data", + "dot", + "notation" ], - "time": "2019-11-29T15:36:20+00:00" + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3" + }, + "time": "2024-07-08T12:26:09+00:00" + }, + { + "name": "digital-bird/shoppingcart", + "version": "3.1.0", + "dist": { + "type": "path", + "url": "./packages/digital-bird/shoppingcart", + "reference": "e983be562e05c3543b54987a597b346a38a355fa" + }, + "require": { + "illuminate/events": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/session": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.0", + "orchestra/testbench": "~3.1", + "phpunit/phpunit": "~5.0|~6.0|~7.0|~8.0|~9,0" + }, + "suggest": { + "gloudemans/notify": "Simple flash notifications for Laravel" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Gloudemans\\Shoppingcart\\ShoppingcartServiceProvider" + ], + "aliases": { + "Cart": "Gloudemans\\Shoppingcart\\Facades\\Cart" + } + } + }, + "autoload": { + "psr-4": { + "Gloudemans\\Shoppingcart\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Gloudemans\\Tests\\Shoppingcart\\": "tests/" + } + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Rob Gloudemans", + "email": "info@robgloudemans.nl" + } + ], + "description": "Laravel Shoppingcart", + "keywords": [ + "laravel", + "shoppingcart" + ], + "transport-options": { + "symlink": true, + "relative": true + } }, { "name": "doctrine/dbal", - "version": "2.10.2", + "version": "3.10.5", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8" + "reference": "95d84866bf3c04b2ddca1df7c049714660959aef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/aab745e7b6b2de3b47019da81e7225e14dcfdac8", - "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/95d84866bf3c04b2ddca1df7c049714660959aef", + "reference": "95d84866bf3c04b2ddca1df7c049714660959aef", "shasum": "" }, "require": { - "doctrine/cache": "^1.0", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.2" + "composer-runtime-api": "^2", + "doctrine/deprecations": "^0.5.3|^1", + "doctrine/event-manager": "^1|^2", + "php": "^7.4 || ^8.0", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" + }, + "conflict": { + "doctrine/cache": "< 1.11" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "jetbrains/phpstorm-stubs": "^2019.1", - "nikic/php-parser": "^4.4", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^8.4.1", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "^3.11" + "doctrine/cache": "^1.11|^2.0", + "doctrine/coding-standard": "14.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "2.1.30", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "9.6.34", + "slevomat/coding-standard": "8.27.1", + "squizlabs/php_codesniffer": "4.0.1", + "symfony/cache": "^5.4|^6.0|^7.0|^8.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0|^8.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -409,15 +867,9 @@ "bin/doctrine-dbal" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.10.x-dev", - "dev-develop": "3.0.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + "Doctrine\\DBAL\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -460,11 +912,14 @@ "queryobject", "sasql", "sql", - "sqlanywhere", "sqlite", "sqlserver", "sqlsrv" ], + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/3.10.5" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -479,41 +934,86 @@ "type": "tidelift" } ], - "time": "2020-04-20T17:19:26+00:00" + "time": "2026-02-24T08:03:57+00:00" }, { - "name": "doctrine/event-manager", - "version": "1.1.0", + "name": "doctrine/deprecations", + "version": "1.1.6", "source": { "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "629572819973f13486371cb611386eb17851e85c" + "url": "https://github.com/doctrine/deprecations.git", + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c", - "reference": "629572819973f13486371cb611386eb17851e85c", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "conflict": { - "doctrine/common": "<2.9@dev" + "phpunit/phpunit": "<=7.5 || >=14" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" + "doctrine/coding-standard": "^9 || ^12 || ^14", + "phpstan/phpstan": "1.4.10 || 2.1.30", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12.4 || ^13.0", + "psr/log": "^1 || ^2 || ^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Deprecations\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.6" + }, + "time": "2026-02-07T07:09:04+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "dda33921b198841ca8dbad2eaa5d4d34769d18cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/dda33921b198841ca8dbad2eaa5d4d34769d18cf", + "reference": "dda33921b198841ca8dbad2eaa5d4d34769d18cf", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/common": "<2.9" + }, + "require-dev": { + "doctrine/coding-standard": "^14", + "phpdocumentor/guides-cli": "^1.4", + "phpstan/phpstan": "^2.1.32", + "phpunit/phpunit": "^10.5.58" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -555,42 +1055,54 @@ "event system", "events" ], - "time": "2019-11-10T09:48:07+00:00" + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/2.1.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", + "type": "tidelift" + } + ], + "time": "2026-01-29T07:11:08+00:00" }, { "name": "doctrine/inflector", - "version": "1.4.1", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "4111f6853aea6f28b2b1dcfdde83d12dd3d5e6e3" + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/4111f6853aea6f28b2b1dcfdde83d12dd3d5e6e3", - "reference": "4111f6853aea6f28b2b1dcfdde83d12dd3d5e6e3", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", "shasum": "" }, "require": { - "php": "^7.2" + "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^7.0", - "phpstan/phpstan": "^0.11", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-strict-rules": "^0.11", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector", - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + "Doctrine\\Inflector\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -633,6 +1145,10 @@ "uppercase", "words" ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.1.0" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -647,39 +1163,36 @@ "type": "tidelift" } ], - "time": "2020-05-09T15:09:09+00:00" + "time": "2025-08-10T19:31:58+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6" + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", - "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", "shasum": "" }, "require": { - "php": "^7.2" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.21" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -709,44 +1222,62 @@ "parser", "php" ], - "time": "2019-10-30T14:39:59+00:00" + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2024-02-05T11:56:58+00:00" }, { "name": "dompdf/dompdf", - "version": "v0.8.5", + "version": "v2.0.8", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56" + "reference": "c20247574601700e1f7c8dab39310fca1964dc52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/6782abfc090b132134cd6cea0ec6d76f0fce2c56", - "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/c20247574601700e1f7c8dab39310fca1964dc52", + "reference": "c20247574601700e1f7c8dab39310fca1964dc52", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", - "phenx/php-font-lib": "^0.5.1", - "phenx/php-svg-lib": "^0.3.3", - "php": "^7.1" + "masterminds/html5": "^2.0", + "phenx/php-font-lib": ">=0.5.4 <1.0.0", + "phenx/php-svg-lib": ">=0.5.2 <1.0.0", + "php": "^7.1 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^7.5", + "ext-json": "*", + "ext-zip": "*", + "mockery/mockery": "^1.3", + "phpunit/phpunit": "^7.5 || ^8 || ^9", "squizlabs/php_codesniffer": "^3.5" }, "suggest": { "ext-gd": "Needed to process images", "ext-gmagick": "Improves image processing performance", - "ext-imagick": "Improves image processing performance" + "ext-imagick": "Improves image processing performance", + "ext-zlib": "Needed for pdf stream compression" }, "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "0.7-dev" - } - }, "autoload": { "psr-4": { "Dompdf\\": "src/" @@ -761,46 +1292,47 @@ ], "authors": [ { - "name": "Fabien Ménager", - "email": "fabien.menager@gmail.com" - }, - { - "name": "Brian Sweeney", - "email": "eclecticgeek@gmail.com" - }, - { - "name": "Gabriel Bull", - "email": "me@gabrielbull.com" + "name": "The Dompdf Community", + "homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md" } ], "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", "homepage": "https://github.com/dompdf/dompdf", - "time": "2020-02-20T03:52:51+00:00" + "support": { + "issues": "https://github.com/dompdf/dompdf/issues", + "source": "https://github.com/dompdf/dompdf/tree/v2.0.8" + }, + "time": "2024-04-29T13:06:17+00:00" }, { "name": "dragonmantank/cron-expression", - "version": "v2.3.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27" + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27", - "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^8.2|^8.3|^8.4|^8.5" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^6.4|^7.0" + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.32|^2.1.31", + "phpunit/phpunit": "^8.5.48|^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.x-dev" } }, "autoload": { @@ -813,11 +1345,6 @@ "MIT" ], "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, { "name": "Chris Tankersley", "email": "chris@ctankersley.com", @@ -829,31 +1356,40 @@ "cron", "schedule" ], - "time": "2019-03-31T00:38:28+00:00" + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2025-10-31T18:51:33+00:00" }, { "name": "egulias/email-validator", - "version": "2.1.17", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ade6887fd9bd74177769645ab5c474824f8a418a" + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ade6887fd9bd74177769645ab5c474824f8a418a", - "reference": "ade6887fd9bd74177769645ab5c474824f8a418a", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", "shasum": "" }, "require": { - "doctrine/lexer": "^1.0.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.10" + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "dominicsayers/isemail": "^3.0.7", - "phpunit/phpunit": "^4.8.36|^7.5.15", - "satooshi/php-coveralls": "^1.0.1" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -861,12 +1397,12 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { "psr-4": { - "Egulias\\EmailValidator\\": "EmailValidator" + "Egulias\\EmailValidator\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -887,81 +1423,107 @@ "validation", "validator" ], - "time": "2020-02-13T22:36:52+00:00" + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2025-03-06T22:45:56+00:00" }, { - "name": "fideloper/proxy", - "version": "4.3.0", + "name": "ezyang/htmlpurifier", + "version": "v4.19.0", "source": { "type": "git", - "url": "https://github.com/fideloper/TrustedProxy.git", - "reference": "ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a" + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a", - "reference": "ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/b287d2a16aceffbf6e0295559b39662612b77fcf", + "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf", "shasum": "" }, "require": { - "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0", - "php": ">=5.4.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "require-dev": { - "illuminate/http": "^5.0|^6.0|^7.0|^8.0", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.0" + "cerdic/css-tidy": "^1.7 || ^2.0", + "simpletest/simpletest": "dev-master" + }, + "suggest": { + "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.", + "ext-bcmath": "Used for unit conversion and imagecrash protection", + "ext-iconv": "Converts text to and from non-UTF-8 encodings", + "ext-tidy": "Used for pretty-printing HTML" }, "type": "library", - "extra": { - "laravel": { - "providers": [ - "Fideloper\\Proxy\\TrustedProxyServiceProvider" - ] - } - }, "autoload": { - "psr-4": { - "Fideloper\\Proxy\\": "src/" - } + "files": [ + "library/HTMLPurifier.composer.php" + ], + "psr-0": { + "HTMLPurifier": "library/" + }, + "exclude-from-classmap": [ + "/library/HTMLPurifier/Language/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "LGPL-2.1-or-later" ], "authors": [ { - "name": "Chris Fidao", - "email": "fideloper@gmail.com" + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" } ], - "description": "Set trusted proxies for Laravel", + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", "keywords": [ - "load balancing", - "proxy", - "trusted proxy" + "html" ], - "time": "2020-02-22T01:51:47+00:00" + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.19.0" + }, + "time": "2025-10-17T16:34:55+00:00" }, { "name": "firebase/php-jwt", - "version": "v5.2.0", + "version": "6.x-dev", "source": { "type": "git", - "url": "https://github.com/firebase/php-jwt.git", - "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb" + "url": "https://github.com/googleapis/php-jwt.git", + "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/feb0e820b8436873675fd3aca04f3728eb2185cb", - "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb", + "url": "https://api.github.com/repos/googleapis/php-jwt/zipball/d1e91ecf8c598d073d0995afa8cd5c75c6e19e66", + "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^8.0" }, "require-dev": { - "phpunit/phpunit": ">=4.8 <=9" + "guzzlehttp/guzzle": "^7.4", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psr/cache": "^2.0||^3.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" + }, + "suggest": { + "ext-sodium": "Support EdDSA (Ed25519) signatures", + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" }, "type": "library", "autoload": { @@ -991,182 +1553,438 @@ "jwt", "php" ], - "time": "2020-03-25T18:49:23+00:00" + "support": { + "issues": "https://github.com/googleapis/php-jwt/issues", + "source": "https://github.com/googleapis/php-jwt/tree/v6.11.1" + }, + "time": "2025-04-09T20:32:01+00:00" }, { - "name": "guzzlehttp/guzzle", - "version": "6.5.3", + "name": "fruitcake/php-cors", + "version": "v1.4.0", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e" + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/aab4ebd862aa7d04f01a4b51849d657db56d882e", - "reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", "shasum": "" }, "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.11" + "php": "^8.1", + "symfony/http-foundation": "^5.4|^6.4|^7.3|^8" }, "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" - }, - "suggest": { - "psr/log": "Required for using the Log middleware" + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.5-dev" + "dev-master": "1.3-dev" } }, "autoload": { "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + "Fruitcake\\Cors\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2025-12-03T09:33:47+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.4", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:43:20+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.10.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^2.3", + "guzzlehttp/psr7": "^2.8", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "guzzle/client-integration-tests": "3.0.2", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", "keywords": [ "client", "curl", "framework", "http", "http client", + "psr-18", + "psr-7", "rest", "web service" ], - "time": "2020-04-18T10:38:46+00:00" + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.10.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2025-08-23T22:36:01+00:00" }, { "name": "guzzlehttp/promises", - "version": "v1.3.1", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + "reference": "481557b130ef3790cf82b713667b43030dc9c957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", + "reference": "481557b130ef3790cf82b713667b43030dc9c957", "shasum": "" }, "require": { - "php": ">=5.5.0" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.0" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.4-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { "psr-4": { "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], "description": "Guzzle promises library", "keywords": [ "promise" ], - "time": "2016-12-20T10:07:11+00:00" + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.3.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2025-08-22T14:34:08+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.6.1", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a" + "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/7d0ed42f28e42d61352a7a79de682e5e67fec884", + "reference": "7d0ed42f28e42d61352a7a79de682e5e67fec884", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" }, "provide": { + "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "jshttp/mime-db": "1.54.0.1", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { - "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.6-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { "psr-4": { "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, { "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], "description": "PSR-7 message implementation that also provides common utility methods", @@ -1180,30 +1998,134 @@ "uri", "url" ], - "time": "2019-07-01T23:21:34+00:00" + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.9.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2026-03-10T16:41:02+00:00" }, { - "name": "intervention/image", - "version": "2.5.1", + "name": "guzzlehttp/uri-template", + "version": "v1.0.5", "source": { "type": "git", - "url": "https://github.com/Intervention/image.git", - "reference": "abbf18d5ab8367f96b3205ca3c89fb2fa598c69e" + "url": "https://github.com/guzzle/uri-template.git", + "reference": "4f4bbd4e7172148801e76e3decc1e559bdee34e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/abbf18d5ab8367f96b3205ca3c89fb2fa598c69e", - "reference": "abbf18d5ab8367f96b3205ca3c89fb2fa598c69e", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/4f4bbd4e7172148801e76e3decc1e559bdee34e1", + "reference": "4f4bbd4e7172148801e76e3decc1e559bdee34e1", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2025-08-22T14:27:06+00:00" + }, + { + "name": "intervention/image", + "version": "2.7.2", + "source": { + "type": "git", + "url": "https://github.com/Intervention/image.git", + "reference": "04be355f8d6734c826045d02a1079ad658322dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", + "reference": "04be355f8d6734c826045d02a1079ad658322dad", "shasum": "" }, "require": { "ext-fileinfo": "*", - "guzzlehttp/psr7": "~1.1", + "guzzlehttp/psr7": "~1.1 || ^2.0", "php": ">=5.4.0" }, "require-dev": { "mockery/mockery": "~0.9.2", - "phpunit/phpunit": "^4.8 || ^5.7" + "phpunit/phpunit": "^4.8 || ^5.7 || ^7.5.15" }, "suggest": { "ext-gd": "to use GD library based image processing.", @@ -1212,16 +2134,16 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - }, "laravel": { - "providers": [ - "Intervention\\Image\\ImageServiceProvider" - ], "aliases": { "Image": "Intervention\\Image\\Facades\\Image" - } + }, + "providers": [ + "Intervention\\Image\\ImageServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "2.4-dev" } }, "autoload": { @@ -1236,8 +2158,8 @@ "authors": [ { "name": "Oliver Vogel", - "email": "oliver@olivervogel.com", - "homepage": "http://olivervogel.com/" + "email": "oliver@intervention.io", + "homepage": "https://intervention.io/" } ], "description": "Image handling and manipulation library with support for Laravel integration", @@ -1250,7 +2172,21 @@ "thumbnail", "watermark" ], - "time": "2019-11-02T09:15:47+00:00" + "support": { + "issues": "https://github.com/Intervention/image/issues", + "source": "https://github.com/Intervention/image/tree/2.7.2" + }, + "funding": [ + { + "url": "https://paypal.me/interventionio", + "type": "custom" + }, + { + "url": "https://github.com/Intervention", + "type": "github" + } + ], + "time": "2022-05-21T17:30:32+00:00" }, { "name": "iqcontent/laravel-filemanager", @@ -1264,13 +2200,13 @@ "cviebrock/eloquent-sluggable": "*", "ext-exif": "*", "ext-fileinfo": "*", - "illuminate/config": "5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ^6.0", - "illuminate/container": "5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ^6.0", - "illuminate/filesystem": "5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ^6.0", - "illuminate/http": "5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ^6.0", - "illuminate/support": "5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ^6.0", + "illuminate/config": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/container": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/filesystem": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", "intervention/image": "2.*", - "php": ">=7.1.3" + "php": ">=8.1" }, "require-dev": { "mockery/mockery": "^0.9.9", @@ -1321,7 +2257,8 @@ "upload" ], "transport-options": { - "symlink": true + "symlink": true, + "relative": true } }, { @@ -1347,16 +2284,16 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - }, "laravel": { - "providers": [ - "Jenssegers\\Date\\DateServiceProvider" - ], "aliases": { "Date": "Jenssegers\\Date\\Date" - } + }, + "providers": [ + "Jenssegers\\Date\\DateServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "3.1-dev" } }, "autoload": { @@ -1385,6 +2322,10 @@ "time", "translation" ], + "support": { + "issues": "https://github.com/jenssegers/date/issues", + "source": "https://github.com/jenssegers/date/tree/master" + }, "funding": [ { "url": "https://github.com/jenssegers", @@ -1397,197 +2338,46 @@ ], "time": "2020-04-28T06:35:54+00:00" }, - { - "name": "laminas/laminas-diactoros", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "5ab185dba63ec655a2380c97711b09adc7061f89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/5ab185dba63ec655a2380c97711b09adc7061f89", - "reference": "5ab185dba63ec655a2380c97711b09adc7061f89", - "shasum": "" - }, - "require": { - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^7.1", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" - }, - "conflict": { - "phpspec/prophecy": "<1.9.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "replace": { - "zendframework/zend-diactoros": "^2.2.1" - }, - "require-dev": { - "ext-curl": "*", - "ext-dom": "*", - "ext-libxml": "*", - "http-interop/http-factory-tests": "^0.5.0", - "laminas/laminas-coding-standard": "~1.0.0", - "php-http/psr7-integration-tests": "^1.0", - "phpunit/phpunit": "^7.5.18" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev", - "dev-develop": "2.4.x-dev" - }, - "laminas": { - "config-provider": "Laminas\\Diactoros\\ConfigProvider", - "module": "Laminas\\Diactoros" - } - }, - "autoload": { - "files": [ - "src/functions/create_uploaded_file.php", - "src/functions/marshal_headers_from_sapi.php", - "src/functions/marshal_method_from_sapi.php", - "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", - "src/functions/normalize_server.php", - "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php", - "src/functions/create_uploaded_file.legacy.php", - "src/functions/marshal_headers_from_sapi.legacy.php", - "src/functions/marshal_method_from_sapi.legacy.php", - "src/functions/marshal_protocol_version_from_sapi.legacy.php", - "src/functions/marshal_uri_from_sapi.legacy.php", - "src/functions/normalize_server.legacy.php", - "src/functions/normalize_uploaded_files.legacy.php", - "src/functions/parse_cookie_header.legacy.php" - ], - "psr-4": { - "Laminas\\Diactoros\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "PSR HTTP Message implementations", - "homepage": "https://laminas.dev", - "keywords": [ - "http", - "laminas", - "psr", - "psr-7" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-04-27T17:07:01+00:00" - }, - { - "name": "laminas/laminas-zendframework-bridge", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "bfbbdb6c998d50dbf69d2187cb78a5f1fa36e1e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/bfbbdb6c998d50dbf69d2187cb78a5f1fa36e1e9", - "reference": "bfbbdb6c998d50dbf69d2187cb78a5f1fa36e1e9", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev", - "dev-develop": "1.1.x-dev" - }, - "laminas": { - "module": "Laminas\\ZendFrameworkBridge" - } - }, - "autoload": { - "files": [ - "src/autoload.php" - ], - "psr-4": { - "Laminas\\ZendFrameworkBridge\\": "src//" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Alias legacy ZF class names to Laminas Project equivalents.", - "keywords": [ - "ZendFramework", - "autoloading", - "laminas", - "zf" - ], - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-04-03T16:01:00+00:00" - }, { "name": "laracasts/flash", - "version": "3.1", + "version": "3.2.6", "source": { "type": "git", "url": "https://github.com/laracasts/flash.git", - "reference": "150d4348477db31b9a93ccd07f713e3d0513b3bf" + "reference": "4fc18fed3152d8910ed64589b0f5d049fd6a0806" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laracasts/flash/zipball/150d4348477db31b9a93ccd07f713e3d0513b3bf", - "reference": "150d4348477db31b9a93ccd07f713e3d0513b3bf", + "url": "https://api.github.com/repos/laracasts/flash/zipball/4fc18fed3152d8910ed64589b0f5d049fd6a0806", + "reference": "4fc18fed3152d8910ed64589b0f5d049fd6a0806", "shasum": "" }, "require": { - "illuminate/support": "~5.0|^6.0|^7.0", + "illuminate/support": "~5.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0|^13.0", "php": ">=5.4.0" }, "require-dev": { "mockery/mockery": "dev-master", - "phpunit/phpunit": "^6.1" + "phpunit/phpunit": "^6.1|^9.5.10|^10.5" }, "type": "library", "extra": { "laravel": { - "providers": [ - "Laracasts\\Flash\\FlashServiceProvider" - ], "aliases": { "Flash": "Laracasts\\Flash\\Flash" - } + }, + "providers": [ + "Laracasts\\Flash\\FlashServiceProvider" + ] } }, "autoload": { - "psr-0": { - "Laracasts\\Flash": "src/" - }, "files": [ "src/Laracasts/Flash/functions.php" - ] + ], + "psr-0": { + "Laracasts\\Flash": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1600,58 +2390,85 @@ } ], "description": "Easy flash notifications", - "time": "2020-03-03T15:50:52+00:00" + "support": { + "source": "https://github.com/laracasts/flash/tree/3.2.6" + }, + "time": "2026-03-25T17:55:04+00:00" }, { "name": "laravel/framework", - "version": "v6.18.13", + "version": "10.50.2", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "39519d03237a81380e2126d667e898e2922db444" + "reference": "3ff39b7a9b83e633383ec9b019827ed54b6d38bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/39519d03237a81380e2126d667e898e2922db444", - "reference": "39519d03237a81380e2126d667e898e2922db444", + "url": "https://api.github.com/repos/laravel/framework/zipball/3ff39b7a9b83e633383ec9b019827ed54b6d38bc", + "reference": "3ff39b7a9b83e633383ec9b019827ed54b6d38bc", "shasum": "" }, "require": { - "doctrine/inflector": "^1.1", - "dragonmantank/cron-expression": "^2.0", - "egulias/email-validator": "^2.1.10", - "ext-json": "*", + "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.3.2", + "egulias/email-validator": "^3.2.1|^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", "ext-mbstring": "*", "ext-openssl": "*", - "league/commonmark": "^1.3", - "league/flysystem": "^1.0.8", - "monolog/monolog": "^1.12|^2.0", - "nesbot/carbon": "^2.0", - "opis/closure": "^3.1", - "php": "^7.2", - "psr/container": "^1.0", - "psr/simple-cache": "^1.0", - "ramsey/uuid": "^3.7", - "swiftmailer/swiftmailer": "^6.0", - "symfony/console": "^4.3.4", - "symfony/debug": "^4.3.4", - "symfony/finder": "^4.3.4", - "symfony/http-foundation": "^4.3.4", - "symfony/http-kernel": "^4.3.4", - "symfony/process": "^4.3.4", - "symfony/routing": "^4.3.4", - "symfony/var-dumper": "^4.3.4", - "tijsverkoyen/css-to-inline-styles": "^2.2.1", - "vlucas/phpdotenv": "^3.3" + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.2", + "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.1.9", + "laravel/serializable-closure": "^1.3", + "league/commonmark": "^2.2.1", + "league/flysystem": "^3.8.0", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^2.67", + "nunomaduro/termwind": "^1.13", + "php": "^8.1", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^6.2", + "symfony/error-handler": "^6.2", + "symfony/finder": "^6.2", + "symfony/http-foundation": "^6.4", + "symfony/http-kernel": "^6.2", + "symfony/mailer": "^6.2", + "symfony/mime": "^6.2", + "symfony/process": "^6.2", + "symfony/routing": "^6.2", + "symfony/uid": "^6.2", + "symfony/var-dumper": "^6.2", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^2.0" }, "conflict": { + "carbonphp/carbon-doctrine-types": ">=3.0", + "doctrine/dbal": ">=4.0", + "mockery/mockery": "1.6.8", + "phpunit/phpunit": ">=11.0.0", "tightenco/collect": "<5.5.33" }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, "replace": { "illuminate/auth": "self.version", "illuminate/broadcasting": "self.version", "illuminate/bus": "self.version", "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/conditionable": "self.version", "illuminate/config": "self.version", "illuminate/console": "self.version", "illuminate/container": "self.version", @@ -1664,70 +2481,104 @@ "illuminate/hashing": "self.version", "illuminate/http": "self.version", "illuminate/log": "self.version", + "illuminate/macroable": "self.version", "illuminate/mail": "self.version", "illuminate/notifications": "self.version", "illuminate/pagination": "self.version", "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", "illuminate/queue": "self.version", "illuminate/redis": "self.version", "illuminate/routing": "self.version", "illuminate/session": "self.version", "illuminate/support": "self.version", + "illuminate/testing": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", "illuminate/view": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "^3.0", - "doctrine/dbal": "^2.6", - "filp/whoops": "^2.4", - "guzzlehttp/guzzle": "^6.3|^7.0", - "league/flysystem-cached-adapter": "^1.0", - "mockery/mockery": "^1.3.1", - "moontoast/math": "^1.1", - "orchestra/testbench-core": "^4.0", + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.235.5", + "doctrine/dbal": "^3.5.1", + "ext-gmp": "*", + "fakerphp/faker": "^1.21", + "guzzlehttp/guzzle": "^7.5", + "league/flysystem-aws-s3-v3": "^3.0", + "league/flysystem-ftp": "^3.0", + "league/flysystem-path-prefixing": "^3.3", + "league/flysystem-read-only": "^3.3", + "league/flysystem-sftp-v3": "^3.0", + "mockery/mockery": "^1.5.1", + "nyholm/psr7": "^1.2", + "orchestra/testbench-core": "^8.23.4", "pda/pheanstalk": "^4.0", - "phpunit/phpunit": "^7.5.15|^8.4|^9.0", - "predis/predis": "^1.1.1", - "symfony/cache": "^4.3.4" + "phpstan/phpstan": "~1.11.11", + "phpunit/phpunit": "^10.0.7", + "predis/predis": "^2.0.2", + "symfony/cache": "^6.2", + "symfony/http-client": "^6.2.4", + "symfony/psr-http-message-bridge": "^2.0" }, "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "ext-ftp": "Required to use the Flysystem FTP driver.", "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", "ext-memcached": "Required to use the memcache cache driver.", - "ext-pcntl": "Required to use all features of the queue worker.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", "ext-posix": "Required to use all features of the queue worker.", "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", - "filp/whoops": "Required for friendly error pages in development (^2.4).", - "fzaninotto/faker": "Required to use the eloquent factory builder (^1.9.1).", - "guzzlehttp/guzzle": "Required to use the Mailgun mail driver and the ping methods on schedules (^6.0|^7.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", "laravel/tinker": "Required to use the tinker console command (^2.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", - "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", - "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", - "moontoast/math": "Required to use ordered UUIDs (^1.1).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", + "league/flysystem-read-only": "Required to use read-only disks (^3.3)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", + "mockery/mockery": "Required to use mocking (^1.5.1).", "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", + "predis/predis": "Required to use the predis connector (^2.0.2).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^4.3.4).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.2).", - "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.x-dev" + "dev-master": "10.x-dev" } }, "autoload": { "files": [ + "src/Illuminate/Collections/functions.php", + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" ], "psr-4": { - "Illuminate\\": "src/Illuminate/" + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -1746,33 +2597,38 @@ "framework", "laravel" ], - "time": "2020-05-05T15:53:49+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2026-02-15T14:12:07+00:00" }, { "name": "laravel/helpers", - "version": "v1.2.0", + "version": "v1.8.3", "source": { "type": "git", "url": "https://github.com/laravel/helpers.git", - "reference": "1f978fc5dad9f7f906b18242c654252615201de4" + "reference": "5915be977c7cc05fe2498d561b8c026ee56567dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/helpers/zipball/1f978fc5dad9f7f906b18242c654252615201de4", - "reference": "1f978fc5dad9f7f906b18242c654252615201de4", + "url": "https://api.github.com/repos/laravel/helpers/zipball/5915be977c7cc05fe2498d561b8c026ee56567dd", + "reference": "5915be977c7cc05fe2498d561b8c026ee56567dd", "shasum": "" }, "require": { - "illuminate/support": "~5.8.0|^6.0|^7.0", - "php": ">=7.1.3" + "illuminate/support": "~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0|^13.0", + "php": "^7.2.0|^8.0" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^7.0|^8.0|^9.0|^10.0|^11.0|^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -1791,7 +2647,7 @@ }, { "name": "Dries Vints", - "email": "dries.vints@gmail.com" + "email": "dries@laravel.com" } ], "description": "Provides backwards compatibility for helpers in the latest Laravel release.", @@ -1799,61 +2655,65 @@ "helpers", "laravel" ], - "time": "2020-03-03T13:52:16+00:00" + "support": { + "source": "https://github.com/laravel/helpers/tree/v1.8.3" + }, + "time": "2026-03-17T16:40:11+00:00" }, { "name": "laravel/passport", - "version": "v9.1.0", + "version": "v11.10.6", "source": { "type": "git", "url": "https://github.com/laravel/passport.git", - "reference": "c274e928a9f43d517b9887446288d3129b1543f9" + "reference": "2642f360c51dfde3a6ea60f86ae5d9a8c0caf3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/passport/zipball/c274e928a9f43d517b9887446288d3129b1543f9", - "reference": "c274e928a9f43d517b9887446288d3129b1543f9", + "url": "https://api.github.com/repos/laravel/passport/zipball/2642f360c51dfde3a6ea60f86ae5d9a8c0caf3cf", + "reference": "2642f360c51dfde3a6ea60f86ae5d9a8c0caf3cf", "shasum": "" }, "require": { "ext-json": "*", - "firebase/php-jwt": "^5.0", - "guzzlehttp/guzzle": "^6.0", - "illuminate/auth": "^6.0|^7.0", - "illuminate/console": "^6.0|^7.0", - "illuminate/container": "^6.0|^7.0", - "illuminate/contracts": "^6.0|^7.0", - "illuminate/cookie": "^6.0|^7.0", - "illuminate/database": "^6.0|^7.0", - "illuminate/encryption": "^6.0|^7.0", - "illuminate/http": "^6.0|^7.0", - "illuminate/support": "^6.0|^7.0", - "laminas/laminas-diactoros": "^2.2", - "league/oauth2-server": "^8.1", - "nyholm/psr7": "^1.0", - "php": "^7.2", - "phpseclib/phpseclib": "^2.0", - "symfony/psr-http-message-bridge": "^2.0" + "firebase/php-jwt": "^6.4", + "illuminate/auth": "^9.0|^10.0", + "illuminate/console": "^9.0|^10.0", + "illuminate/container": "^9.0|^10.0", + "illuminate/contracts": "^9.0|^10.0", + "illuminate/cookie": "^9.0|^10.0", + "illuminate/database": "^9.0|^10.0", + "illuminate/encryption": "^9.0|^10.0", + "illuminate/http": "^9.0|^10.0", + "illuminate/support": "^9.0|^10.0", + "lcobucci/jwt": "^4.3|^5.0", + "league/oauth2-server": "^8.5.3", + "nyholm/psr7": "^1.5", + "php": "^8.0", + "phpseclib/phpseclib": "^2.0|^3.0", + "symfony/psr-http-message-bridge": "^2.1" }, "require-dev": { "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.4|^5.0", - "phpunit/phpunit": "^8.0" + "orchestra/testbench": "^7.31|^8.11", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - }, "laravel": { "providers": [ "Laravel\\Passport\\PassportServiceProvider" ] + }, + "branch-alias": { + "dev-master": "11.x-dev" } }, "autoload": { "psr-4": { - "Laravel\\Passport\\": "src/" + "Laravel\\Passport\\": "src/", + "Laravel\\Passport\\Database\\Factories\\": "database/factories/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1872,42 +2732,163 @@ "oauth", "passport" ], - "time": "2020-05-08T13:55:52+00:00" + "support": { + "issues": "https://github.com/laravel/passport/issues", + "source": "https://github.com/laravel/passport" + }, + "time": "2024-03-01T11:11:18+00:00" }, { - "name": "laravel/tinker", - "version": "v2.4.0", + "name": "laravel/prompts", + "version": "v0.1.25", "source": { "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "cde90a7335a2130a4488beb68f4b2141869241db" + "url": "https://github.com/laravel/prompts.git", + "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/cde90a7335a2130a4488beb68f4b2141869241db", - "reference": "cde90a7335a2130a4488beb68f4b2141869241db", + "url": "https://api.github.com/repos/laravel/prompts/zipball/7b4029a84c37cb2725fc7f011586e2997040bc95", + "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95", "shasum": "" }, "require": { - "illuminate/console": "^6.0|^7.0|^8.0", - "illuminate/contracts": "^6.0|^7.0|^8.0", - "illuminate/support": "^6.0|^7.0|^8.0", - "php": "^7.2", - "psy/psysh": "^0.10.3", - "symfony/var-dumper": "^4.3|^5.0" + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" }, "require-dev": { - "mockery/mockery": "^1.3.1", - "phpunit/phpunit": "^8.4|^9.0" + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-mockery": "^1.1" }, "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0)." + "ext-pcntl": "Required for the spinner to be animated." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-main": "0.1.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.1.25" + }, + "time": "2024-08-12T22:06:33+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.7", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/4f48ade902b94323ca3be7646db16209ec76be3d", + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "illuminate/support": "^8.0|^9.0|^10.0|^11.0", + "nesbot/carbon": "^2.61|^3.0", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2024-11-14T18:34:49+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.11.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "c9f80cc835649b5c1842898fb043f8cc098dd741" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/c9f80cc835649b5c1842898fb043f8cc098dd741", + "reference": "c9f80cc835649b5c1842898fb043f8cc098dd741", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0|^8.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3|^10.0" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0)." + }, + "type": "library", + "extra": { "laravel": { "providers": [ "Laravel\\Tinker\\TinkerServiceProvider" @@ -1936,40 +2917,94 @@ "laravel", "psysh" ], - "time": "2020-04-07T15:01:31+00:00" + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.11.1" + }, + "time": "2026-02-06T14:12:35+00:00" }, { - "name": "laravelcollective/html", - "version": "v6.1.0", + "name": "laravel/ui", + "version": "v4.6.3", "source": { "type": "git", - "url": "https://github.com/LaravelCollective/html.git", - "reference": "64f2268bf41bf02b3a9dd3c30f102e934d721664" + "url": "https://github.com/laravel/ui.git", + "reference": "ff27db15416c1ed8ad9848f5692e47595dd5de27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/LaravelCollective/html/zipball/64f2268bf41bf02b3a9dd3c30f102e934d721664", - "reference": "64f2268bf41bf02b3a9dd3c30f102e934d721664", + "url": "https://api.github.com/repos/laravel/ui/zipball/ff27db15416c1ed8ad9848f5692e47595dd5de27", + "reference": "ff27db15416c1ed8ad9848f5692e47595dd5de27", "shasum": "" }, "require": { - "illuminate/http": "^6.0|^7.0", - "illuminate/routing": "^6.0|^7.0", - "illuminate/session": "^6.0|^7.0", - "illuminate/support": "^6.0|^7.0", - "illuminate/view": "^6.0|^7.0", - "php": ">=7.2.5" + "illuminate/console": "^9.21|^10.0|^11.0|^12.0|^13.0", + "illuminate/filesystem": "^9.21|^10.0|^11.0|^12.0|^13.0", + "illuminate/support": "^9.21|^10.0|^11.0|^12.0|^13.0", + "illuminate/validation": "^9.21|^10.0|^11.0|^12.0|^13.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0|^8.0" }, "require-dev": { - "illuminate/database": "^6.0|^7.0", - "mockery/mockery": "~1.0", - "phpunit/phpunit": "~7.1" + "orchestra/testbench": "^7.35|^8.15|^9.0|^10.0|^11.0", + "phpunit/phpunit": "^9.3|^10.4|^11.5|^12.5|^13.0" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "6.0-dev" + "laravel": { + "providers": [ + "Laravel\\Ui\\UiServiceProvider" + ] }, + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Ui\\": "src/", + "Illuminate\\Foundation\\Auth\\": "auth-backend/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel UI utilities and presets.", + "keywords": [ + "laravel", + "ui" + ], + "support": { + "source": "https://github.com/laravel/ui/tree/v4.6.3" + }, + "time": "2026-03-17T13:41:52+00:00" + }, + { + "name": "laravelcollective/html", + "version": "6.5.0", + "source": { + "type": "git", + "url": "https://github.com/LaravelCollective/html.git", + "reference": "v6.4.1" + }, + "require": { + "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/routing": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/session": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/view": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "php": "^8.0", + "spatie/once": "^3.0" + }, + "type": "library", + "extra": { "laravel": { "providers": [ "Collective\\Html\\HtmlServiceProvider" @@ -1983,10 +3018,49 @@ "autoload": { "psr-4": { "Collective\\Html\\": "src/" - }, - "files": [ - "src/helpers.php" - ] + } + }, + "license": [ + "MIT" + ], + "description": "HTML and Form Builders for the Laravel Framework (L10+ patch)" + }, + { + "name": "lcobucci/clock", + "version": "3.5.0", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/clock.git", + "reference": "a3139d9e97d47826f27e6a17bb63f13621f86058" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/clock/zipball/a3139d9e97d47826f27e6a17bb63f13621f86058", + "reference": "a3139d9e97d47826f27e6a17bb63f13621f86058", + "shasum": "" + }, + "require": { + "php": "~8.3.0 || ~8.4.0 || ~8.5.0", + "psr/clock": "^1.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "infection/infection": "^0.31", + "lcobucci/coding-standard": "^11.2.0", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan": "^2.0.0", + "phpstan/phpstan-deprecation-rules": "^2.0.0", + "phpstan/phpstan-phpunit": "^2.0.0", + "phpstan/phpstan-strict-rules": "^2.0.0", + "phpunit/phpunit": "^12.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Lcobucci\\Clock\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1994,50 +3068,63 @@ ], "authors": [ { - "name": "Adam Engebretson", - "email": "adam@laravelcollective.com" - }, - { - "name": "Taylor Otwell", - "email": "taylorotwell@gmail.com" + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com" } ], - "description": "HTML and Form Builders for the Laravel Framework", - "homepage": "https://laravelcollective.com", - "time": "2020-03-02T16:41:28+00:00" + "description": "Yet another clock abstraction", + "support": { + "issues": "https://github.com/lcobucci/clock/issues", + "source": "https://github.com/lcobucci/clock/tree/3.5.0" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2025-10-27T09:03:17+00:00" }, { "name": "lcobucci/jwt", - "version": "3.3.1", + "version": "5.6.0", "source": { "type": "git", "url": "https://github.com/lcobucci/jwt.git", - "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18" + "reference": "bb3e9f21e4196e8afc41def81ef649c164bca25e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", - "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/bb3e9f21e4196e8afc41def81ef649c164bca25e", + "reference": "bb3e9f21e4196e8afc41def81ef649c164bca25e", "shasum": "" }, "require": { - "ext-mbstring": "*", "ext-openssl": "*", - "php": "^5.6 || ^7.0" + "ext-sodium": "*", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", + "psr/clock": "^1.0" }, "require-dev": { - "mikey179/vfsstream": "~1.5", - "phpmd/phpmd": "~2.2", - "phpunit/php-invoker": "~1.1", - "phpunit/phpunit": "^5.7 || ^7.3", - "squizlabs/php_codesniffer": "~2.3" + "infection/infection": "^0.29", + "lcobucci/clock": "^3.2", + "lcobucci/coding-standard": "^11.0", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.10.7", + "phpstan/phpstan-deprecation-rules": "^1.1.3", + "phpstan/phpstan-phpunit": "^1.3.10", + "phpstan/phpstan-strict-rules": "^1.5.0", + "phpunit/phpunit": "^11.1" + }, + "suggest": { + "lcobucci/clock": ">= 3.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, "autoload": { "psr-4": { "Lcobucci\\JWT\\": "src" @@ -2049,7 +3136,7 @@ ], "authors": [ { - "name": "Luís Otávio Cobucci Oblonczyk", + "name": "Luís Cobucci", "email": "lcobucci@gmail.com", "role": "Developer" } @@ -2059,49 +3146,71 @@ "JWS", "jwt" ], - "time": "2019-05-24T18:30:49+00:00" + "support": { + "issues": "https://github.com/lcobucci/jwt/issues", + "source": "https://github.com/lcobucci/jwt/tree/5.6.0" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2025-10-17T11:30:53+00:00" }, { "name": "league/commonmark", - "version": "1.4.3", + "version": "2.8.2", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "412639f7cfbc0b31ad2455b2fe965095f66ae505" + "reference": "59fb075d2101740c337c7216e3f32b36c204218b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/412639f7cfbc0b31ad2455b2fe965095f66ae505", - "reference": "412639f7cfbc0b31ad2455b2fe965095f66ae505", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/59fb075d2101740c337c7216e3f32b36c204218b", + "reference": "59fb075d2101740c337c7216e3f32b36c204218b", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^7.1" - }, - "conflict": { - "scrutinizer/ocular": "1.7.*" + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "cebe/markdown": "~1.0", - "commonmark/commonmark.js": "0.29.1", - "erusev/parsedown": "~1.0", + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.31.1", + "commonmark/commonmark.js": "0.31.1", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", "ext-json": "*", "github/gfm": "0.29.0", - "michelf/php-markdown": "~1.4", - "mikehaertl/php-shellcommand": "^1.4", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^7.5", - "scrutinizer/ocular": "^1.5", - "symfony/finder": "^4.2" + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0 | ^7.0 || ^8.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0 || ^8.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0 || ^8.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" }, - "bin": [ - "bin/commonmark" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-main": "2.9-dev" } }, "autoload": { @@ -2121,7 +3230,7 @@ "role": "Lead Developer" } ], - "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and Github-Flavored Markdown (GFM)", + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", "homepage": "https://commonmark.thephpleague.com", "keywords": [ "commonmark", @@ -2133,11 +3242,14 @@ "md", "parser" ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, "funding": [ - { - "url": "https://enjoy.gitstore.app/repositories/thephpleague/commonmark", - "type": "custom" - }, { "url": "https://www.colinodell.com/sponsor", "type": "custom" @@ -2150,33 +3262,111 @@ "url": "https://github.com/colinodell", "type": "github" }, - { - "url": "https://www.patreon.com/colinodell", - "type": "patreon" - }, { "url": "https://tidelift.com/funding/github/packagist/league/commonmark", "type": "tidelift" } ], - "time": "2020-05-04T22:15:21+00:00" + "time": "2026-03-19T13:16:38+00:00" }, { - "name": "league/event", - "version": "2.2.0", + "name": "league/config", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/event.git", - "reference": "d2cc124cf9a3fab2bb4ff963307f60361ce4d119" + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/event/zipball/d2cc124cf9a3fab2bb4ff963307f60361ce4d119", - "reference": "d2cc124cf9a3fab2bb4ff963307f60361ce4d119", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", "shasum": "" }, "require": { - "php": ">=5.4.0" + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/event", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/event.git", + "reference": "062ebb450efbe9a09bc2478e89b7c933875b0935" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/event/zipball/062ebb450efbe9a09bc2478e89b7c933875b0935", + "reference": "062ebb450efbe9a09bc2478e89b7c933875b0935", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" }, "require-dev": { "henrikbjorn/phpspec-code-coverage": "~1.0.1", @@ -2209,58 +3399,63 @@ "event", "listener" ], - "time": "2018-11-26T11:52:41+00:00" + "support": { + "issues": "https://github.com/thephpleague/event/issues", + "source": "https://github.com/thephpleague/event/tree/2.3.0" + }, + "time": "2025-03-14T19:51:10+00:00" }, { "name": "league/flysystem", - "version": "1.0.67", + "version": "3.33.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "5b1f36c75c4bdde981294c2a0ebdb437ee6f275e" + "reference": "570b8871e0ce693764434b29154c54b434905350" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/5b1f36c75c4bdde981294c2a0ebdb437ee6f275e", - "reference": "5b1f36c75c4bdde981294c2a0ebdb437ee6f275e", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/570b8871e0ce693764434b29154c54b434905350", + "reference": "570b8871e0ce693764434b29154c54b434905350", "shasum": "" }, "require": { - "ext-fileinfo": "*", - "php": ">=5.5.9" + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" }, "conflict": { - "league/flysystem-sftp": "<1.0.6" + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" }, "require-dev": { - "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7.26" - }, - "suggest": { - "ext-fileinfo": "Required for MimeType", - "ext-ftp": "Allows you to use FTP server storage", - "ext-openssl": "Allows you to use FTPS server storage", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", - "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", - "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-mongodb": "^1.3|^2", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "guzzlehttp/psr7": "^2.6", + "microsoft/azure-storage-blob": "^1.1", + "mongodb/mongodb": "^1.2|^2", + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, "autoload": { "psr-4": { - "League\\Flysystem\\": "src/" + "League\\Flysystem\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2270,69 +3465,167 @@ "authors": [ { "name": "Frank de Jonge", - "email": "info@frenky.net" + "email": "info@frankdejonge.nl" } ], - "description": "Filesystem abstraction: Many filesystems, one API.", + "description": "File storage abstraction for PHP", "keywords": [ - "Cloud Files", "WebDAV", - "abstraction", "aws", "cloud", - "copy.com", - "dropbox", - "file systems", + "file", "files", "filesystem", "filesystems", "ftp", - "rackspace", - "remote", "s3", "sftp", "storage" ], - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "other" - } - ], - "time": "2020-04-16T13:21:26+00:00" + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.33.0" + }, + "time": "2026-03-25T07:59:30+00:00" }, { - "name": "league/oauth2-server", - "version": "8.1.0", + "name": "league/flysystem-local", + "version": "3.31.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/oauth2-server.git", - "reference": "b53d324f774eb782250f7d8973811a33a75ecdef" + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "2f669db18a4c20c755c2bb7d3a7b0b2340488079" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/b53d324f774eb782250f7d8973811a33a75ecdef", - "reference": "b53d324f774eb782250f7d8973811a33a75ecdef", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/2f669db18a4c20c755c2bb7d3a7b0b2340488079", + "reference": "2f669db18a4c20c755c2bb7d3a7b0b2340488079", "shasum": "" }, "require": { - "defuse/php-encryption": "^2.2.1", - "ext-json": "*", + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-local/tree/3.31.0" + }, + "time": "2026-01-23T15:30:45+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9", + "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2024-09-21T08:32:55+00:00" + }, + { + "name": "league/oauth2-server", + "version": "8.5.5", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/oauth2-server.git", + "reference": "cc8778350f905667e796b3c2364a9d3bd7a73518" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/cc8778350f905667e796b3c2364a9d3bd7a73518", + "reference": "cc8778350f905667e796b3c2364a9d3bd7a73518", + "shasum": "" + }, + "require": { + "defuse/php-encryption": "^2.3", "ext-openssl": "*", - "lcobucci/jwt": "^3.3.1", + "lcobucci/clock": "^2.2 || ^3.0", + "lcobucci/jwt": "^4.3 || ^5.0", "league/event": "^2.2", - "php": ">=7.2.0", - "psr/http-message": "^1.0.1" + "league/uri": "^6.7 || ^7.0", + "php": "^8.0", + "psr/http-message": "^1.0.1 || ^2.0" }, "replace": { "league/oauth2server": "*", "lncd/oauth2": "*" }, "require-dev": { - "laminas/laminas-diactoros": "^2.3.0", - "phpstan/phpstan": "^0.11.19", - "phpstan/phpstan-phpunit": "^0.11.2", - "phpunit/phpunit": "^8.5.4 || ^9.1.3", + "laminas/laminas-diactoros": "^3.0.0", + "phpstan/phpstan": "^0.12.57", + "phpstan/phpstan-phpunit": "^0.12.16", + "phpunit/phpunit": "^9.6.6", "roave/security-advisories": "dev-master" }, "type": "library", @@ -2376,50 +3669,236 @@ "secure", "server" ], + "support": { + "issues": "https://github.com/thephpleague/oauth2-server/issues", + "source": "https://github.com/thephpleague/oauth2-server/tree/8.5.5" + }, "funding": [ { "url": "https://github.com/sephster", "type": "github" } ], - "time": "2020-04-29T22:14:38+00:00" + "time": "2024-12-20T23:06:10+00:00" }, { - "name": "maatwebsite/excel", - "version": "3.1.19", + "name": "league/uri", + "version": "7.8.1", "source": { "type": "git", - "url": "https://github.com/Maatwebsite/Laravel-Excel.git", - "reference": "96527a9ebc2e79e9a5fa7eaef7e23c9e9bcc587c" + "url": "https://github.com/thephpleague/uri.git", + "reference": "08cf38e3924d4f56238125547b5720496fac8fd4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Maatwebsite/Laravel-Excel/zipball/96527a9ebc2e79e9a5fa7eaef7e23c9e9bcc587c", - "reference": "96527a9ebc2e79e9a5fa7eaef7e23c9e9bcc587c", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/08cf38e3924d4f56238125547b5720496fac8fd4", + "reference": "08cf38e3924d4f56238125547b5720496fac8fd4", "shasum": "" }, "require": { + "league/uri-interfaces": "^7.8.1", + "php": "^8.1", + "psr/http-factory": "^1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-dom": "to convert the URI into an HTML anchor tag", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "ext-uri": "to use the PHP native URI class", + "jeremykendall/php-domain-parser": "to further parse the URI host and resolve its Public Suffix and Top Level Domain", + "league/uri-components": "to provide additional tools to manipulate URI objects components", + "league/uri-polyfill": "to backport the PHP URI extension for older versions of PHP", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "URN", + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc2141", + "rfc3986", + "rfc3987", + "rfc6570", + "rfc8141", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.8.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-03-15T20:22:25+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.8.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "85d5c77c5d6d3af6c54db4a78246364908f3c928" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/85d5c77c5d6d3af6c54db4a78246364908f3c928", + "reference": "85d5c77c5d6d3af6c54db4a78246364908f3c928", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.8.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-03-08T20:05:35+00:00" + }, + { + "name": "maatwebsite/excel", + "version": "3.1.68", + "source": { + "type": "git", + "url": "https://github.com/SpartnerNL/Laravel-Excel.git", + "reference": "1854739267d81d38eae7d8c623caf523f30f256b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/1854739267d81d38eae7d8c623caf523f30f256b", + "reference": "1854739267d81d38eae7d8c623caf523f30f256b", + "shasum": "" + }, + "require": { + "composer/semver": "^3.3", "ext-json": "*", - "illuminate/support": "5.5.*|5.6.*|5.7.*|5.8.*|^6.0|^7.0", - "php": "^7.0", - "phpoffice/phpspreadsheet": "^1.10" + "illuminate/support": "5.8.*||^6.0||^7.0||^8.0||^9.0||^10.0||^11.0||^12.0||^13.0", + "php": "^7.0||^8.0", + "phpoffice/phpspreadsheet": "^1.30.0", + "psr/simple-cache": "^1.0||^2.0||^3.0" }, "require-dev": { - "mockery/mockery": "^1.1", - "orchestra/database": "^4.0", - "orchestra/testbench": "^4.0", - "phpunit/phpunit": "^8.0", + "laravel/scout": "^7.0||^8.0||^9.0||^10.0||^11.0", + "orchestra/testbench": "^6.0||^7.0||^8.0||^9.0||^10.0||^11.0", "predis/predis": "^1.1" }, "type": "library", "extra": { "laravel": { - "providers": [ - "Maatwebsite\\Excel\\ExcelServiceProvider" - ], "aliases": { "Excel": "Maatwebsite\\Excel\\Facades\\Excel" - } + }, + "providers": [ + "Maatwebsite\\Excel\\ExcelServiceProvider" + ] } }, "autoload": { @@ -2434,7 +3913,7 @@ "authors": [ { "name": "Patrick Brouwers", - "email": "patrick@maatwebsite.nl" + "email": "patrick@spartner.nl" } ], "description": "Supercharged Excel exports and imports in Laravel", @@ -2449,6 +3928,10 @@ "php", "phpspreadsheet" ], + "support": { + "issues": "https://github.com/SpartnerNL/Laravel-Excel/issues", + "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.68" + }, "funding": [ { "url": "https://laravel-excel.com/commercial-support", @@ -2459,84 +3942,114 @@ "type": "github" } ], - "time": "2020-02-28T15:47:45+00:00" + "time": "2026-03-17T20:51:10+00:00" }, { - "name": "markbaker/complex", - "version": "1.4.8", + "name": "maennchen/zipstream-php", + "version": "3.2.2", "source": { "type": "git", - "url": "https://github.com/MarkBaker/PHPComplex.git", - "reference": "8eaa40cceec7bf0518187530b2e63871be661b72" + "url": "https://github.com/maennchen/ZipStream-PHP.git", + "reference": "77bebeb4c6c340bb3c11c843b2cffd8bbfde4d5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/8eaa40cceec7bf0518187530b2e63871be661b72", - "reference": "8eaa40cceec7bf0518187530b2e63871be661b72", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/77bebeb4c6c340bb3c11c843b2cffd8bbfde4d5e", + "reference": "77bebeb4c6c340bb3c11c843b2cffd8bbfde4d5e", "shasum": "" }, "require": { - "php": "^5.6.0|^7.0.0" + "ext-mbstring": "*", + "ext-zlib": "*", + "php-64bit": "^8.3" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", - "phpcompatibility/php-compatibility": "^9.0", - "phpdocumentor/phpdocumentor": "2.*", - "phploc/phploc": "2.*", - "phpmd/phpmd": "2.*", - "phpunit/phpunit": "^4.8.35|^5.4.0", - "sebastian/phpcpd": "2.*", - "squizlabs/php_codesniffer": "^3.4.0" + "brianium/paratest": "^7.7", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.86", + "guzzlehttp/guzzle": "^7.5", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^12.0", + "vimeo/psalm": "^6.0" + }, + "suggest": { + "guzzlehttp/psr7": "^2.4", + "psr/http-message": "^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZipStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paul Duncan", + "email": "pabs@pablotron.org" + }, + { + "name": "Jonatan Männchen", + "email": "jonatan@maennchen.ch" + }, + { + "name": "Jesse Donat", + "email": "donatj@gmail.com" + }, + { + "name": "András Kolesár", + "email": "kolesar@kolesar.hu" + } + ], + "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", + "keywords": [ + "stream", + "zip" + ], + "support": { + "issues": "https://github.com/maennchen/ZipStream-PHP/issues", + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.2.2" + }, + "funding": [ + { + "url": "https://github.com/maennchen", + "type": "github" + } + ], + "time": "2026-04-11T18:38:28+00:00" + }, + { + "name": "markbaker/complex", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPComplex.git", + "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9", + "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "phpcompatibility/php-compatibility": "^9.3", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "squizlabs/php_codesniffer": "^3.7" }, "type": "library", "autoload": { "psr-4": { "Complex\\": "classes/src/" - }, - "files": [ - "classes/src/functions/abs.php", - "classes/src/functions/acos.php", - "classes/src/functions/acosh.php", - "classes/src/functions/acot.php", - "classes/src/functions/acoth.php", - "classes/src/functions/acsc.php", - "classes/src/functions/acsch.php", - "classes/src/functions/argument.php", - "classes/src/functions/asec.php", - "classes/src/functions/asech.php", - "classes/src/functions/asin.php", - "classes/src/functions/asinh.php", - "classes/src/functions/atan.php", - "classes/src/functions/atanh.php", - "classes/src/functions/conjugate.php", - "classes/src/functions/cos.php", - "classes/src/functions/cosh.php", - "classes/src/functions/cot.php", - "classes/src/functions/coth.php", - "classes/src/functions/csc.php", - "classes/src/functions/csch.php", - "classes/src/functions/exp.php", - "classes/src/functions/inverse.php", - "classes/src/functions/ln.php", - "classes/src/functions/log2.php", - "classes/src/functions/log10.php", - "classes/src/functions/negative.php", - "classes/src/functions/pow.php", - "classes/src/functions/rho.php", - "classes/src/functions/sec.php", - "classes/src/functions/sech.php", - "classes/src/functions/sin.php", - "classes/src/functions/sinh.php", - "classes/src/functions/sqrt.php", - "classes/src/functions/tan.php", - "classes/src/functions/tanh.php", - "classes/src/functions/theta.php", - "classes/src/operations/add.php", - "classes/src/operations/subtract.php", - "classes/src/operations/multiply.php", - "classes/src/operations/divideby.php", - "classes/src/operations/divideinto.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2554,57 +4067,44 @@ "complex", "mathematics" ], - "time": "2020-03-11T20:15:49+00:00" + "support": { + "issues": "https://github.com/MarkBaker/PHPComplex/issues", + "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2" + }, + "time": "2022-12-06T16:21:08+00:00" }, { "name": "markbaker/matrix", - "version": "1.2.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/MarkBaker/PHPMatrix.git", - "reference": "5348c5a67e3b75cd209d70103f916a93b1f1ed21" + "reference": "728434227fe21be27ff6d86621a1b13107a2562c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/5348c5a67e3b75cd209d70103f916a93b1f1ed21", - "reference": "5348c5a67e3b75cd209d70103f916a93b1f1ed21", + "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c", + "reference": "728434227fe21be27ff6d86621a1b13107a2562c", "shasum": "" }, "require": { - "php": "^5.6.0|^7.0.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "dealerdirect/phpcodesniffer-composer-installer": "dev-master", - "phpcompatibility/php-compatibility": "dev-master", - "phploc/phploc": "^4", - "phpmd/phpmd": "dev-master", - "phpunit/phpunit": "^5.7", - "sebastian/phpcpd": "^3.0", - "squizlabs/php_codesniffer": "^3.0@dev" + "phpcompatibility/php-compatibility": "^9.3", + "phpdocumentor/phpdocumentor": "2.*", + "phploc/phploc": "^4.0", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "sebastian/phpcpd": "^4.0", + "squizlabs/php_codesniffer": "^3.7" }, "type": "library", "autoload": { "psr-4": { "Matrix\\": "classes/src/" - }, - "files": [ - "classes/src/functions/adjoint.php", - "classes/src/functions/antidiagonal.php", - "classes/src/functions/cofactors.php", - "classes/src/functions/determinant.php", - "classes/src/functions/diagonal.php", - "classes/src/functions/identity.php", - "classes/src/functions/inverse.php", - "classes/src/functions/minors.php", - "classes/src/functions/trace.php", - "classes/src/functions/transpose.php", - "classes/src/operations/add.php", - "classes/src/operations/directsum.php", - "classes/src/operations/subtract.php", - "classes/src/operations/multiply.php", - "classes/src/operations/divideby.php", - "classes/src/operations/divideinto.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2613,7 +4113,7 @@ "authors": [ { "name": "Mark Baker", - "email": "mark@lange.demon.co.uk" + "email": "mark@demon-angel.eu" } ], "description": "PHP Class for working with matrices", @@ -2623,62 +4123,141 @@ "matrix", "vector" ], - "time": "2019-10-06T11:29:25+00:00" + "support": { + "issues": "https://github.com/MarkBaker/PHPMatrix/issues", + "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1" + }, + "time": "2022-12-02T22:17:43+00:00" }, { - "name": "monolog/monolog", - "version": "2.0.2", + "name": "masterminds/html5", + "version": "2.10.0", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8" + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "fcf91eb64359852f00d921887b219479b4f21251" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c861fcba2ca29404dc9e617eedd9eff4616986b8", - "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fcf91eb64359852f00d921887b219479b4f21251", + "reference": "fcf91eb64359852f00d921887b219479b4f21251", "shasum": "" }, "require": { - "php": "^7.2", - "psr/log": "^1.0.1" - }, - "provide": { - "psr/log-implementation": "1.0.0" + "ext-dom": "*", + "php": ">=5.3.0" }, "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.10.0" + }, + "time": "2025-07-25T09:04:22+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.10.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^6.0", - "graylog2/gelf-php": "^1.4.2", - "jakub-onderka/php-parallel-lint": "^0.9", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpunit/phpunit": "^8.3", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90 <3.0", - "swiftmailer/swiftmailer": "^5.3|^6.0" + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8 || ^2.0", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", "doctrine/couchdb": "Allow sending log messages to a CouchDB server", "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", "ext-mbstring": "Allow to work properly with unicode symbols", "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -2694,45 +4273,69 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", + "homepage": "https://github.com/Seldaek/monolog", "keywords": [ "log", "logging", "psr-3" ], - "time": "2019-12-20T14:22:59+00:00" + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.10.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2026-01-02T08:56:05+00:00" }, { "name": "nesbot/carbon", - "version": "2.33.0", + "version": "2.73.0", "source": { "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4d93cb95a80d9ffbff4018fe58ae3b7dd7f4b99b" + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4d93cb95a80d9ffbff4018fe58ae3b7dd7f4b99b", - "reference": "4d93cb95a80d9ffbff4018fe58ae3b7dd7f4b99b", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/9228ce90e1035ff2f0db84b40ec2e023ed802075", + "reference": "9228ce90e1035ff2f0db84b40ec2e023ed802075", "shasum": "" }, "require": { + "carbonphp/carbon-doctrine-types": "*", "ext-json": "*", "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", "symfony/polyfill-mbstring": "^1.0", - "symfony/translation": "^3.4 || ^4.0 || ^5.0" + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "provide": { + "psr/clock-implementation": "1.0" }, "require-dev": { - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", - "kylekatarnls/multi-tester": "^1.1", - "phpmd/phpmd": "^2.8", - "phpstan/phpstan": "^0.11", - "phpunit/phpunit": "^7.5 || ^8.0", + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "<6", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", "squizlabs/php_codesniffer": "^3.4" }, "bin": [ @@ -2740,13 +4343,19 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, "laravel": { "providers": [ "Carbon\\Laravel\\ServiceProvider" ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" } }, "autoload": { @@ -2762,53 +4371,222 @@ { "name": "Brian Nesbitt", "email": "brian@nesbot.com", - "homepage": "http://nesbot.com" + "homepage": "https://markido.com" }, { "name": "kylekatarnls", - "homepage": "http://github.com/kylekatarnls" + "homepage": "https://github.com/kylekatarnls" } ], "description": "An API extension for DateTime that supports 281 different languages.", - "homepage": "http://carbon.nesbot.com", + "homepage": "https://carbon.nesbot.com", "keywords": [ "date", "datetime", "time" ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, "funding": [ { - "url": "https://opencollective.com/Carbon", - "type": "open_collective" + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", "type": "tidelift" } ], - "time": "2020-04-20T15:05:43+00:00" + "time": "2025-01-08T20:10:23+00:00" }, { - "name": "nikic/php-parser", - "version": "v4.4.0", + "name": "nette/schema", + "version": "v1.3.5", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120" + "url": "https://github.com/nette/schema.git", + "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120", - "reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120", + "url": "https://api.github.com/repos/nette/schema/zipball/f0ab1a3cda782dbc5da270d28545236aa80c4002", + "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.0" + "nette/utils": "^4.0", + "php": "8.1 - 8.5" }, "require-dev": { - "ircmaxell/php-yacc": "0.0.5", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0" + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.6", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1.39@stable", + "tracy/tracy": "^2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.3.5" + }, + "time": "2026-02-23T03:47:12+00:00" + }, + { + "name": "nette/utils", + "version": "v4.1.3", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/bb3ea637e3d131d72acc033cfc2746ee893349fe", + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe", + "shasum": "" + }, + "require": { + "php": "8.2 - 8.5" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "^1.2", + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.5", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1@stable", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Nette\\": "src" + }, + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.1.3" + }, + "time": "2026-02-13T03:05:33+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.7.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" }, "bin": [ "bin/php-parse" @@ -2816,7 +4594,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "5.x-dev" } }, "autoload": { @@ -2838,41 +4616,132 @@ "parser", "php" ], - "time": "2020-04-10T16:34:50+00:00" + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" + }, + "time": "2025-12-06T11:56:16+00:00" }, { - "name": "nyholm/psr7", - "version": "1.2.1", + "name": "nunomaduro/termwind", + "version": "v1.17.0", "source": { "type": "git", - "url": "https://github.com/Nyholm/psr7.git", - "reference": "55ff6b76573f5b242554c9775792bd59fb52e11c" + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Nyholm/psr7/zipball/55ff6b76573f5b242554c9775792bd59fb52e11c", - "reference": "55ff6b76573f5b242554c9775792bd59fb52e11c", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/5369ef84d8142c1d87e4ec278711d4ece3cbf301", + "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301", "shasum": "" }, "require": { - "php": "^7.1", - "php-http/message-factory": "^1.0", + "ext-mbstring": "*", + "php": "^8.1", + "symfony/console": "^6.4.15" + }, + "require-dev": { + "illuminate/console": "^10.48.24", + "illuminate/support": "^10.48.24", + "laravel/pint": "^1.18.2", + "pestphp/pest": "^2.36.0", + "pestphp/pest-plugin-mock": "2.0.0", + "phpstan/phpstan": "^1.12.11", + "phpstan/phpstan-strict-rules": "^1.6.1", + "symfony/var-dumper": "^6.4.15", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Termwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Its like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], + "support": { + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v1.17.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2024-11-21T10:36:35+00:00" + }, + { + "name": "nyholm/psr7", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/Nyholm/psr7.git", + "reference": "a71f2b11690f4b24d099d6b16690a90ae14fc6f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/a71f2b11690f4b24d099d6b16690a90ae14fc6f3", + "reference": "a71f2b11690f4b24d099d6b16690a90ae14fc6f3", + "shasum": "" + }, + "require": { + "php": ">=7.2", "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.1 || ^2.0" }, "provide": { + "php-http/message-factory-implementation": "1.0", "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { - "http-interop/http-factory-tests": "dev-master", - "php-http/psr7-integration-tests": "dev-master", - "phpunit/phpunit": "^7.5" + "http-interop/http-factory-tests": "^0.9", + "php-http/message-factory": "^1.0", + "php-http/psr7-integration-tests": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", + "symfony/error-handler": "^4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.8-dev" } }, "autoload": { @@ -2895,47 +4764,55 @@ } ], "description": "A fast PHP7 implementation of PSR-7", - "homepage": "http://tnyholm.se", + "homepage": "https://tnyholm.se", "keywords": [ "psr-17", "psr-7" ], - "time": "2019-09-05T13:24:16+00:00" + "support": { + "issues": "https://github.com/Nyholm/psr7/issues", + "source": "https://github.com/Nyholm/psr7/tree/1.8.2" + }, + "funding": [ + { + "url": "https://github.com/Zegnat", + "type": "github" + }, + { + "url": "https://github.com/nyholm", + "type": "github" + } + ], + "time": "2024-09-09T07:06:30+00:00" }, { - "name": "opis/closure", - "version": "3.5.1", + "name": "paragonie/constant_time_encoding", + "version": "v3.1.3", "source": { "type": "git", - "url": "https://github.com/opis/closure.git", - "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969" + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/93ebc5712cdad8d5f489b500c59d122df2e53969", - "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0" + "php": "^8" }, "require-dev": { - "jeremeamia/superclosure": "^2.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "infection/infection": "^0", + "nikic/php-fuzzer": "^0", + "phpunit/phpunit": "^9|^10|^11", + "vimeo/psalm": "^4|^5|^6" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.5.x-dev" - } - }, "autoload": { "psr-4": { - "Opis\\Closure\\": "src/" - }, - "files": [ - "functions.php" - ] + "ParagonIE\\ConstantTime\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2943,42 +4820,56 @@ ], "authors": [ { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" }, { - "name": "Sorin Sarca", - "email": "sarca_sorin@hotmail.com" + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" } ], - "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", - "homepage": "https://opis.io/closure", + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", "keywords": [ - "anonymous functions", - "closure", - "function", - "serializable", - "serialization", - "serialize" + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" ], - "time": "2019-11-29T22:36:02+00:00" + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, + "time": "2025-09-24T15:06:41+00:00" }, { "name": "paragonie/random_compat", - "version": "v9.99.99", + "version": "v9.99.100", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", "shasum": "" }, "require": { - "php": "^7" + "php": ">= 7" }, "require-dev": { "phpunit/phpunit": "4.*|5.*", @@ -3006,24 +4897,32 @@ "pseudorandom", "random" ], - "time": "2018-07-02T15:55:56+00:00" + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" }, { "name": "phenx/php-font-lib", - "version": "0.5.2", + "version": "0.5.6", "source": { "type": "git", - "url": "https://github.com/PhenX/php-font-lib.git", - "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8" + "url": "https://github.com/dompdf/php-font-lib.git", + "reference": "a1681e9793040740a405ac5b189275059e2a9863" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8", - "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a1681e9793040740a405ac5b189275059e2a9863", + "reference": "a1681e9793040740a405ac5b189275059e2a9863", "shasum": "" }, + "require": { + "ext-mbstring": "*" + }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7" + "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6" }, "type": "library", "autoload": { @@ -3033,7 +4932,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0" + "LGPL-2.1-or-later" ], "authors": [ { @@ -3043,27 +4942,33 @@ ], "description": "A library to read, parse, export and make subsets of different types of font files.", "homepage": "https://github.com/PhenX/php-font-lib", - "time": "2020-03-08T15:31:32+00:00" + "support": { + "issues": "https://github.com/dompdf/php-font-lib/issues", + "source": "https://github.com/dompdf/php-font-lib/tree/0.5.6" + }, + "time": "2024-01-29T14:45:26+00:00" }, { "name": "phenx/php-svg-lib", - "version": "v0.3.3", + "version": "0.5.4", "source": { "type": "git", - "url": "https://github.com/PhenX/php-svg-lib.git", - "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32" + "url": "https://github.com/dompdf/php-svg-lib.git", + "reference": "46b25da81613a9cf43c83b2a8c2c1bdab27df691" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/5fa61b65e612ce1ae15f69b3d223cb14ecc60e32", - "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32", + "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/46b25da81613a9cf43c83b2a8c2c1bdab27df691", + "reference": "46b25da81613a9cf43c83b2a8c2c1bdab27df691", "shasum": "" }, "require": { - "sabberworm/php-css-parser": "^8.3" + "ext-mbstring": "*", + "php": "^7.1 || ^8.0", + "sabberworm/php-css-parser": "^8.4" }, "require-dev": { - "phpunit/phpunit": "^5.5|^6.5" + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5" }, "type": "library", "autoload": { @@ -3073,7 +4978,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0" + "LGPL-3.0-or-later" ], "authors": [ { @@ -3083,73 +4988,28 @@ ], "description": "A library to read, parse and export to PDF SVG files.", "homepage": "https://github.com/PhenX/php-svg-lib", - "time": "2019-09-11T20:02:13+00:00" - }, - { - "name": "php-http/message-factory", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-http/message-factory.git", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" + "support": { + "issues": "https://github.com/dompdf/php-svg-lib/issues", + "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.4" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Factory interfaces for PSR-7 HTTP Message", - "homepage": "http://php-http.org", - "keywords": [ - "factory", - "http", - "message", - "stream", - "uri" - ], - "time": "2015-12-19T14:08:53+00:00" + "time": "2024-04-08T12:52:34+00:00" }, { "name": "phpoffice/phpspreadsheet", - "version": "1.12.0", + "version": "1.30.3", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "f79611d6dc1f6b7e8e30b738fc371b392001dbfd" + "reference": "d28d4827f934469e7ca4de940ab0abd0788d1e65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/f79611d6dc1f6b7e8e30b738fc371b392001dbfd", - "reference": "f79611d6dc1f6b7e8e30b738fc371b392001dbfd", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/d28d4827f934469e7ca4de940ab0abd0788d1e65", + "reference": "d28d4827f934469e7ca4de940ab0abd0788d1e65", "shasum": "" }, "require": { + "composer/pcre": "^1||^2||^3", "ext-ctype": "*", "ext-dom": "*", "ext-fileinfo": "*", @@ -3163,24 +5023,31 @@ "ext-xmlwriter": "*", "ext-zip": "*", "ext-zlib": "*", - "markbaker/complex": "^1.4", - "markbaker/matrix": "^1.2", - "php": "^7.1", - "psr/simple-cache": "^1.0" + "ezyang/htmlpurifier": "^4.15", + "maennchen/zipstream-php": "^2.1 || ^3.0", + "markbaker/complex": "^3.0", + "markbaker/matrix": "^3.0", + "php": ">=7.4.0 <8.5.0", + "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" }, "require-dev": { - "dompdf/dompdf": "^0.8.3", - "friendsofphp/php-cs-fixer": "^2.16", - "jpgraph/jpgraph": "^4.0", - "mpdf/mpdf": "^8.0", + "dealerdirect/phpcodesniffer-composer-installer": "dev-main", + "doctrine/instantiator": "^1.5", + "dompdf/dompdf": "^1.0 || ^2.0 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.2", + "mitoteam/jpgraph": "^10.3", + "mpdf/mpdf": "^8.1.1", "phpcompatibility/php-compatibility": "^9.3", - "phpunit/phpunit": "^7.5", - "squizlabs/php_codesniffer": "^3.5", - "tecnickcom/tcpdf": "^6.3" + "phpstan/phpstan": "^1.1", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^8.5 || ^9.0", + "squizlabs/php_codesniffer": "^3.7", + "tecnickcom/tcpdf": "^6.5" }, "suggest": { "dompdf/dompdf": "Option for rendering PDF with PDF Writer", - "jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", + "ext-intl": "PHP Internationalization Functions", + "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", "mpdf/mpdf": "Option for rendering PDF with PDF Writer", "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" }, @@ -3212,6 +5079,9 @@ }, { "name": "Adrien Crivelli" + }, + { + "name": "Owen Leibman" } ], "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", @@ -3226,33 +5096,41 @@ "xls", "xlsx" ], - "time": "2020-04-27T08:12:48+00:00" + "support": { + "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.30.3" + }, + "time": "2026-04-10T03:47:16+00:00" }, { "name": "phpoption/phpoption", - "version": "1.7.3", + "version": "1.9.5", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae" + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/4acfd6a4b33a509d8c88f50e5222f734b6aeebae", - "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0 || ^8.0" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.3", - "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -3267,11 +5145,13 @@ "authors": [ { "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" }, { "name": "Graham Campbell", - "email": "graham@alt-three.com" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], "description": "Option Type for PHP", @@ -3281,32 +5161,46 @@ "php", "type" ], - "time": "2020-03-21T18:07:53+00:00" + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2025-12-27T19:41:33+00:00" }, { "name": "phpseclib/phpseclib", - "version": "2.0.27", + "version": "3.0.51", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc" + "reference": "d59c94077f9c9915abb51ddb52ce85188ece1748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc", - "reference": "34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/d59c94077f9c9915abb51ddb52ce85188ece1748", + "reference": "d59c94077f9c9915abb51ddb52ce85188ece1748", "shasum": "" }, "require": { - "php": ">=5.3.3" + "paragonie/constant_time_encoding": "^1|^2|^3", + "paragonie/random_compat": "^1.4|^2.0|^9.99.99", + "php": ">=5.6.1" }, "require-dev": { - "phing/phing": "~2.7", - "phpunit/phpunit": "^4.8.35|^5.7|^6.0", - "sami/sami": "~2.0", - "squizlabs/php_codesniffer": "~2.0" + "phpunit/phpunit": "*" }, "suggest": { + "ext-dom": "Install the DOM extension to load XML formatted public keys.", "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", @@ -3318,7 +5212,7 @@ "phpseclib/bootstrap.php" ], "psr-4": { - "phpseclib\\": "phpseclib/" + "phpseclib3\\": "phpseclib/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3373,6 +5267,10 @@ "x.509", "x509" ], + "support": { + "issues": "https://github.com/phpseclib/phpseclib/issues", + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.51" + }, "funding": [ { "url": "https://github.com/terrafrost", @@ -3387,24 +5285,219 @@ "type": "tidelift" } ], - "time": "2020-04-04T23:17:33+00:00" + "time": "2026-04-10T01:33:53+00:00" }, { - "name": "psr/container", - "version": "1.0.0", + "name": "pragmarx/google2fa", + "version": "v8.0.3", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "url": "https://github.com/antonioribeiro/google2fa.git", + "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad", + "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad", "shasum": "" }, "require": { - "php": ">=5.3.0" + "paragonie/constant_time_encoding": "^1.0|^2.0|^3.0", + "php": "^7.1|^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^7.5.15|^8.5|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "PragmaRX\\Google2FA\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Antonio Carlos Ribeiro", + "email": "acr@antoniocarlosribeiro.com", + "role": "Creator & Designer" + } + ], + "description": "A One Time Password Authentication package, compatible with Google Authenticator.", + "keywords": [ + "2fa", + "Authentication", + "Two Factor Authentication", + "google2fa" + ], + "support": { + "issues": "https://github.com/antonioribeiro/google2fa/issues", + "source": "https://github.com/antonioribeiro/google2fa/tree/v8.0.3" + }, + "time": "2024-09-05T11:56:40+00:00" + }, + { + "name": "pragmarx/google2fa-laravel", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/antonioribeiro/google2fa-laravel.git", + "reference": "d885bb5bca8be03b226d040aa80250402760a67c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/antonioribeiro/google2fa-laravel/zipball/d885bb5bca8be03b226d040aa80250402760a67c", + "reference": "d885bb5bca8be03b226d040aa80250402760a67c", + "shasum": "" + }, + "require": { + "laravel/framework": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0|^13.0", + "php": ">=7.0", + "pragmarx/google2fa-qrcode": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "bacon/bacon-qr-code": "^2.0", + "orchestra/testbench": "3.4.*|3.5.*|3.6.*|3.7.*|4.*|5.*|6.*|7.*|8.*|9.*|10.*|11.*", + "phpunit/phpunit": "~5|~6|~7|~8|~9|~10|~11|~12" + }, + "suggest": { + "bacon/bacon-qr-code": "Required to generate inline QR Codes.", + "pragmarx/recovery": "Generate recovery codes." + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Google2FA": "PragmaRX\\Google2FALaravel\\Facade" + }, + "providers": [ + "PragmaRX\\Google2FALaravel\\ServiceProvider" + ] + }, + "component": "package", + "frameworks": [ + "Laravel" + ], + "branch-alias": { + "dev-master": "0.2-dev" + } + }, + "autoload": { + "psr-4": { + "PragmaRX\\Google2FALaravel\\": "src/", + "PragmaRX\\Google2FALaravel\\Tests\\": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Antonio Carlos Ribeiro", + "email": "acr@antoniocarlosribeiro.com", + "role": "Creator & Designer" + } + ], + "description": "A One Time Password Authentication package, compatible with Google Authenticator.", + "keywords": [ + "Authentication", + "Two Factor Authentication", + "google2fa", + "laravel" + ], + "support": { + "issues": "https://github.com/antonioribeiro/google2fa-laravel/issues", + "source": "https://github.com/antonioribeiro/google2fa-laravel/tree/v3.0.1" + }, + "time": "2026-03-17T20:54:53+00:00" + }, + { + "name": "pragmarx/google2fa-qrcode", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/antonioribeiro/google2fa-qrcode.git", + "reference": "c23ebcc3a50de0d1566016a6dd1486e183bb78e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/antonioribeiro/google2fa-qrcode/zipball/c23ebcc3a50de0d1566016a6dd1486e183bb78e1", + "reference": "c23ebcc3a50de0d1566016a6dd1486e183bb78e1", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "pragmarx/google2fa": "^4.0|^5.0|^6.0|^7.0|^8.0" + }, + "require-dev": { + "bacon/bacon-qr-code": "^2.0", + "chillerlan/php-qrcode": "^1.0|^2.0|^3.0|^4.0", + "khanamiryan/qrcode-detector-decoder": "^1.0", + "phpunit/phpunit": "~4|~5|~6|~7|~8|~9" + }, + "suggest": { + "bacon/bacon-qr-code": "For QR Code generation, requires imagick", + "chillerlan/php-qrcode": "For QR Code generation" + }, + "type": "library", + "extra": { + "component": "package", + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "PragmaRX\\Google2FAQRCode\\": "src/", + "PragmaRX\\Google2FAQRCode\\Tests\\": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Antonio Carlos Ribeiro", + "email": "acr@antoniocarlosribeiro.com", + "role": "Creator & Designer" + } + ], + "description": "QR Code package for Google2FA", + "keywords": [ + "2fa", + "Authentication", + "Two Factor Authentication", + "google2fa", + "qr code", + "qrcode" + ], + "support": { + "issues": "https://github.com/antonioribeiro/google2fa-qrcode/issues", + "source": "https://github.com/antonioribeiro/google2fa-qrcode/tree/v3.0.1" + }, + "time": "2025-09-19T23:02:26+00:00" + }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -3412,6 +5505,103 @@ "dev-master": "1.0.x-dev" } }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -3424,7 +5614,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", @@ -3436,25 +5626,131 @@ "container-interop", "psr" ], - "time": "2017-02-14T16:28:37+00:00" + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" }, { - "name": "psr/http-factory", - "version": "1.0.1", + "name": "psr/event-dispatcher", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", "shasum": "" }, "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -3474,10 +5770,10 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", "keywords": [ "factory", "http", @@ -3488,29 +5784,32 @@ "request", "response" ], - "time": "2019-04-30T12:38:16+00:00" + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -3525,7 +5824,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -3538,34 +5837,37 @@ "request", "response" ], - "time": "2016-08-06T14:39:51+00:00" + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/log", - "version": "1.1.3", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3575,7 +5877,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for logging libraries", @@ -3585,29 +5887,32 @@ "psr", "psr-3" ], - "time": "2020-03-23T09:12:05+00:00" + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.2" + }, + "time": "2024-09-11T13:17:53+00:00" }, { "name": "psr/simple-cache", - "version": "1.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -3622,7 +5927,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for simple caching", @@ -3633,49 +5938,56 @@ "psr-16", "simple-cache" ], - "time": "2017-10-23T01:57:42+00:00" + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" }, { "name": "psy/psysh", - "version": "v0.10.4", + "version": "v0.12.22", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560" + "reference": "3be75d5b9244936dd4ac62ade2bfb004d13acf0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/a8aec1b2981ab66882a01cce36a49b6317dc3560", - "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/3be75d5b9244936dd4ac62ade2bfb004d13acf0f", + "reference": "3be75d5b9244936dd4ac62ade2bfb004d13acf0f", "shasum": "" }, "require": { - "dnoegel/php-xdg-base-dir": "0.1.*", "ext-json": "*", "ext-tokenizer": "*", - "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3", - "php": "^8.0 || ^7.0 || ^5.5.9", - "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10", - "symfony/var-dumper": "~5.0|~4.0|~3.0|~2.7" + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.*" + "composer/class-map-generator": "^1.6" }, "suggest": { + "composer/class-map-generator": "Improved tab completion performance with better class discovery.", "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", - "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." }, "bin": [ "bin/psysh" ], "type": "library", "extra": { + "bamarni-bin": { + "bin-links": false, + "forward-command": false + }, "branch-alias": { - "dev-master": "0.10.x-dev" + "dev-main": "0.12.x-dev" } }, "autoload": { @@ -3693,19 +6005,22 @@ "authors": [ { "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" + "email": "justin@justinhileman.info" } ], "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", + "homepage": "https://psysh.org", "keywords": [ "REPL", "console", "interactive", "shell" ], - "time": "2020-05-03T19:32:03+00:00" + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.22" + }, + "time": "2026-03-22T23:03:24+00:00" }, { "name": "ralouphie/getallheaders", @@ -3745,66 +6060,61 @@ } ], "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, "time": "2019-03-08T08:55:37+00:00" }, { - "name": "ramsey/uuid", - "version": "3.9.3", + "name": "ramsey/collection", + "version": "2.1.1", "source": { "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92" + "url": "https://github.com/ramsey/collection.git", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92", - "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", "shasum": "" }, "require": { - "ext-json": "*", - "paragonie/random_compat": "^1 | ^2 | 9.99.99", - "php": "^5.4 | ^7 | ^8", - "symfony/polyfill-ctype": "^1.8" - }, - "replace": { - "rhumsaa/uuid": "self.version" + "php": "^8.1" }, "require-dev": { - "codeception/aspect-mock": "^1 | ^2", - "doctrine/annotations": "^1.2", - "goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1", - "jakub-onderka/php-parallel-lint": "^1", - "mockery/mockery": "^0.9.11 | ^1", - "moontoast/math": "^1.1", - "paragonie/random-lib": "^2", - "php-mock/php-mock-phpunit": "^0.3 | ^1.1", - "phpunit/phpunit": "^4.8 | ^5.4 | ^6.5", - "squizlabs/php_codesniffer": "^3.5" - }, - "suggest": { - "ext-ctype": "Provides support for PHP Ctype functions", - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", - "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.x-dev" + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" } }, "autoload": { "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] + "Ramsey\\Collection\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3815,37 +6125,113 @@ "name": "Ben Ramsey", "email": "ben@benramsey.com", "homepage": "https://benramsey.com" - }, - { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" } ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", - "homepage": "https://github.com/ramsey/uuid", + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.1.1" + }, + "time": "2025-03-22T05:38:12+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.9.2", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "8429c78ca35a09f27565311b98101e2826affde0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0", + "reference": "8429c78ca35a09f27565311b98101e2826affde0", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.25", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", "keywords": [ "guid", "identifier", "uuid" ], - "time": "2020-02-21T04:36:14+00:00" + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.9.2" + }, + "time": "2025-12-14T04:43:48+00:00" }, { "name": "reliese/laravel", - "version": "v0.0.15", + "version": "v1.4.0", "source": { "type": "git", "url": "https://github.com/reliese/laravel.git", - "reference": "2fe06849c7a96d17f245d5a9fff46081bf91e133" + "reference": "2181113d420cae67ec68b6bbe6f325900856d6b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reliese/laravel/zipball/2fe06849c7a96d17f245d5a9fff46081bf91e133", - "reference": "2fe06849c7a96d17f245d5a9fff46081bf91e133", + "url": "https://api.github.com/repos/reliese/laravel/zipball/2181113d420cae67ec68b6bbe6f325900856d6b9", + "reference": "2181113d420cae67ec68b6bbe6f325900856d6b9", "shasum": "" }, "require": { @@ -3855,12 +6241,12 @@ "illuminate/database": ">=5.1", "illuminate/filesystem": ">=5.1", "illuminate/support": ">=5.1", - "php": ">=5.6.4" + "php": "^7.3|^8.0" }, "require-dev": { "fzaninotto/faker": "~1.4", - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "~5.0" + "mockery/mockery": ">=1.4", + "phpunit/phpunit": "^9" }, "type": "library", "extra": { @@ -3891,33 +6277,96 @@ "laravel", "reliese" ], - "time": "2020-03-14T21:38:59+00:00" + "support": { + "issues": "https://github.com/reliese/laravel/issues", + "source": "https://github.com/reliese/laravel" + }, + "time": "2025-03-20T16:16:48+00:00" }, { - "name": "sabberworm/php-css-parser", - "version": "8.3.0", + "name": "rguedes/pdfmerger", + "version": "1.0.4", "source": { "type": "git", - "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f" + "url": "https://github.com/rguedes/PDFMerger.git", + "reference": "8e1caa1093160107bb1796ce07d9fc3d6769fc34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", - "reference": "91bcc3e3fdb7386c9a2e0e0aa09ca75cc43f121f", + "url": "https://api.github.com/repos/rguedes/PDFMerger/zipball/8e1caa1093160107bb1796ce07d9fc3d6769fc34", + "reference": "8e1caa1093160107bb1796ce07d9fc3d6769fc34", "shasum": "" }, "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "codacy/coverage": "^1.4", - "phpunit/phpunit": "~4.8" + "php": ">=5.2.0" }, "type": "library", "autoload": { "psr-0": { - "Sabberworm\\CSS": "lib/" + "PDFMerger": "Classes/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL" + ], + "authors": [ + { + "name": "Myo Kyaw Htun", + "homepage": "https://github.com/myokyawhtun" + }, + { + "name": "Rolando Guedes", + "homepage": "https://github.com/rguedes" + } + ], + "description": "PDFMerger for PHP", + "homepage": "https://github.com/rguedes/PDFMerger", + "keywords": [ + "pdf", + "php" + ], + "support": { + "issues": "https://github.com/rguedes/PDFMerger/issues", + "source": "https://github.com/rguedes/PDFMerger/tree/1.0.4" + }, + "abandoned": true, + "time": "2019-01-04T09:47:31+00:00" + }, + { + "name": "sabberworm/php-css-parser", + "version": "v8.9.0", + "source": { + "type": "git", + "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", + "reference": "d8e916507b88e389e26d4ab03c904a082aa66bb9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/d8e916507b88e389e26d4ab03c904a082aa66bb9", + "reference": "d8e916507b88e389e26d4ab03c904a082aa66bb9", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": "^5.6.20 || ^7.0.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + }, + "require-dev": { + "phpunit/phpunit": "5.7.27 || 6.5.14 || 7.5.20 || 8.5.41", + "rawr/cross-data-providers": "^2.0.0" + }, + "suggest": { + "ext-mbstring": "for parsing UTF-8 CSS" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "9.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sabberworm\\CSS\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3927,31 +6376,47 @@ "authors": [ { "name": "Raphael Schweikert" + }, + { + "name": "Oliver Klee", + "email": "github@oliverklee.de" + }, + { + "name": "Jake Hotson", + "email": "jake.github@qzdesign.co.uk" } ], "description": "Parser for CSS Files written in PHP", - "homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser", + "homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser", "keywords": [ "css", "parser", "stylesheet" ], - "time": "2019-02-22T07:42:52+00:00" + "support": { + "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.9.0" + }, + "time": "2025-07-11T13:20:48+00:00" }, { "name": "setasign/fpdf", - "version": "1.8.2", + "version": "1.8.6", "source": { "type": "git", "url": "https://github.com/Setasign/FPDF.git", - "reference": "d77904018090c17dc9f3ab6e944679a7a47e710a" + "reference": "0838e0ee4925716fcbbc50ad9e1799b5edfae0a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Setasign/FPDF/zipball/d77904018090c17dc9f3ab6e944679a7a47e710a", - "reference": "d77904018090c17dc9f3ab6e944679a7a47e710a", + "url": "https://api.github.com/repos/Setasign/FPDF/zipball/0838e0ee4925716fcbbc50ad9e1799b5edfae0a0", + "reference": "0838e0ee4925716fcbbc50ad9e1799b5edfae0a0", "shasum": "" }, + "require": { + "ext-gd": "*", + "ext-zlib": "*" + }, "type": "library", "autoload": { "classmap": [ @@ -3975,34 +6440,38 @@ "fpdf", "pdf" ], - "time": "2019-12-08T10:32:10+00:00" + "support": { + "source": "https://github.com/Setasign/FPDF/tree/1.8.6" + }, + "time": "2023-06-26T14:44:25+00:00" }, { "name": "setasign/fpdi", - "version": "v2.3.3", + "version": "v2.6.6", "source": { "type": "git", "url": "https://github.com/Setasign/FPDI.git", - "reference": "50c388860a73191e010810ed57dbed795578e867" + "reference": "de0cf35911be3e9ea63b48e0f307883b1c7c48ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Setasign/FPDI/zipball/50c388860a73191e010810ed57dbed795578e867", - "reference": "50c388860a73191e010810ed57dbed795578e867", + "url": "https://api.github.com/repos/Setasign/FPDI/zipball/de0cf35911be3e9ea63b48e0f307883b1c7c48ac", + "reference": "de0cf35911be3e9ea63b48e0f307883b1c7c48ac", "shasum": "" }, "require": { "ext-zlib": "*", - "php": "^5.6 || ^7.0" + "php": ">=7.2 <=8.5.99999" }, "conflict": { "setasign/tfpdf": "<1.31" }, "require-dev": { - "phpunit/phpunit": "~5.7", - "setasign/fpdf": "~1.8", - "setasign/tfpdf": "1.31", - "tecnickcom/tcpdf": "~6.2" + "phpunit/phpunit": "^8.5.52", + "setasign/fpdf": "~1.8.6", + "setasign/tfpdf": "~1.33", + "squizlabs/php_codesniffer": "^3.5", + "tecnickcom/tcpdf": "^6.8" }, "suggest": { "setasign/fpdf": "FPDI will extend this class but as it is also possible to use TCPDF or tFPDF as an alternative. There's no fixed dependency configured." @@ -4036,53 +6505,47 @@ "fpdi", "pdf" ], + "support": { + "issues": "https://github.com/Setasign/FPDI/issues", + "source": "https://github.com/Setasign/FPDI/tree/v2.6.6" + }, "funding": [ { "url": "https://tidelift.com/funding/github/packagist/setasign/fpdi", "type": "tidelift" } ], - "time": "2020-04-28T12:40:35+00:00" + "time": "2026-03-13T08:38:20+00:00" }, { - "name": "swiftmailer/swiftmailer", - "version": "v6.2.3", + "name": "spatie/once", + "version": "3.1.2", "source": { "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9" + "url": "https://github.com/spatie/once.git", + "reference": "54c9908aff00913e82422da6938fba7bd2bf6c08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9", - "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9", + "url": "https://api.github.com/repos/spatie/once/zipball/54c9908aff00913e82422da6938fba7bd2bf6c08", + "reference": "54c9908aff00913e82422da6938fba7bd2bf6c08", "shasum": "" }, "require": { - "egulias/email-validator": "~2.0", - "php": ">=7.0.0", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" + "php": "^8.0" }, "require-dev": { - "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "^3.4.19|^4.1.8" - }, - "suggest": { - "ext-intl": "Needed to support internationalized email addresses", - "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" + "pestphp/pest": "^1.21", + "symfony/var-dumper": "^5.1|^6.0|^7.0|^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.2-dev" - } - }, "autoload": { "files": [ - "lib/swift_required.php" - ] + "src/functions.php" + ], + "psr-4": { + "Spatie\\Once\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4090,72 +6553,77 @@ ], "authors": [ { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" } ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", + "description": "A magic memoization function", + "homepage": "https://github.com/spatie/once", "keywords": [ - "email", - "mail", - "mailer" + "cache", + "callable", + "memoization", + "once", + "spatie" ], - "time": "2019-11-12T09:31:26+00:00" + "support": { + "source": "https://github.com/spatie/once/tree/3.1.2" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + } + ], + "time": "2025-11-25T15:44:06+00:00" }, { "name": "symfony/console", - "version": "v4.4.8", + "version": "v6.4.36", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "10bb3ee3c97308869d53b3e3d03f6ac23ff985f7" + "reference": "9f481cfb580db8bcecc9b2d4c63f3e13df022ad5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/10bb3ee3c97308869d53b3e3d03f6ac23ff985f7", - "reference": "10bb3ee3c97308869d53b3e3d03f6ac23ff985f7", + "url": "https://api.github.com/repos/symfony/console/zipball/9f481cfb580db8bcecc9b2d4c63f3e13df022ad5", + "reference": "9f481cfb580db8bcecc9b2d4c63f3e13df022ad5", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/lock": "<4.4", - "symfony/process": "<3.3" + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" }, "provide": { - "psr/log-implementation": "1.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Console\\": "" @@ -4178,8 +6646,17 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Console Component", + "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v6.4.36" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4189,36 +6666,35 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-03-30T11:41:10+00:00" + "time": "2026-03-27T15:30:51+00:00" }, { "name": "symfony/css-selector", - "version": "v5.0.8", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "5f8d5271303dad260692ba73dfa21777d38e124e" + "reference": "b055f228a4178a1d6774909903905e3475f3eac8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/5f8d5271303dad260692ba73dfa21777d38e124e", - "reference": "5f8d5271303dad260692ba73dfa21777d38e124e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/b055f228a4178a1d6774909903905e3475f3eac8", + "reference": "b055f228a4178a1d6774909903905e3475f3eac8", "shasum": "" }, "require": { - "php": "^7.2.5" + "php": ">=8.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\CssSelector\\": "" @@ -4245,8 +6721,11 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony CssSelector Component", + "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v7.4.8" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4256,49 +6735,47 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-03-27T16:56:45+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { - "name": "symfony/debug", - "version": "v4.4.8", + "name": "symfony/deprecation-contracts", + "version": "v3.6.0", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "346636d2cae417992ecfd761979b2ab98b339a45" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/346636d2cae417992ecfd761979b2ab98b339a45", - "reference": "346636d2cae417992ecfd761979b2ab98b339a45", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { - "php": "^7.1.3", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" + "php": ">=8.1" }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { - "dev-master": "4.4-dev" + "dev-main": "3.6-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4307,16 +6784,19 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Debug Component", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4331,38 +6811,40 @@ "type": "tidelift" } ], - "time": "2020-03-27T16:54:36+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.8", + "version": "v6.4.36", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "7e9828fc98aa1cf27b422fe478a84f5b0abb7358" + "reference": "2ea68f0e1835ad6a126f93bbc14cd236c10ab361" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/7e9828fc98aa1cf27b422fe478a84f5b0abb7358", - "reference": "7e9828fc98aa1cf27b422fe478a84f5b0abb7358", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/2ea68f0e1835ad6a126f93bbc14cd236c10ab361", + "reference": "2ea68f0e1835ad6a126f93bbc14cd236c10ab361", "shasum": "" }, "require": { - "php": "^7.1.3", - "psr/log": "~1.0", - "symfony/debug": "^4.4.5", - "symfony/var-dumper": "^4.4|^5.0" + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" }, "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\ErrorHandler\\": "" @@ -4385,8 +6867,11 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony ErrorHandler Component", + "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v6.4.36" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4396,57 +6881,55 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-03-30T14:07:33+00:00" + "time": "2026-03-10T15:56:14+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.8", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "abc8e3618bfdb55e44c8c6a00abd333f831bbfed" + "reference": "f57b899fa736fd71121168ef268f23c206083f0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/abc8e3618bfdb55e44c8c6a00abd333f831bbfed", - "reference": "abc8e3618bfdb55e44c8c6a00abd333f831bbfed", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f57b899fa736fd71121168ef268f23c206083f0a", + "reference": "f57b899fa736fd71121168ef268f23c206083f0a", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/event-dispatcher-implementation": "2.0|3.0" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" @@ -4469,8 +6952,11 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony EventDispatcher Component", + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.8" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4480,38 +6966,43 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-03-27T16:54:36+00:00" + "time": "2026-03-30T13:54:39+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.7", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18" + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18", - "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", "shasum": "" }, "require": { - "php": "^7.1.3" - }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" + "php": ">=8.1", + "psr/event-dispatcher": "^1" }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { - "dev-master": "1.1-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -4543,31 +7034,46 @@ "interoperability", "standards" ], - "time": "2019-09-17T09:54:03+00:00" + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/finder", - "version": "v4.4.8", + "version": "v6.4.34", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "5729f943f9854c5781984ed4907bbb817735776b" + "reference": "9590e86be1d1c57bfbb16d0dd040345378c20896" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/5729f943f9854c5781984ed4907bbb817735776b", - "reference": "5729f943f9854c5781984ed4907bbb817735776b", + "url": "https://api.github.com/repos/symfony/finder/zipball/9590e86be1d1c57bfbb16d0dd040345378c20896", + "reference": "9590e86be1d1c57bfbb16d0dd040345378c20896", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Finder\\": "" @@ -4590,8 +7096,11 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Finder Component", + "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v6.4.34" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4601,42 +7110,51 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-03-27T16:54:36+00:00" + "time": "2026-01-28T15:16:37+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.4.8", + "version": "v6.4.35", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "ec5bd254c223786f5fa2bb49a1e705c1b8e7cee2" + "reference": "cffffd0a2c037117b742b4f8b379a22a2a33f6d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ec5bd254c223786f5fa2bb49a1e705c1b8e7cee2", - "reference": "ec5bd254c223786f5fa2bb49a1e705c1b8e7cee2", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/cffffd0a2c037117b742b4f8b379a22a2a33f6d2", + "reference": "cffffd0a2c037117b742b4f8b379a22a2a33f6d2", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/mime": "^4.3|^5.0", - "symfony/polyfill-mbstring": "~1.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" }, "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4.12|^7.1.5", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\HttpFoundation\\": "" @@ -4659,8 +7177,11 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpFoundation Component", + "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v6.4.35" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4670,77 +7191,88 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-04-18T20:40:08+00:00" + "time": "2026-03-06T11:15:58+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.8", + "version": "v6.4.36", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "1799a6c01f0db5851f399151abdb5d6393fec277" + "reference": "4087ec02119de450e9ebb60806d69c6bb8c6e468" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1799a6c01f0db5851f399151abdb5d6393fec277", - "reference": "1799a6c01f0db5851f399151abdb5d6393fec277", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4087ec02119de450e9ebb60806d69c6bb8c6e468", + "reference": "4087ec02119de450e9ebb60806d69c6bb8c6e468", "shasum": "" }, "require": { - "php": "^7.1.3", - "psr/log": "~1.0", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9" + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.34|<2.4,>=2" + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.3", + "twig/twig": "<2.13" }, "provide": { - "psr/log-implementation": "1.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "psr/cache": "~1.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.34|^2.4|^3.0" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4.1|^7.0.1", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.5|^6.0.5|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4.4|^7.0.4", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", + "twig/twig": "^2.13|^3.0.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\HttpKernel\\": "" @@ -4763,8 +7295,11 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpKernel Component", + "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v6.4.36" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4774,45 +7309,139 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-04-28T18:47:42+00:00" + "time": "2026-03-31T20:38:11+00:00" }, { - "name": "symfony/mime", - "version": "v5.0.8", + "name": "symfony/mailer", + "version": "v6.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "5d6c81c39225a750f3f43bee15f03093fb9aaa0b" + "url": "https://github.com/symfony/mailer.git", + "reference": "01b846f48e53ee4096692a383637a1fa4d577301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/5d6c81c39225a750f3f43bee15f03093fb9aaa0b", - "reference": "5d6c81c39225a750f3f43bee15f03093fb9aaa0b", + "url": "https://api.github.com/repos/symfony/mailer/zipball/01b846f48e53ee4096692a383637a1fa4d577301", + "reference": "01b846f48e53ee4096692a383637a1fa4d577301", "shasum": "" }, "require": { - "php": "^7.2.5", + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.1", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v6.4.34" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-24T09:34:36+00:00" + }, + { + "name": "symfony/mime", + "version": "v6.4.36", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "9c31726137c70798f815fb98293ffb8a2a47694c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/9c31726137c70798f815fb98293ffb8a2a47694c", + "reference": "9c31726137c70798f815fb98293ffb8a2a47694c", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, "conflict": { - "symfony/mailer": "<4.4" + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, "require-dev": { - "egulias/email-validator": "^2.1.10", - "symfony/dependency-injection": "^4.4|^5.0" + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.4|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Mime\\": "" @@ -4835,12 +7464,15 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "A library to manipulate MIME messages", + "description": "Allows manipulating MIME messages", "homepage": "https://symfony.com", "keywords": [ "mime", "mime-type" ], + "support": { + "source": "https://github.com/symfony/mime/tree/v6.4.36" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4850,46 +7482,54 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-04-17T03:29:44+00:00" + "time": "2026-03-30T09:31:23+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.16.0", + "version": "v1.35.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "1aab00e39cebaef4d8652497f46c15c1b7e45294" + "reference": "141046a8f9477948ff284fa65be2095baafb94f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1aab00e39cebaef4d8652497f46c15c1b7e45294", - "reference": "1aab00e39cebaef4d8652497f46c15c1b7e45294", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", + "reference": "141046a8f9477948ff284fa65be2095baafb94f2", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" }, "suggest": { "ext-ctype": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.16-dev" + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4913,6 +7553,9 @@ "polyfill", "portable" ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.35.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4922,46 +7565,51 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-05-08T16:50:20+00:00" + "time": "2026-04-10T16:19:22+00:00" }, { - "name": "symfony/polyfill-iconv", - "version": "v1.16.0", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.35.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "d51debc1391a609c514f6f072dd59a61b461502a" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "ad1b7b9092976d6c948b8a187cec9faaea9ec1df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/d51debc1391a609c514f6f072dd59a61b461502a", - "reference": "d51debc1391a609c514f6f072dd59a61b461502a", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/ad1b7b9092976d6c948b8a187cec9faaea9ec1df", + "reference": "ad1b7b9092976d6c948b8a187cec9faaea9ec1df", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.2" }, "suggest": { - "ext-iconv": "For best performance" + "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.16-dev" + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4977,15 +7625,19 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Iconv extension", + "description": "Symfony polyfill for intl's grapheme_* functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "iconv", + "grapheme", + "intl", "polyfill", "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.35.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -4995,48 +7647,52 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-05-08T16:50:20+00:00" + "time": "2026-04-10T16:19:22+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.16.0", + "version": "v1.35.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "ab0af41deab94ec8dceb3d1fb408bdd038eba4dc" + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ab0af41deab94ec8dceb3d1fb408bdd038eba4dc", - "reference": "ab0af41deab94ec8dceb3d1fb408bdd038eba4dc", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php72": "^1.10" + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.16-dev" + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5047,6 +7703,10 @@ "name": "Laurent Bassin", "email": "laurent@bassin.info" }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" @@ -5062,6 +7722,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.35.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5071,46 +7734,140 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-05-08T16:50:20+00:00" + "time": "2024-09-10T14:38:51+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.16.0", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.35.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "a54881ec0ab3b2005c406aed0023c062879031e7" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a54881ec0ab3b2005c406aed0023c062879031e7", - "reference": "a54881ec0ab3b2005c406aed0023c062879031e7", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.35.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.35.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6a21eb99c6973357967f6ce3708cd55a6bec6315", + "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" }, "suggest": { "ext-mbstring": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.16-dev" + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5135,6 +7892,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.35.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5144,42 +7904,50 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-05-08T16:50:20+00:00" + "time": "2026-04-10T17:25:58+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.16.0", + "name": "symfony/polyfill-php80", + "version": "v1.35.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "42fda6d7380e5c940d7f68341ccae89d5ab9963b" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/42fda6d7380e5c940d7f68341ccae89d5ab9963b", - "reference": "42fda6d7380e5c940d7f68341ccae89d5ab9963b", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dfb55726c3a76ea3b6459fcfda1ec2d80a682411", + "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.16-dev" + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5187,6 +7955,10 @@ "MIT" ], "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -5196,7 +7968,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -5204,6 +7976,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.35.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5213,43 +7988,48 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-05-08T17:28:34+00:00" + "time": "2026-04-10T16:19:22+00:00" }, { - "name": "symfony/polyfill-php73", - "version": "v1.16.0", + "name": "symfony/polyfill-php83", + "version": "v1.35.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "7e95fe59d12169fcf4041487e4bf34fca37ee0ed" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "3600c2cb22399e25bb226e4a135ce91eeb2a6149" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/7e95fe59d12169fcf4041487e4bf34fca37ee0ed", - "reference": "7e95fe59d12169fcf4041487e4bf34fca37ee0ed", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/3600c2cb22399e25bb226e4a135ce91eeb2a6149", + "reference": "3600c2cb22399e25bb226e4a135ce91eeb2a6149", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.16-dev" + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -5268,7 +8048,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -5276,6 +8056,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.35.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5285,36 +8068,118 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-05-02T14:56:09+00:00" + "time": "2026-04-10T17:25:58+00:00" }, { - "name": "symfony/process", - "version": "v4.4.8", + "name": "symfony/polyfill-uuid", + "version": "v1.35.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "4b6a9a4013baa65d409153cbb5a895bf093dc7f4" + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "26dfec253c4cf3e51b541b52ddf7e42cb0908e94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/4b6a9a4013baa65d409153cbb5a895bf093dc7f4", - "reference": "4b6a9a4013baa65d409153cbb5a895bf093dc7f4", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/26dfec253c4cf3e51b541b52ddf7e42cb0908e94", + "reference": "26dfec253c4cf3e51b541b52ddf7e42cb0908e94", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.2" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "4.4-dev" + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.35.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-04-10T16:19:22+00:00" + }, + { + "name": "symfony/process", + "version": "v6.4.33", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "c46e854e79b52d07666e43924a20cb6dc546644e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/c46e854e79b52d07666e43924a20cb6dc546644e", + "reference": "c46e854e79b52d07666e43924a20cb6dc546644e", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", "autoload": { "psr-4": { "Symfony\\Component\\Process\\": "" @@ -5337,8 +8202,11 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Process Component", + "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v6.4.33" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5348,35 +8216,46 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-04-15T15:56:18+00:00" + "time": "2026-01-23T16:02:12+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v2.0.0", + "version": "v2.3.1", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "ce709cd9c90872c08c2427b45739d5f3c781ab4f" + "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/ce709cd9c90872c08c2427b45739d5f3c781ab4f", - "reference": "ce709cd9c90872c08c2427b45739d5f3c781ab4f", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/581ca6067eb62640de5ff08ee1ba6850a0ee472e", + "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e", "shasum": "" }, "require": { - "php": "^7.1", - "psr/http-message": "^1.0", - "symfony/http-foundation": "^4.4 || ^5.0" + "php": ">=7.2.5", + "psr/http-message": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/http-foundation": "^5.4 || ^6.0" }, "require-dev": { "nyholm/psr7": "^1.1", - "symfony/phpunit-bridge": "^4.4 || ^5.0" + "psr/log": "^1.1 || ^2 || ^3", + "symfony/browser-kit": "^5.4 || ^6.0", + "symfony/config": "^5.4 || ^6.0", + "symfony/event-dispatcher": "^5.4 || ^6.0", + "symfony/framework-bundle": "^5.4 || ^6.0", + "symfony/http-kernel": "^5.4 || ^6.0", + "symfony/phpunit-bridge": "^6.2" }, "suggest": { "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" @@ -5384,7 +8263,7 @@ "type": "symfony-bridge", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "2.3-dev" } }, "autoload": { @@ -5417,52 +8296,60 @@ "psr-17", "psr-7" ], - "time": "2020-01-02T08:07:11+00:00" + "support": { + "issues": "https://github.com/symfony/psr-http-message-bridge/issues", + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.3.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-26T11:53:26+00:00" }, { "name": "symfony/routing", - "version": "v4.4.8", + "version": "v6.4.34", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "67b4e1f99c050cbc310b8f3d0dbdc4b0212c052c" + "reference": "5ab3a3e1a03535ec5ca6ce2d39e4369a1096ae47" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/67b4e1f99c050cbc310b8f3d0dbdc4b0212c052c", - "reference": "67b4e1f99c050cbc310b8f3d0dbdc4b0212c052c", + "url": "https://api.github.com/repos/symfony/routing/zipball/5ab3a3e1a03535ec5ca6ce2d39e4369a1096ae47", + "reference": "5ab3a3e1a03535ec5ca6ce2d39e4369a1096ae47", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "doctrine/annotations": "<1.12", + "symfony/config": "<6.2", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" }, "require-dev": { - "doctrine/annotations": "~1.2", - "psr/log": "~1.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" + "doctrine/annotations": "^1.12|^2", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.2|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Routing\\": "" @@ -5485,7 +8372,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Routing Component", + "description": "Maps an HTTP request to a set of configuration variables", "homepage": "https://symfony.com", "keywords": [ "router", @@ -5493,6 +8380,9 @@ "uri", "url" ], + "support": { + "source": "https://github.com/symfony/routing/tree/v6.4.34" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5502,44 +8392,56 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-04-21T19:59:53+00:00" + "time": "2026-02-24T17:34:50+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.0.1", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "144c5e51266b281231e947b51223ba14acf1a749" + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", - "reference": "144c5e51266b281231e947b51223ba14acf1a749", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", "shasum": "" }, "require": { - "php": "^7.2.5", - "psr/container": "^1.0" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, - "suggest": { - "symfony/service-implementation": "" + "conflict": { + "ext-psr": "<1.1|>=2" }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.6-dev" } }, "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5565,59 +8467,173 @@ "interoperability", "standards" ], - "time": "2019-11-18T17:27:11+00:00" + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T11:30:57+00:00" }, { - "name": "symfony/translation", - "version": "v4.4.8", + "name": "symfony/string", + "version": "v7.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "8272bbd2b7e220ef812eba2a2b30068a5c64b191" + "url": "https://github.com/symfony/string.git", + "reference": "114ac57257d75df748eda23dd003878080b8e688" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/8272bbd2b7e220ef812eba2a2b30068a5c64b191", - "reference": "8272bbd2b7e220ef812eba2a2b30068a5c64b191", + "url": "https://api.github.com/repos/symfony/string/zipball/114ac57257d75df748eda23dd003878080b8e688", + "reference": "114ac57257d75df748eda23dd003878080b8e688", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^1.1.6|^2" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.33", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "symfony/translation-implementation": "1.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/finder": "~2.8|~3.0|~4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "symfony/emoji": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v7.4.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-03-24T13:12:05+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.4.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "d07d117db41341511671b0a1a2be48f2772189ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/d07d117db41341511671b0a1a2be48f2772189ce", + "reference": "d07d117db41341511671b0a1a2be48f2772189ce", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.18|^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { "Symfony\\Component\\Translation\\": "" }, @@ -5639,8 +8655,11 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Translation Component", + "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v6.4.34" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5650,43 +8669,51 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-04-12T16:45:36+00:00" + "time": "2026-02-16T20:44:03+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.0.1", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed" + "reference": "65a8bc82080447fae78373aa10f8d13b38338977" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/8cc682ac458d75557203b2f2f14b0b92e1c744ed", - "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977", "shasum": "" }, "require": { - "php": "^7.2.5" - }, - "suggest": { - "symfony/translation-implementation": "" + "php": ">=8.1" }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.6-dev" } }, "autoload": { "psr-4": { "Symfony\\Contracts\\Translation\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5712,51 +8739,141 @@ "interoperability", "standards" ], - "time": "2019-11-18T17:27:11+00:00" + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T13:41:35+00:00" }, { - "name": "symfony/var-dumper", - "version": "v4.4.8", + "name": "symfony/uid", + "version": "v6.4.32", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "c587e04ce5d1aa62d534a038f574d9a709e814cf" + "url": "https://github.com/symfony/uid.git", + "reference": "6b973c385f00341b246f697d82dc01a09107acdd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c587e04ce5d1aa62d534a038f574d9a709e814cf", - "reference": "c587e04ce5d1aa62d534a038f574d9a709e814cf", + "url": "https://api.github.com/repos/symfony/uid/zipball/6b973c385f00341b246f697d82dc01a09107acdd", + "reference": "6b973c385f00341b246f697d82dc01a09107acdd", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" + "php": ">=8.1", + "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "ext-iconv": "*", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^1.34|^2.4|^3.0" + "symfony/console": "^5.4|^6.0|^7.0" }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v6.4.32" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-12-23T15:07:59+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v6.4.36", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "7c8ad9ce4faf6c8a99948e70ce02b601a0439782" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7c8ad9ce4faf6c8a99948e70ce02b601a0439782", + "reference": "7c8ad9ce4faf6c8a99948e70ce02b601a0439782", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "twig/twig": "^2.13|^3.0.4" }, "bin": [ "Resources/bin/var-dump-server" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "files": [ "Resources/functions/dump.php" @@ -5782,12 +8899,15 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony mechanism for exploring and dumping PHP variables", + "description": "Provides mechanisms for walking through any arbitrary PHP variable", "homepage": "https://symfony.com", "keywords": [ "debug", "dump" ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v6.4.36" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5797,40 +8917,46 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-04-12T16:14:02+00:00" + "time": "2026-03-30T15:36:00+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.2", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "dda2ee426acd6d801d5b7fd1001cde9b5f790e15" + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/dda2ee426acd6d801d5b7fd1001cde9b5f790e15", - "reference": "dda2ee426acd6d801d5b7fd1001cde9b5f790e15", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/f0292ccf0ec75843d65027214426b6b163b48b41", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", - "php": "^5.5 || ^7.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0" + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^8.5.21 || ^9.5.10" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -5851,40 +8977,51 @@ ], "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "time": "2019-10-24T08:53:34+00:00" + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.4.0" + }, + "time": "2025-12-02T11:56:42+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v3.6.4", + "version": "v5.6.3", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "10d3f853fdf1f3a6b3c7ea0c4620d2f699713db5" + "reference": "955e7815d677a3eaa7075231212f2110983adecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/10d3f853fdf1f3a6b3c7ea0c4620d2f699713db5", - "reference": "10d3f853fdf1f3a6b3c7ea0c4620d2f699713db5", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", + "reference": "955e7815d677a3eaa7075231212f2110983adecc", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0 || ^8.0", - "phpoption/phpoption": "^1.5", - "symfony/polyfill-ctype": "^1.9" + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.4", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.5", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", "ext-filter": "*", - "ext-pcre": "*", - "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "suggest": { - "ext-filter": "Required to use the boolean validator.", - "ext-pcre": "Required to use most of the library." + "ext-filter": "Required to use the boolean validator." }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "3.6-dev" + "dev-master": "5.6-dev" } }, "autoload": { @@ -5899,13 +9036,13 @@ "authors": [ { "name": "Graham Campbell", - "email": "graham@alt-three.com", - "homepage": "https://gjcampbell.co.uk/" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" }, { "name": "Vance Lucas", "email": "vance@vancelucas.com", - "homepage": "https://vancelucas.com/" + "homepage": "https://github.com/vlucas" } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", @@ -5914,6 +9051,10 @@ "env", "environment" ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3" + }, "funding": [ { "url": "https://github.com/GrahamCampbell", @@ -5924,60 +9065,140 @@ "type": "tidelift" } ], - "time": "2020-05-02T13:46:13+00:00" + "time": "2025-12-27T19:49:13+00:00" }, { - "name": "yajra/laravel-datatables-oracle", - "version": "v9.10.0", + "name": "voku/portable-ascii", + "version": "2.0.3", "source": { "type": "git", - "url": "https://github.com/yajra/laravel-datatables.git", - "reference": "b0b9e2c37b5a17ca35bb2c6d3927bf6176393229" + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yajra/laravel-datatables/zipball/b0b9e2c37b5a17ca35bb2c6d3927bf6176393229", - "reference": "b0b9e2c37b5a17ca35bb2c6d3927bf6176393229", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", "shasum": "" }, "require": { - "illuminate/database": "5.8.*|^6|^7", - "illuminate/filesystem": "5.8.*|^6|^7", - "illuminate/http": "5.8.*|^6|^7", - "illuminate/support": "5.8.*|^6|^7", - "illuminate/view": "5.8.*|^6|^7", - "php": "^7.1.3" + "php": ">=7.0.0" }, "require-dev": { - "orchestra/testbench": "^3.8" + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "https://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.3" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2024-11-21T01:49:47+00:00" + }, + { + "name": "yajra/laravel-datatables-oracle", + "version": "v10.11.4", + "source": { + "type": "git", + "url": "https://github.com/yajra/laravel-datatables.git", + "reference": "a11dc9cf5ec7f7dc68ad0d5959c5e7aec0af29a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yajra/laravel-datatables/zipball/a11dc9cf5ec7f7dc68ad0d5959c5e7aec0af29a5", + "reference": "a11dc9cf5ec7f7dc68ad0d5959c5e7aec0af29a5", + "shasum": "" + }, + "require": { + "illuminate/database": "^9|^10", + "illuminate/filesystem": "^9|^10", + "illuminate/http": "^9|^10", + "illuminate/support": "^9|^10", + "illuminate/view": "^9|^10", + "php": "^8.0.2" + }, + "require-dev": { + "algolia/algoliasearch-client-php": "^3.4", + "larastan/larastan": "^2.4", + "laravel/scout": "^10.5", + "meilisearch/meilisearch-php": "^1.4", + "orchestra/testbench": "^8", + "yajra/laravel-datatables-html": "^9.3.4|^10" }, "suggest": { "yajra/laravel-datatables-buttons": "Plugin for server-side exporting of dataTables.", "yajra/laravel-datatables-editor": "Plugin to use DataTables Editor (requires a license).", + "yajra/laravel-datatables-export": "Plugin for server-side exporting using livewire and queue worker.", "yajra/laravel-datatables-fractal": "Plugin for server-side response using Fractal.", "yajra/laravel-datatables-html": "Plugin for server-side HTML builder of dataTables." }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "9.0-dev" - }, "laravel": { - "providers": [ - "Yajra\\DataTables\\DataTablesServiceProvider" - ], "aliases": { "DataTables": "Yajra\\DataTables\\Facades\\DataTables" - } + }, + "providers": [ + "Yajra\\DataTables\\DataTablesServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "10.x-dev" } }, "autoload": { - "psr-4": { - "Yajra\\DataTables\\": "src/" - }, "files": [ "src/helper.php" - ] + ], + "psr-4": { + "Yajra\\DataTables\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5989,73 +9210,75 @@ "email": "aqangeles@gmail.com" } ], - "description": "jQuery DataTables API for Laravel 4|5", + "description": "jQuery DataTables API for Laravel 4|5|6|7|8|9|10", "keywords": [ "datatables", "jquery", "laravel" ], + "support": { + "issues": "https://github.com/yajra/laravel-datatables/issues", + "source": "https://github.com/yajra/laravel-datatables/tree/v10.11.4" + }, "funding": [ { - "url": "https://www.paypal.me/yajra", - "type": "custom" - }, - { - "url": "https://www.patreon.com/yajra", - "type": "patreon" + "url": "https://github.com/sponsors/yajra", + "type": "github" } ], - "time": "2020-04-23T01:21:11+00:00" + "time": "2024-02-28T05:00:23+00:00" } ], "packages-dev": [ { "name": "barryvdh/laravel-debugbar", - "version": "v3.3.3", + "version": "v3.16.5", "source": { "type": "git", - "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "57f2219f6d9efe41ed1bc880d86701c52f261bf5" + "url": "https://github.com/fruitcake/laravel-debugbar.git", + "reference": "e85c0a8464da67e5b4a53a42796d46a43fc06c9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/57f2219f6d9efe41ed1bc880d86701c52f261bf5", - "reference": "57f2219f6d9efe41ed1bc880d86701c52f261bf5", + "url": "https://api.github.com/repos/fruitcake/laravel-debugbar/zipball/e85c0a8464da67e5b4a53a42796d46a43fc06c9a", + "reference": "e85c0a8464da67e5b4a53a42796d46a43fc06c9a", "shasum": "" }, "require": { - "illuminate/routing": "^5.5|^6|^7", - "illuminate/session": "^5.5|^6|^7", - "illuminate/support": "^5.5|^6|^7", - "maximebf/debugbar": "^1.15.1", - "php": ">=7.0", - "symfony/debug": "^3|^4|^5", - "symfony/finder": "^3|^4|^5" + "illuminate/routing": "^10|^11|^12", + "illuminate/session": "^10|^11|^12", + "illuminate/support": "^10|^11|^12", + "php": "^8.1", + "php-debugbar/php-debugbar": "^2.2.4", + "symfony/finder": "^6|^7|^8" }, "require-dev": { - "laravel/framework": "5.5.x" + "mockery/mockery": "^1.3.3", + "orchestra/testbench-dusk": "^7|^8|^9|^10", + "phpunit/phpunit": "^9.5.10|^10|^11", + "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - }, "laravel": { + "aliases": { + "Debugbar": "Barryvdh\\Debugbar\\Facades\\Debugbar" + }, "providers": [ "Barryvdh\\Debugbar\\ServiceProvider" - ], - "aliases": { - "Debugbar": "Barryvdh\\Debugbar\\Facade" - } + ] + }, + "branch-alias": { + "dev-master": "3.16-dev" } }, "autoload": { - "psr-4": { - "Barryvdh\\Debugbar\\": "src/" - }, "files": [ "src/helpers.php" - ] + ], + "psr-4": { + "Barryvdh\\Debugbar\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6071,58 +9294,76 @@ "keywords": [ "debug", "debugbar", + "dev", "laravel", "profiler", "webprofiler" ], + "support": { + "issues": "https://github.com/fruitcake/laravel-debugbar/issues", + "source": "https://github.com/fruitcake/laravel-debugbar/tree/v3.16.5" + }, "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, { "url": "https://github.com/barryvdh", "type": "github" } ], - "time": "2020-05-05T10:53:32+00:00" + "time": "2026-01-23T15:03:22+00:00" }, { "name": "barryvdh/laravel-ide-helper", - "version": "v2.7.0", + "version": "v3.1.0", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "5f677edc14bdcfdcac36633e6eea71b2728a4dbc" + "reference": "591e7d665fbab8a3b682e451641706341573eb80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/5f677edc14bdcfdcac36633e6eea71b2728a4dbc", - "reference": "5f677edc14bdcfdcac36633e6eea71b2728a4dbc", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/591e7d665fbab8a3b682e451641706341573eb80", + "reference": "591e7d665fbab8a3b682e451641706341573eb80", "shasum": "" }, "require": { - "barryvdh/reflection-docblock": "^2.0.6", - "composer/composer": "^1.6", - "doctrine/dbal": "~2.3", - "illuminate/console": "^5.5|^6|^7", - "illuminate/filesystem": "^5.5|^6|^7", - "illuminate/support": "^5.5|^6|^7", - "php": ">=7.2" + "barryvdh/reflection-docblock": "^2.1.1", + "composer/class-map-generator": "^1.0", + "ext-json": "*", + "illuminate/console": "^10 || ^11", + "illuminate/database": "^10.38 || ^11", + "illuminate/filesystem": "^10 || ^11", + "illuminate/support": "^10 || ^11", + "nikic/php-parser": "^4.18 || ^5", + "php": "^8.1", + "phpdocumentor/type-resolver": "^1.1.0" }, "require-dev": { - "illuminate/config": "^5.5|^6|^7", - "illuminate/view": "^5.5|^6|^7", - "mockery/mockery": "^1.3", - "orchestra/testbench": "^3|^4|^5", - "phpro/grumphp": "^0.17.1", - "squizlabs/php_codesniffer": "^3" + "ext-pdo_sqlite": "*", + "friendsofphp/php-cs-fixer": "^3", + "illuminate/config": "^9 || ^10 || ^11", + "illuminate/view": "^9 || ^10 || ^11", + "mockery/mockery": "^1.4", + "orchestra/testbench": "^8 || ^9", + "phpunit/phpunit": "^10.5", + "spatie/phpunit-snapshot-assertions": "^4 || ^5", + "vimeo/psalm": "^5.4" + }, + "suggest": { + "illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10|^11)." }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - }, "laravel": { "providers": [ "Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider" ] + }, + "branch-alias": { + "dev-master": "3.1-dev" } }, "autoload": { @@ -6152,33 +9393,41 @@ "phpstorm", "sublime" ], + "support": { + "issues": "https://github.com/barryvdh/laravel-ide-helper/issues", + "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v3.1.0" + }, "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, { "url": "https://github.com/barryvdh", "type": "github" } ], - "time": "2020-04-22T09:57:26+00:00" + "time": "2024-07-12T14:20:51+00:00" }, { "name": "barryvdh/reflection-docblock", - "version": "v2.0.6", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/barryvdh/ReflectionDocBlock.git", - "reference": "6b69015d83d3daf9004a71a89f26e27d27ef6a16" + "reference": "4f5ba70c30c81f2ce03a16a9965832cfcc31ed3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/6b69015d83d3daf9004a71a89f26e27d27ef6a16", - "reference": "6b69015d83d3daf9004a71a89f26e27d27ef6a16", + "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/4f5ba70c30c81f2ce03a16a9965832cfcc31ed3b", + "reference": "4f5ba70c30c81f2ce03a16a9965832cfcc31ed3b", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "~4.0,<4.5" + "phpunit/phpunit": "^8.5.14|^9" }, "suggest": { "dflydev/markdown": "~1.0", @@ -6187,7 +9436,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.3.x-dev" } }, "autoload": { @@ -6207,41 +9456,47 @@ "email": "mike.vanriel@naenius.com" } ], - "time": "2018-12-13T10:34:14+00:00" + "support": { + "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.4.1" + }, + "time": "2026-03-05T20:09:01+00:00" }, { - "name": "composer/ca-bundle", - "version": "1.2.7", + "name": "composer/class-map-generator", + "version": "1.7.2", "source": { "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd" + "url": "https://github.com/composer/class-map-generator.git", + "reference": "6a9c2f0970022ab00dc58c07d0685dd712f2231b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/95c63ab2117a72f48f5a55da9740a3273d45b7fd", - "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/6a9c2f0970022ab00dc58c07d0685dd712f2231b", + "reference": "6a9c2f0970022ab00dc58c07d0685dd712f2231b", "shasum": "" }, "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0 || ^8.0" + "composer/pcre": "^2.1 || ^3.1", + "php": "^7.2 || ^8.0", + "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7 || ^8" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", - "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-deprecation-rules": "^1 || ^2", + "phpstan/phpstan-phpunit": "^1 || ^2", + "phpstan/phpstan-strict-rules": "^1.1 || ^2", + "phpunit/phpunit": "^8", + "symfony/filesystem": "^5.4 || ^6 || ^7 || ^8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-main": "1.x-dev" } }, "autoload": { "psr-4": { - "Composer\\CaBundle\\": "src" + "Composer\\ClassMapGenerator\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -6252,83 +9507,69 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "description": "Utilities to scan PHP code and generate class maps.", "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" + "classmap" ], + "support": { + "issues": "https://github.com/composer/class-map-generator/issues", + "source": "https://github.com/composer/class-map-generator/tree/1.7.2" + }, "funding": [ { "url": "https://packagist.com", "type": "custom" }, { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" + "url": "https://github.com/composer", + "type": "github" } ], - "time": "2020-04-08T08:27:21+00:00" + "time": "2026-03-30T15:36:56+00:00" }, { - "name": "composer/composer", - "version": "1.10.6", + "name": "fakerphp/faker", + "version": "v1.24.1", "source": { "type": "git", - "url": "https://github.com/composer/composer.git", - "reference": "be81b9c4735362c26876bdbfd3b5bc7e7f711c88" + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/be81b9c4735362c26876bdbfd3b5bc7e7f711c88", - "reference": "be81b9c4735362c26876bdbfd3b5bc7e7f711c88", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", "shasum": "" }, "require": { - "composer/ca-bundle": "^1.0", - "composer/semver": "^1.0", - "composer/spdx-licenses": "^1.2", - "composer/xdebug-handler": "^1.1", - "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0", - "seld/jsonlint": "^1.4", - "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0", - "symfony/finder": "^2.7 || ^3.0 || ^4.0 || ^5.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0" + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, "conflict": { - "symfony/console": "2.8.38", - "symfony/phpunit-bridge": "3.4.40" + "fzaninotto/faker": "*" }, "require-dev": { - "phpspec/prophecy": "^1.10", - "symfony/phpunit-bridge": "^3.4" + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" }, "suggest": { - "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", - "ext-zip": "Enabling the zip extension allows you to unzip archives", - "ext-zlib": "Allow gzip compression of HTTP requests" + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." }, - "bin": [ - "bin/composer" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, "autoload": { "psr-4": { - "Composer\\": "src/Composer" + "Faker\\": "src/Faker/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6337,284 +9578,43 @@ ], "authors": [ { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "François Zaninotto" } ], - "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", - "homepage": "https://getcomposer.org/", + "description": "Faker is a PHP library that generates fake data for you.", "keywords": [ - "autoload", - "dependency", - "package" + "data", + "faker", + "fixtures" ], - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2020-05-06T08:28:10+00:00" - }, - { - "name": "composer/semver", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de" + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c6bea70230ef4dd483e6bbcab6005f682ed3a8de", - "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "time": "2020-01-13T12:06:48+00:00" - }, - { - "name": "composer/spdx-licenses", - "version": "1.5.3", - "source": { - "type": "git", - "url": "https://github.com/composer/spdx-licenses.git", - "reference": "0c3e51e1880ca149682332770e25977c70cf9dae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/0c3e51e1880ca149682332770e25977c70cf9dae", - "reference": "0c3e51e1880ca149682332770e25977c70cf9dae", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Spdx\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "SPDX licenses list and validation library.", - "keywords": [ - "license", - "spdx", - "validator" - ], - "time": "2020-02-14T07:44:31+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "1.4.1", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/1ab9842d69e64fb3a01be6b656501032d1b78cb7", - "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - } - ], - "time": "2020-03-01T12:26:26+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-shim": "^0.11", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2019-10-21T16:45:58+00:00" + "time": "2024-11-21T13:46:39+00:00" }, { "name": "filp/whoops", - "version": "2.7.2", + "version": "2.18.4", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "17d0d3f266c8f925ebd035cd36f83cf802b47d4a" + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/17d0d3f266c8f925ebd035cd36f83cf802b47d4a", - "reference": "17d0d3f266c8f925ebd035cd36f83cf802b47d4a", + "url": "https://api.github.com/repos/filp/whoops/zipball/d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0", - "psr/log": "^1.0.1" + "php": "^7.1 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^4.0 || ^5.0" }, "suggest": { "symfony/var-dumper": "Pretty print complex values better with var-dumper available", @@ -6623,7 +9623,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.7-dev" } }, "autoload": { @@ -6652,74 +9652,34 @@ "throwable", "whoops" ], - "time": "2020-05-05T12:28:07+00:00" - }, - { - "name": "fzaninotto/faker", - "version": "v1.9.1", - "source": { - "type": "git", - "url": "https://github.com/fzaninotto/Faker.git", - "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f" + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.18.4" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/fc10d778e4b84d5bd315dad194661e091d307c6f", - "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "ext-intl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7", - "squizlabs/php_codesniffer": "^2.9.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "François Zaninotto" + "url": "https://github.com/denis-sokolov", + "type": "github" } ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "time": "2019-12-12T13:22:17+00:00" + "time": "2025-08-08T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", - "version": "v2.0.0", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad" + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad", - "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", "shasum": "" }, "require": { - "php": "^5.3|^7.0" + "php": "^7.4|^8.0" }, "replace": { "cordoval/hamcrest-php": "*", @@ -6727,14 +9687,13 @@ "kodova/hamcrest-php": "*" }, "require-dev": { - "phpunit/php-file-iterator": "1.3.3", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "^1.0" + "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -6744,87 +9703,45 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD" + "BSD-3-Clause" ], "description": "This is the PHP port of Hamcrest Matchers", "keywords": [ "test" ], - "time": "2016-01-20T08:20:44+00:00" + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.1.1" + }, + "time": "2025-04-30T06:54:44+00:00" }, { - "name": "jakub-onderka/php-console-color", - "version": "v0.2", + "name": "illuminate/json-schema", + "version": "v12.56.0", "source": { "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" + "url": "https://github.com/illuminate/json-schema.git", + "reference": "207509531ee53b2c5b966c51c9c63355f8e96e1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", + "url": "https://api.github.com/repos/illuminate/json-schema/zipball/207509531ee53b2c5b966c51c9c63355f8e96e1e", + "reference": "207509531ee53b2c5b966c51c9c63355f8e96e1e", "shasum": "" }, "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "1.0", - "jakub-onderka/php-parallel-lint": "1.0", - "jakub-onderka/php-var-dump-check": "0.*", - "phpunit/phpunit": "~4.3", - "squizlabs/php_codesniffer": "1.*" + "illuminate/contracts": "^10.50.0|^11.47.0|^12.40.2", + "php": "^8.1" }, "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleColor\\": "src/" + "extra": { + "branch-alias": { + "dev-master": "12.x-dev" } }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com" - } - ], - "abandoned": "php-parallel-lint/php-console-color", - "time": "2018-09-29T17:23:10+00:00" - }, - { - "name": "jakub-onderka/php-console-highlighter", - "version": "v0.4", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "jakub-onderka/php-console-color": "~0.2", - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "~1.0", - "jakub-onderka/php-parallel-lint": "~1.0", - "jakub-onderka/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "type": "library", "autoload": { "psr-4": { - "JakubOnderka\\PhpConsoleHighlighter\\": "src/" + "Illuminate\\JsonSchema\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -6833,49 +9750,258 @@ ], "authors": [ { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" } ], - "description": "Highlight PHP code in terminal", - "abandoned": "php-parallel-lint/php-console-highlighter", - "time": "2018-09-29T18:48:56+00:00" + "description": "The Illuminate Json Schema package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2026-02-24T14:03:17+00:00" }, { - "name": "justinrainbow/json-schema", - "version": "5.2.9", + "name": "laravel/boost", + "version": "v1.8.13", "source": { "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4" + "url": "https://github.com/laravel/boost.git", + "reference": "cdcb12114315491f72a2cecb5130d8b9dffa0103" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/44c6787311242a979fa15c704327c20e7221a0e4", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4", + "url": "https://api.github.com/repos/laravel/boost/zipball/cdcb12114315491f72a2cecb5130d8b9dffa0103", + "reference": "cdcb12114315491f72a2cecb5130d8b9dffa0103", "shasum": "" }, "require": { - "php": ">=5.3.3" + "guzzlehttp/guzzle": "^7.9", + "illuminate/console": "^10.49.0|^11.45.3|^12.41.1", + "illuminate/contracts": "^10.49.0|^11.45.3|^12.41.1", + "illuminate/routing": "^10.49.0|^11.45.3|^12.41.1", + "illuminate/support": "^10.49.0|^11.45.3|^12.41.1", + "laravel/mcp": "^0.5.1", + "laravel/prompts": "0.1.25|^0.3.6", + "laravel/roster": "^0.2.9", + "php": "^8.1" }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" + "laravel/pint": "^1.20.0", + "mockery/mockery": "^1.6.12", + "orchestra/testbench": "^8.36.0|^9.15.0|^10.6", + "pestphp/pest": "^2.36.0|^3.8.4|^4.1.5", + "phpstan/phpstan": "^2.1.27", + "rector/rector": "^2.1" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Boost\\BoostServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Boost\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Laravel Boost accelerates AI-assisted development by providing the essential context and structure that AI needs to generate high-quality, Laravel-specific code.", + "homepage": "https://github.com/laravel/boost", + "keywords": [ + "ai", + "dev", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/boost/issues", + "source": "https://github.com/laravel/boost" + }, + "time": "2026-03-27T17:24:01+00:00" + }, + { + "name": "laravel/mcp", + "version": "v0.5.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/mcp.git", + "reference": "39b9791b989927642137dd5b55dde0529f1614f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/mcp/zipball/39b9791b989927642137dd5b55dde0529f1614f9", + "reference": "39b9791b989927642137dd5b55dde0529f1614f9", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/console": "^10.49.0|^11.45.3|^12.41.1", + "illuminate/container": "^10.49.0|^11.45.3|^12.41.1", + "illuminate/contracts": "^10.49.0|^11.45.3|^12.41.1", + "illuminate/http": "^10.49.0|^11.45.3|^12.41.1", + "illuminate/json-schema": "^12.41.1", + "illuminate/routing": "^10.49.0|^11.45.3|^12.41.1", + "illuminate/support": "^10.49.0|^11.45.3|^12.41.1", + "illuminate/validation": "^10.49.0|^11.45.3|^12.41.1", + "php": "^8.1" + }, + "require-dev": { + "laravel/pint": "^1.20", + "orchestra/testbench": "^8.36|^9.15|^10.8", + "pestphp/pest": "^2.36.0|^3.8.4|^4.1.0", + "phpstan/phpstan": "^2.1.27", + "rector/rector": "^2.2.4" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Mcp": "Laravel\\Mcp\\Server\\Facades\\Mcp" + }, + "providers": [ + "Laravel\\Mcp\\Server\\McpServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Mcp\\": "src/", + "Laravel\\Mcp\\Server\\": "src/Server/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Rapidly build MCP servers for your Laravel applications.", + "homepage": "https://github.com/laravel/mcp", + "keywords": [ + "laravel", + "mcp" + ], + "support": { + "issues": "https://github.com/laravel/mcp/issues", + "source": "https://github.com/laravel/mcp" + }, + "time": "2026-01-26T10:25:21+00:00" + }, + { + "name": "laravel/roster", + "version": "v0.2.9", + "source": { + "type": "git", + "url": "https://github.com/laravel/roster.git", + "reference": "82bbd0e2de614906811aebdf16b4305956816fa6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/roster/zipball/82bbd0e2de614906811aebdf16b4305956816fa6", + "reference": "82bbd0e2de614906811aebdf16b4305956816fa6", + "shasum": "" + }, + "require": { + "illuminate/console": "^10.0|^11.0|^12.0", + "illuminate/contracts": "^10.0|^11.0|^12.0", + "illuminate/routing": "^10.0|^11.0|^12.0", + "illuminate/support": "^10.0|^11.0|^12.0", + "php": "^8.1|^8.2", + "symfony/yaml": "^6.4|^7.2" + }, + "require-dev": { + "laravel/pint": "^1.14", + "mockery/mockery": "^1.6", + "orchestra/testbench": "^8.22.0|^9.0|^10.0", + "pestphp/pest": "^2.0|^3.0", + "phpstan/phpstan": "^2.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Roster\\RosterServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Roster\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Detect packages & approaches in use within a Laravel project", + "homepage": "https://github.com/laravel/roster", + "keywords": [ + "dev", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/roster/issues", + "source": "https://github.com/laravel/roster" + }, + "time": "2025-10-20T09:56:46+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.56.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "f43426bb42a1cb7a51a3861d9138063e54766d28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/f43426bb42a1cb7a51a3861d9138063e54766d28", + "reference": "f43426bb42a1cb7a51a3861d9138063e54766d28", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.52.16|^10.0|^11.0|^12.0|^13.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0|^12.0|^13.0", + "illuminate/support": "^9.52.16|^10.0|^11.0|^12.0|^13.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0|^8.0", + "symfony/yaml": "^6.0|^7.0|^8.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0|^11.0", + "phpstan/phpstan": "^2.0" }, "bin": [ - "bin/validate-json" + "bin/sail" ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] } }, "autoload": { "psr-4": { - "JsonSchema\\": "src/JsonSchema/" + "Laravel\\Sail\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6884,122 +10010,55 @@ ], "authors": [ { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" } ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", + "description": "Docker files for running a basic Laravel application.", "keywords": [ - "json", - "schema" + "docker", + "laravel" ], - "time": "2019-09-25T14:49:45+00:00" - }, - { - "name": "maximebf/debugbar", - "version": "v1.16.3", - "source": { - "type": "git", - "url": "https://github.com/maximebf/php-debugbar.git", - "reference": "1a1605b8e9bacb34cc0c6278206d699772e1d372" + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/1a1605b8e9bacb34cc0c6278206d699772e1d372", - "reference": "1a1605b8e9bacb34cc0c6278206d699772e1d372", - "shasum": "" - }, - "require": { - "php": "^7.1", - "psr/log": "^1.0", - "symfony/var-dumper": "^2.6|^3|^4|^5" - }, - "require-dev": { - "phpunit/phpunit": "^5" - }, - "suggest": { - "kriswallsmith/assetic": "The best way to manage assets", - "monolog/monolog": "Log using Monolog", - "predis/predis": "Redis storage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.16-dev" - } - }, - "autoload": { - "psr-4": { - "DebugBar\\": "src/DebugBar/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Maxime Bouroumeau-Fuseau", - "email": "maxime.bouroumeau@gmail.com", - "homepage": "http://maximebf.com" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Debug bar in the browser for php application", - "homepage": "https://github.com/maximebf/php-debugbar", - "keywords": [ - "debug", - "debugbar" - ], - "time": "2020-05-06T07:06:27+00:00" + "time": "2026-04-01T15:17:32+00:00" }, { "name": "mockery/mockery", - "version": "1.3.1", + "version": "1.6.12", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be" + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be", - "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", "shasum": "" }, "require": { - "hamcrest/hamcrest-php": "~2.0", + "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": ">=5.6.0" + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0" + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, "autoload": { - "psr-0": { - "Mockery": "library/" + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" } }, "notification-url": "https://packagist.org/downloads/", @@ -7010,12 +10069,20 @@ { "name": "Pádraic Brady", "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" + "homepage": "https://github.com/padraic", + "role": "Author" }, { "name": "Dave Marshall", "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], "description": "Mockery is a simple yet flexible PHP mock object framework", @@ -7032,41 +10099,50 @@ "test double", "testing" ], - "time": "2019-12-26T09:49:15+00:00" + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2024-05-16T03:13:13+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.9.5", + "version": "1.13.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", - "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7080,33 +10156,54 @@ "object", "object graph" ], - "time": "2020-01-17T21:11:47+00:00" + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-08-01T08:46:24+00:00" }, { "name": "nunomaduro/collision", - "version": "v3.0.1", + "version": "v7.12.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "af42d339fe2742295a54f6fdd42aaa6f8c4aca68" + "reference": "995245421d3d7593a6960822063bdba4f5d7cf1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/af42d339fe2742295a54f6fdd42aaa6f8c4aca68", - "reference": "af42d339fe2742295a54f6fdd42aaa6f8c4aca68", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/995245421d3d7593a6960822063bdba4f5d7cf1a", + "reference": "995245421d3d7593a6960822063bdba4f5d7cf1a", "shasum": "" }, "require": { - "filp/whoops": "^2.1.4", - "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", - "php": "^7.1", - "symfony/console": "~2.8|~3.3|~4.0" + "filp/whoops": "^2.17.0", + "nunomaduro/termwind": "^1.17.0", + "php": "^8.1.0", + "symfony/console": "^6.4.17" + }, + "conflict": { + "laravel/framework": ">=11.0.0" }, "require-dev": { - "laravel/framework": "5.8.*", - "nunomaduro/larastan": "^0.3.0", - "phpstan/phpstan": "^0.11", - "phpunit/phpunit": "~8.0" + "brianium/paratest": "^7.4.8", + "laravel/framework": "^10.48.29", + "laravel/pint": "^1.21.2", + "laravel/sail": "^1.41.0", + "laravel/sanctum": "^3.3.3", + "laravel/tinker": "^2.10.1", + "nunomaduro/larastan": "^2.10.0", + "orchestra/testbench-core": "^8.35.0", + "pestphp/pest": "^2.36.0", + "phpunit/phpunit": "^10.5.36", + "sebastian/environment": "^6.1.0", + "spatie/laravel-ignition": "^2.9.1" }, "type": "library", "extra": { @@ -7117,6 +10214,9 @@ } }, "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], "psr-4": { "NunoMaduro\\Collision\\": "src/" } @@ -7144,32 +10244,52 @@ "php", "symfony" ], - "time": "2019-03-07T21:35:13+00:00" + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2025-03-14T22:35:49+00:00" }, { "name": "phar-io/manifest", - "version": "1.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", - "phar-io/version": "^2.0", - "php": "^5.6 || ^7.0" + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -7199,24 +10319,34 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2018-07-08T19:23:20+00:00" + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", - "version": "2.0.1", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -7246,29 +10376,107 @@ } ], "description": "Library for handling version information and constraints", - "time": "2018-07-08T19:19:57+00:00" + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.1.0", + "name": "php-debugbar/php-debugbar", + "version": "v2.2.6", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b" + "url": "https://github.com/php-debugbar/php-debugbar.git", + "reference": "abb9fa3c5c8dbe7efe03ddba56782917481de3e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b", - "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b", + "url": "https://api.github.com/repos/php-debugbar/php-debugbar/zipball/abb9fa3c5c8dbe7efe03ddba56782917481de3e8", + "reference": "abb9fa3c5c8dbe7efe03ddba56782917481de3e8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": "^8.1", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.4|^7.3|^8.0" + }, + "replace": { + "maximebf/debugbar": "self.version" + }, + "require-dev": { + "dbrekelmans/bdi": "^1", + "phpunit/phpunit": "^10", + "symfony/browser-kit": "^6.0|7.0", + "symfony/panther": "^1|^2.1", + "twig/twig": "^3.11.2" + }, + "suggest": { + "kriswallsmith/assetic": "The best way to manage assets", + "monolog/monolog": "Log using Monolog", + "predis/predis": "Redis storage" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-master": "2.2-dev" + } + }, + "autoload": { + "psr-4": { + "DebugBar\\": "src/DebugBar/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Maxime Bouroumeau-Fuseau", + "email": "maxime.bouroumeau@gmail.com", + "homepage": "http://maximebf.com" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Debug bar in the browser for php application", + "homepage": "https://github.com/php-debugbar/php-debugbar", + "keywords": [ + "debug", + "debug bar", + "debugbar", + "dev" + ], + "support": { + "issues": "https://github.com/php-debugbar/php-debugbar/issues", + "source": "https://github.com/php-debugbar/php-debugbar/tree/v2.2.6" + }, + "time": "2025-12-22T13:21:32+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -7295,87 +10503,46 @@ "reflection", "static analysis" ], - "time": "2020-04-27T09:25:28+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.1.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e" + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", - "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", - "shasum": "" - }, - "require": { - "ext-filter": "^7.1", - "php": "^7.2", - "phpdocumentor/reflection-common": "^2.0", - "phpdocumentor/type-resolver": "^1.0", - "webmozart/assert": "^1" - }, - "require-dev": { - "doctrine/instantiator": "^1", - "mockery/mockery": "^1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2020-02-22T12:28:44+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.1.0", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "7462d5f123dfc080dfdf26897032a6513644fc95" + "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95", - "reference": "7462d5f123dfc080dfdf26897032a6513644fc95", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/92a98ada2b93d9b201a613cb5a33584dde25f195", + "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195", "shasum": "" }, "require": { - "php": "^7.2", - "phpdocumentor/reflection-common": "^2.0" + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.18|^2.0" }, "require-dev": { - "ext-tokenizer": "^7.2", - "mockery/mockery": "~1" + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { @@ -7394,108 +10561,99 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2020-02-18T18:59:58+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.12.0" + }, + "time": "2025-11-21T15:09:14+00:00" }, { - "name": "phpspec/prophecy", - "version": "v1.10.3", + "name": "phpstan/phpdoc-parser", + "version": "2.3.2", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "451c3cd1418cf640de218914901e51b064abb093" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", - "reference": "451c3cd1418cf640de218914901e51b064abb093", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a004701b11273a26cd7955a61d67a7f1e525a45a", + "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" + "php": "^7.4 || ^8.0" }, "require-dev": { - "phpspec/phpspec": "^2.5 || ^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^5.3.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", + "symfony/process": "^5.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10.x-dev" - } - }, "autoload": { "psr-4": { - "Prophecy\\": "src/Prophecy" + "PHPStan\\PhpDocParser\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2020-03-05T15:02:03+00:00" + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.2" + }, + "time": "2026-01-25T14:56:51+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "8.0.1", + "version": "10.1.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "31e94ccc084025d6abee0585df533eb3a792b96a" + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/31e94ccc084025d6abee0585df533eb3a792b96a", - "reference": "31e94ccc084025d6abee0585df533eb3a792b96a", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-xmlwriter": "*", - "php": "^7.3", - "phpunit/php-file-iterator": "^3.0", - "phpunit/php-text-template": "^2.0", - "phpunit/php-token-stream": "^4.0", - "sebastian/code-unit-reverse-lookup": "^2.0", - "sebastian/environment": "^5.0", - "sebastian/version": "^3.0", - "theseer/tokenizer": "^1.1.3" + "nikic/php-parser": "^4.19.1 || ^5.1.0", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-text-template": "^3.0.1", + "sebastian/code-unit-reverse-lookup": "^3.0.0", + "sebastian/complexity": "^3.2.0", + "sebastian/environment": "^6.1.0", + "sebastian/lines-of-code": "^2.0.2", + "sebastian/version": "^4.0.1", + "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.1" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "8.0-dev" + "dev-main": "10.1.x-dev" } }, "autoload": { @@ -7521,32 +10679,43 @@ "testing", "xunit" ], - "time": "2020-02-19T13:41:19+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-22T04:31:57+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.1", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4", - "reference": "4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -7571,34 +10740,39 @@ "filesystem", "iterator" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2020-04-18T05:02:12+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", - "version": "3.0.0", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "7579d5a1ba7f3ac11c80004d205877911315ae7a" + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/7579d5a1ba7f3ac11c80004d205877911315ae7a", - "reference": "7579d5a1ba7f3ac11c80004d205877911315ae7a", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=8.1" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-pcntl": "*" @@ -7606,7 +10780,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -7630,29 +10804,42 @@ "keywords": [ "process" ], - "time": "2020-02-07T06:06:11+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:56:09+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "526dc996cc0ebdfa428cd2dfccd79b7b53fee346" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/526dc996cc0ebdfa428cd2dfccd79b7b53fee346", - "reference": "526dc996cc0ebdfa428cd2dfccd79b7b53fee346", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -7676,32 +10863,43 @@ "keywords": [ "template" ], - "time": "2020-02-01T07:43:44+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", - "version": "3.1.4", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258" + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/dc9368fae6ef2ffa57eba80a7410bcef81df6258", - "reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -7725,119 +10923,62 @@ "keywords": [ "timer" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2020-04-20T06:00:37+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "4.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c", - "reference": "cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-05-06T09:56:31+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { "name": "phpunit/phpunit", - "version": "9.1.4", + "version": "10.5.63", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "2d7080c622cf7884992e7c3cf87853877bae8ff4" + "reference": "33198268dad71e926626b618f3ec3966661e4d90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2d7080c622cf7884992e7c3cf87853877bae8ff4", - "reference": "2d7080c622cf7884992e7c3cf87853877bae8ff4", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/33198268dad71e926626b618f3ec3966661e4d90", + "reference": "33198268dad71e926626b618f3ec3966661e4d90", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2.0", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.9.1", - "phar-io/manifest": "^1.0.3", - "phar-io/version": "^2.0.1", - "php": "^7.3", - "phpspec/prophecy": "^1.8.1", - "phpunit/php-code-coverage": "^8.0.1", - "phpunit/php-file-iterator": "^3.0", - "phpunit/php-invoker": "^3.0", - "phpunit/php-text-template": "^2.0", - "phpunit/php-timer": "^3.1.4", - "sebastian/code-unit": "^1.0.2", - "sebastian/comparator": "^4.0", - "sebastian/diff": "^4.0", - "sebastian/environment": "^5.0.1", - "sebastian/exporter": "^4.0", - "sebastian/global-state": "^4.0", - "sebastian/object-enumerator": "^4.0", - "sebastian/resource-operations": "^3.0", - "sebastian/type": "^2.0", - "sebastian/version": "^3.0" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0" + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.5", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.4", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.1", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -7845,15 +10986,15 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.1-dev" + "dev-main": "10.5-dev" } }, "autoload": { - "classmap": [ - "src/" - ], "files": [ "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7874,42 +11015,116 @@ "testing", "xunit" ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.63" + }, "funding": [ { - "url": "https://phpunit.de/donate.html", + "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2020-04-30T06:32:53+00:00" + "time": "2026-01-27T05:48:37+00:00" }, { - "name": "sebastian/code-unit", - "version": "1.0.2", + "name": "sebastian/cli-parser", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "ac958085bc19fcd1d36425c781ef4cbb5b06e2a5" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/ac958085bc19fcd1d36425c781ef4cbb5b06e2a5", - "reference": "ac958085bc19fcd1d36425c781ef4cbb5b06e2a5", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:12:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" } }, "autoload": { @@ -7930,38 +11145,42 @@ ], "description": "Collection of value objects that represent the PHP code units", "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2020-04-30T05:58:10+00:00" + "time": "2023-02-03T06:58:43+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "5b5dbe0044085ac41df47e79d34911a15b96d82e" + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5b5dbe0044085ac41df47e79d34911a15b96d82e", - "reference": "5b5dbe0044085ac41df47e79d34911a15b96d82e", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -7981,34 +11200,46 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2020-02-07T06:20:13+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:59:15+00:00" }, { "name": "sebastian/comparator", - "version": "4.0.0", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "85b3435da967696ed618ff745f32be3ff4a2b8e8" + "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/85b3435da967696ed618ff745f32be3ff4a2b8e8", - "reference": "85b3435da967696ed618ff745f32be3ff4a2b8e8", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55dfef806eb7dfeb6e7a6935601fef866f8ca48d", + "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d", "shasum": "" }, "require": { - "php": "^7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -8045,33 +11276,114 @@ "compare", "equality" ], - "time": "2020-02-07T06:08:51+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" + } + ], + "time": "2026-01-24T09:25:16+00:00" }, { - "name": "sebastian/diff", - "version": "4.0.1", + "name": "sebastian/complexity", + "version": "3.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3e523c576f29dacecff309f35e4cc5a5c168e78a" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3e523c576f29dacecff309f35e4cc5a5c168e78a", - "reference": "3e523c576f29dacecff309f35e4cc5a5c168e78a", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "php": "^7.3" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.0", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:37:17+00:00" + }, + { + "name": "sebastian/diff", + "version": "5.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0", + "symfony/process": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" } }, "autoload": { @@ -8101,33 +11413,38 @@ "unidiff", "unified diff" ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2020-05-08T05:01:12+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { "name": "sebastian/environment", - "version": "5.1.0", + "version": "6.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "c753f04d68cd489b6973cf9b4e505e191af3b05c" + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/c753f04d68cd489b6973cf9b4e505e191af3b05c", - "reference": "c753f04d68cd489b6973cf9b4e505e191af3b05c", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-posix": "*" @@ -8135,7 +11452,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.1-dev" } }, "autoload": { @@ -8154,46 +11471,51 @@ } ], "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "homepage": "https://github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", "hhvm" ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2020-04-14T13:36:52+00:00" + "time": "2024-03-23T08:47:14+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.0", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "80c26562e964016538f832f305b2286e1ec29566" + "reference": "0735b90f4da94969541dac1da743446e276defa6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/80c26562e964016538f832f305b2286e1ec29566", - "reference": "80c26562e964016538f832f305b2286e1ec29566", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0735b90f4da94969541dac1da743446e276defa6", + "reference": "0735b90f4da94969541dac1da743446e276defa6", "shasum": "" }, "require": { - "php": "^7.3", - "sebastian/recursion-context": "^4.0" + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -8228,43 +11550,63 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], - "time": "2020-02-07T06:10:52+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" + } + ], + "time": "2025-09-24T06:09:11+00:00" }, { "name": "sebastian/global-state", - "version": "4.0.0", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bdb1e7c79e592b8c82cb1699be3c8743119b8a72" + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bdb1e7c79e592b8c82cb1699be3c8743119b8a72", - "reference": "bdb1e7c79e592b8c82cb1699be3c8743119b8a72", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", "shasum": "" }, "require": { - "php": "^7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^9.0" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -8283,38 +11625,107 @@ } ], "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ "global state" ], - "time": "2020-02-07T06:11:37+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:19:19+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "4.0.0", + "name": "sebastian/lines-of-code", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "e67516b175550abad905dc952f43285957ef4363" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67516b175550abad905dc952f43285957ef4363", - "reference": "e67516b175550abad905dc952f43285957ef4363", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "php": "^7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:38:20+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" } }, "autoload": { @@ -8334,32 +11745,42 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2020-02-07T06:12:23+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:08:32+00:00" }, { "name": "sebastian/object-reflector", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "f4fd0835cabb0d4a6546d9fe291e5740037aa1e7" + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/f4fd0835cabb0d4a6546d9fe291e5740037aa1e7", - "reference": "f4fd0835cabb0d4a6546d9fe291e5740037aa1e7", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -8379,32 +11800,42 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2020-02-07T06:19:40+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:06:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cdd86616411fc3062368b720b0425de10bd3d579" + "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cdd86616411fc3062368b720b0425de10bd3d579", - "reference": "cdd86616411fc3062368b720b0425de10bd3d579", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/47e34210757a2f37a97dcd207d032e1b01e64c7a", + "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -8431,78 +11862,56 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2020-02-07T06:18:20+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98" + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.1" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98", - "reference": "8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98", - "shasum": "" - }, - "require": { - "php": "^7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ + "funding": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2020-02-07T06:13:02+00:00" + "time": "2025-08-10T07:50:56+00:00" }, { "name": "sebastian/type", - "version": "2.0.0", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "9e8f42f740afdea51f5f4e8cec2035580e797ee1" + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/9e8f42f740afdea51f5f4e8cec2035580e797ee1", - "reference": "9e8f42f740afdea51f5f4e8cec2035580e797ee1", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -8523,29 +11932,39 @@ ], "description": "Collection of value objects that represent the types of the PHP type system", "homepage": "https://github.com/sebastianbergmann/type", - "time": "2020-02-07T06:13:43+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:10:45+00:00" }, { "name": "sebastian/version", - "version": "3.0.0", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "0411bde656dce64202b39c2f4473993a9081d39e" + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/0411bde656dce64202b39c2f4473993a9081d39e", - "reference": "0411bde656dce64202b39c2f4473993a9081d39e", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "php": "^7.3" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -8566,35 +11985,46 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2020-01-21T06:36:37+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-07T11:34:05+00:00" }, { - "name": "seld/jsonlint", - "version": "1.8.0", + "name": "spatie/backtrace", + "version": "1.8.2", "source": { "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1" + "url": "https://github.com/spatie/backtrace.git", + "reference": "8ffe78be5ed355b5009e3dd989d183433e9a5adc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1", - "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/8ffe78be5ed355b5009e3dd989d183433e9a5adc", + "reference": "8ffe78be5ed355b5009e3dd989d183433e9a5adc", "shasum": "" }, "require": { - "php": "^5.3 || ^7.0 || ^8.0" + "php": "^7.3 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "ext-json": "*", + "laravel/serializable-closure": "^1.3 || ^2.0", + "phpunit/phpunit": "^9.3 || ^11.4.3", + "spatie/phpunit-snapshot-assertions": "^4.2 || ^5.1.6", + "symfony/var-dumper": "^5.1|^6.0|^7.0|^8.0" }, - "bin": [ - "bin/jsonlint" - ], "type": "library", "autoload": { "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" + "Spatie\\Backtrace\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -8603,56 +12033,77 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Freek Van de Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" } ], - "description": "JSON Linter", + "description": "A better backtrace", + "homepage": "https://github.com/spatie/backtrace", "keywords": [ - "json", - "linter", - "parser", - "validator" + "Backtrace", + "spatie" ], + "support": { + "issues": "https://github.com/spatie/backtrace/issues", + "source": "https://github.com/spatie/backtrace/tree/1.8.2" + }, "funding": [ { - "url": "https://github.com/Seldaek", + "url": "https://github.com/sponsors/spatie", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", - "type": "tidelift" + "url": "https://spatie.be/open-source/support-us", + "type": "other" } ], - "time": "2020-04-30T19:05:18+00:00" + "time": "2026-03-11T13:48:28+00:00" }, { - "name": "seld/phar-utils", - "version": "1.1.0", + "name": "spatie/error-solutions", + "version": "1.1.3", "source": { "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0" + "url": "https://github.com/spatie/error-solutions.git", + "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8800503d56b9867d43d9c303b9cbcc26016e82f0", - "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0", + "url": "https://api.github.com/repos/spatie/error-solutions/zipball/e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", + "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", "shasum": "" }, "require": { - "php": ">=5.3" + "php": "^8.0" + }, + "require-dev": { + "illuminate/broadcasting": "^10.0|^11.0|^12.0", + "illuminate/cache": "^10.0|^11.0|^12.0", + "illuminate/support": "^10.0|^11.0|^12.0", + "livewire/livewire": "^2.11|^3.5.20", + "openai-php/client": "^0.10.1", + "orchestra/testbench": "8.22.3|^9.0|^10.0", + "pestphp/pest": "^2.20|^3.0", + "phpstan/phpstan": "^2.1", + "psr/simple-cache": "^3.0", + "psr/simple-cache-implementation": "^3.0", + "spatie/ray": "^1.28", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "psr-4": { - "Seld\\PharUtils\\": "src/" + "Spatie\\Ignition\\": "legacy/ignition", + "Spatie\\ErrorSolutions\\": "src", + "Spatie\\LaravelIgnition\\": "legacy/laravel-ignition" } }, "notification-url": "https://packagist.org/downloads/", @@ -8661,43 +12112,307 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" + "name": "Ruben Van Assche", + "email": "ruben@spatie.be", + "role": "Developer" } ], - "description": "PHAR file format utilities, for when PHP phars you up", + "description": "This is my package error-solutions", + "homepage": "https://github.com/spatie/error-solutions", "keywords": [ - "phar" + "error-solutions", + "spatie" ], - "time": "2020-02-14T15:25:33+00:00" + "support": { + "issues": "https://github.com/spatie/error-solutions/issues", + "source": "https://github.com/spatie/error-solutions/tree/1.1.3" + }, + "funding": [ + { + "url": "https://github.com/Spatie", + "type": "github" + } + ], + "time": "2025-02-14T12:29:50+00:00" }, { - "name": "symfony/filesystem", - "version": "v5.0.8", + "name": "spatie/flare-client-php", + "version": "1.11.0", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "7cd0dafc4353a0f62e307df90b48466379c8cc91" + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "fb3ffb946675dba811fbde9122224db2f84daca9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/7cd0dafc4353a0f62e307df90b48466379c8cc91", - "reference": "7cd0dafc4353a0f62e307df90b48466379c8cc91", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/fb3ffb946675dba811fbde9122224db2f84daca9", + "reference": "fb3ffb946675dba811fbde9122224db2f84daca9", "shasum": "" }, "require": { - "php": "^7.2.5", - "symfony/polyfill-ctype": "~1.8" + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0|^12.0|^13.0", + "php": "^8.0", + "spatie/backtrace": "^1.6.1", + "symfony/http-foundation": "^5.2|^6.0|^7.0|^8.0", + "symfony/mime": "^5.2|^6.0|^7.0|^8.0", + "symfony/process": "^5.2|^6.0|^7.0|^8.0", + "symfony/var-dumper": "^5.2|^6.0|^7.0|^8.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.5.0", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/pest-plugin-snapshots": "^1.0|^2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "1.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/spatie/flare-client-php", + "keywords": [ + "exception", + "flare", + "reporting", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/flare-client-php/issues", + "source": "https://github.com/spatie/flare-client-php/tree/1.11.0" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2026-03-17T08:06:16+00:00" + }, + { + "name": "spatie/ignition", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/ignition.git", + "reference": "b59385bb7aa24dae81bcc15850ebecfda7b40838" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/ignition/zipball/b59385bb7aa24dae81bcc15850ebecfda7b40838", + "reference": "b59385bb7aa24dae81bcc15850ebecfda7b40838", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0", + "spatie/backtrace": "^1.7.1", + "spatie/error-solutions": "^1.1.2", + "spatie/flare-client-php": "^1.9", + "symfony/console": "^5.4.42|^6.0|^7.0|^8.0", + "symfony/http-foundation": "^5.4.42|^6.0|^7.0|^8.0", + "symfony/mime": "^5.4.42|^6.0|^7.0|^8.0", + "symfony/var-dumper": "^5.4.42|^6.0|^7.0|^8.0" + }, + "require-dev": { + "illuminate/cache": "^9.52|^10.0|^11.0|^12.0|^13.0", + "mockery/mockery": "^1.4", + "pestphp/pest": "^1.20|^2.0|^3.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "psr/simple-cache-implementation": "*", + "symfony/cache": "^5.4.38|^6.0|^7.0|^8.0", + "symfony/process": "^5.4.35|^6.0|^7.0|^8.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.5.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Filesystem\\": "" + "Spatie\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for PHP applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/ignition/issues", + "source": "https://github.com/spatie/ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2026-03-17T10:51:08+00:00" + }, + { + "name": "spatie/laravel-ignition", + "version": "2.9.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "1baee07216d6748ebd3a65ba97381b051838707a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/1baee07216d6748ebd3a65ba97381b051838707a", + "reference": "1baee07216d6748ebd3a65ba97381b051838707a", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/support": "^10.0|^11.0|^12.0", + "php": "^8.1", + "spatie/ignition": "^1.15", + "symfony/console": "^6.2.3|^7.0", + "symfony/var-dumper": "^6.2.3|^7.0" + }, + "require-dev": { + "livewire/livewire": "^2.11|^3.3.5", + "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.8.1|^0.10", + "orchestra/testbench": "8.22.3|^9.0|^10.0", + "pestphp/pest": "^2.34|^3.7", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan-deprecation-rules": "^1.1.1|^2.0", + "phpstan/phpstan-phpunit": "^1.3.16|^2.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" + }, + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\LaravelIgnition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/laravel-ignition/issues", + "source": "https://github.com/spatie/laravel-ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2025-02-20T13:13:55+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "c58fdf7b3d6c2995368264c49e4e8b05bcff2883" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c58fdf7b3d6c2995368264c49e4e8b05bcff2883", + "reference": "c58fdf7b3d6c2995368264c49e4e8b05bcff2883", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8717,8 +12432,11 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Filesystem Component", + "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v7.4.8" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -8728,32 +12446,36 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-04-12T14:40:17+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "theseer/tokenizer", - "version": "1.1.3", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", "shasum": "" }, "require": { "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": "^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -8768,70 +12490,32 @@ "authors": [ { "name": "Arne Blankerts", - "role": "Developer", - "email": "arne@blankerts.de" + "email": "arne@blankerts.de", + "role": "Developer" } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2019-06-13T22:48:21+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.8.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6" + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.3.1" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/ab2cb0b3b559010b75981b1bdce728da3ee90ad6", - "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "vimeo/psalm": "<3.9.1" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" - }, - "type": "library", - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "url": "https://github.com/theseer", + "type": "github" } ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2020-04-18T12:12:48+00:00" + "time": "2025-11-17T20:03:58+00:00" } ], "aliases": [], "minimum-stability": "dev", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.2" + "php": "^8.1|^8.2|^8.3" }, - "platform-dev": [], - "plugin-api-version": "1.1.0" + "platform-dev": {}, + "plugin-api-version": "2.9.0" } diff --git a/config/app.php b/config/app.php index 57dc692..ab7a418 100755 --- a/config/app.php +++ b/config/app.php @@ -60,7 +60,7 @@ return [ 'url_stern' => env('APP_URL_STERN', 'https://www.sterntours.de'), - + 'domain_tld' => env('APP_DOMAIN_TLD', 'test'), /* |-------------------------------------------------------------------------- @@ -116,6 +116,7 @@ return [ 'cipher' => 'AES-256-CBC', + 'success_key' => env('SUCCESS_KEY'), /* |-------------------------------------------------------------------------- | Autoloaded Service Providers @@ -236,7 +237,7 @@ return [ 'Image' => Intervention\Image\Facades\Image::class, 'Carbon' => Carbon\Carbon::class, 'Date' => Jenssegers\Date\Date::class, - 'HTMLHelper' => App\Services\HTMLHelper::class, + 'HTMLHelper' => App\Helper\HTMLHelper::class, 'Util' => App\Services\Util::class, 'Excel' => Maatwebsite\Excel\Facades\Excel::class, 'DataTables' => Yajra\DataTables\Facades\DataTables::class, diff --git a/config/booking.php b/config/booking.php index 810a3e2..6a54169 100755 --- a/config/booking.php +++ b/config/booking.php @@ -4,5 +4,10 @@ return [ 'identifier_general' => 'booking-pdf-g-', 'identifier_general_name' => 'booking-pdf-general-name', 'identifier_content' => 'booking-pdf-c-', - 'identifier_content_name' => 'booking-pdf-content-name' + 'identifier_content_name' => 'booking-pdf-content-name', + 'max_interval_days' => 28, + 'deposit_percentage_rate' => 25, + 'max_deposit_interval_days' => 28, + 'coupon_default_value' => '50,00', + 'coupon_valid_date_month' => 24, ]; diff --git a/config/dompdf.php b/config/dompdf.php index fd74a89..660a8c8 100644 --- a/config/dompdf.php +++ b/config/dompdf.php @@ -232,7 +232,7 @@ return array( /** * A ratio applied to the fonts height to be more like browsers' line height */ - "font_height_ratio" => 1.1, + "font_height_ratio" => 0.8, /** * Use the more-than-experimental HTML5 Lib parser diff --git a/config/filesystems.php b/config/filesystems.php index 2318ca2..97762c8 100755 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -72,6 +72,12 @@ return [ 'url' => env('APP_URL').'/storage/booking', 'visibility' => 'public', ], + 'offer' => [ + 'driver' => 'local', + 'root' => storage_path('app/offer'), + 'url' => env('APP_URL').'/storage/offer', + 'visibility' => 'public', + ], 'general' => [ 'driver' => 'local', 'root' => storage_path('app/general'), diff --git a/config/permissions.php b/config/permissions.php index 31f153d..a6bdd69 100755 --- a/config/permissions.php +++ b/config/permissions.php @@ -1,66 +1,77 @@ [ + 'groups' => [ 0 => [ - 'my-dat' => ['name' => 'Ihre Daten' , 'color' => 'client'], - ], + 'my-dat' => ['name' => 'Ihre Daten', 'color' => 'client'], + ], 1 => [ - 'crm' => ['name' => 'ADMIN CRM ' , 'color' => 'admin'], - 'crm-tp' => ['name' => 'ADMIN CRM > Reiseprogramme' , 'color' => 'admin'], - 'crm-tp-pr' => ['name' => 'ADMIN CRM > Reiseprogramme > Programme' , 'color' => 'admin'], - 'crm-tp-dr' => ['name' => 'ADMIN CRM > Reiseprogramme > Vorlagen' , 'color' => 'admin'], - 'crm-bo' => ['name' => 'ADMIN CRM > Buchungen' , 'color' => 'admin'], - 'crm-bo-re' => ['name' => 'ADMIN CRM > Buchungen > Übersicht' , 'color' => 'admin'], - 'crm-bo-bo' => ['name' => 'ADMIN CRM > Buchungen > Buchungen' , 'color' => 'admin'], - 'crm-bo-le' => ['name' => 'ADMIN CRM > Buchungen > Anfragen' , 'color' => 'admin'], - 'crm-bo-cu' => ['name' => 'ADMIN CRM > Buchungen > Kunden' , 'color' => 'admin'], - 'crm-cm' => ['name' => 'ADMIN CRM > Kundenverwaltung' , 'color' => 'admin'], - 'crm-cm-cf' => ['name' => 'ADMIN CRM > Kundenverwaltung > Kunden (FeWo)' , 'color' => 'admin'], - 'crm-cm-bf' => ['name' => 'ADMIN CRM > Kundenverwaltung > Buchungen (FeWo)' , 'color' => 'admin'], - 'crm-mail' => ['name' => 'ADMIN CRM > E-Mails' , 'color' => 'admin'], - 'crm-mail-le' => ['name' => 'ADMIN CRM > E-Mails > Anfragen' , 'color' => 'admin'], - 'crm-mail-bo' => ['name' => 'ADMIN CRM > E-Mails > Buchungen' , 'color' => 'admin'], - 'crm-mail-bf' => ['name' => 'ADMIN CRM > E-Mails > Buchungen (Fewo)' , 'color' => 'admin'], - 'crm-iq-tl' => ['name' => 'ADMIN CRM > Reisebausteine' , 'color' => 'admin'], - 'crm-iq-tl-pro' => ['name' => 'ADMIN CRM > Reisebausteine > Programm' , 'color' => 'admin'], - 'crm-iq-tl-gp' => ['name' => 'ADMIN CRM > Reisebausteine > Gruppe' , 'color' => 'admin'], - 'crm-iq-tl-it' => ['name' => 'ADMIN CRM > Reisebausteine > Baustein' , 'color' => 'admin'], - 'crm-old-cm' => ['name' => 'ADMIN CRM altes System > Kundenverwaltung' , 'color' => 'info'], - 'cms' => ['name' => 'ADMIN CMS' , 'color' => 'secondary'], - 'cms-iq-assets' => ['name' => 'ADMIN CMS > Medien' , 'color' => 'secondary'], - 'cms-tg' => ['name' => 'ADMIN CMS > Reiseführer' , 'color' => 'secondary'], - 'cms-fewo' => ['name' => 'ADMIN CMS > FeWo' , 'color' => 'secondary'], - 'cms-book' => ['name' => 'ADMIN CMS > Buchungen' , 'color' => 'secondary'], - 'cms-fb' => ['name' => 'ADMIN CMS > Feedback' , 'color' => 'secondary'], - 'cms-aq' => ['name' => 'ADMIN CMS > Fragen & Antworten' , 'color' => 'secondary'], - 'cms-sb' => ['name' => 'ADMIN CMS > Sidebar' , 'color' => 'secondary'], - 'cms-cn' => ['name' => 'ADMIN CMS > Inhalte' , 'color' => 'secondary'], - 'cms-cn-in' => ['name' => 'ADMIN CMS > Inhalte > Infos' , 'color' => 'secondary'], - 'cms-cn-al' => ['name' => 'ADMIN CMS > Inhalte > Inhalte' , 'color' => 'secondary'], - 'cms-cn-au' => ['name' => 'ADMIN CMS > Inhalte > Autor' , 'color' => 'secondary'], + 'crm' => ['name' => 'ADMIN CRM ', 'color' => 'admin'], + 'crm-tp' => ['name' => 'ADMIN CRM > Reiseprogramme', 'color' => 'admin'], + 'crm-tp-pr' => ['name' => 'ADMIN CRM > Reiseprogramme > Programme', 'color' => 'admin'], + 'crm-tp-dr' => ['name' => 'ADMIN CRM > Reiseprogramme > Vorlagen', 'color' => 'admin'], + 'crm-tp-tc' => ['name' => 'ADMIN CRM > Reiseprogramme > Inhalte', 'color' => 'admin'], + 'crm-bo' => ['name' => 'ADMIN CRM > Buchungen', 'color' => 'admin'], + 'crm-bo-re' => ['name' => 'ADMIN CRM > Buchungen > Übersicht', 'color' => 'admin'], + 'crm-bo-bo' => ['name' => 'ADMIN CRM > Buchungen > Buchungen', 'color' => 'admin'], + 'crm-bo-le' => ['name' => 'ADMIN CRM > Buchungen > Anfragen', 'color' => 'admin'], + 'crm-bo-cu' => ['name' => 'ADMIN CRM > Buchungen > Kunden', 'color' => 'admin'], + 'crm-cm' => ['name' => 'ADMIN CRM > Kundenverwaltung', 'color' => 'admin'], + 'crm-cm-cf' => ['name' => 'ADMIN CRM > Kundenverwaltung > Kunden (FeWo)', 'color' => 'admin'], + 'crm-cm-bf' => ['name' => 'ADMIN CRM > Kundenverwaltung > Buchungen (FeWo)', 'color' => 'admin'], + 'crm-mail' => ['name' => 'ADMIN CRM > E-Mails', 'color' => 'admin'], + 'crm-mail-le' => ['name' => 'ADMIN CRM > E-Mails > Anfragen', 'color' => 'admin'], + 'crm-mail-bo' => ['name' => 'ADMIN CRM > E-Mails > Buchungen', 'color' => 'admin'], + 'crm-mail-bf' => ['name' => 'ADMIN CRM > E-Mails > Buchungen (Fewo)', 'color' => 'admin'], + 'crm-iq-tl' => ['name' => 'ADMIN CRM > Reisebausteine', 'color' => 'admin'], + 'crm-iq-tl-pro' => ['name' => 'ADMIN CRM > Reisebausteine > Programm', 'color' => 'admin'], + 'crm-iq-tl-gp' => ['name' => 'ADMIN CRM > Reisebausteine > Gruppe', 'color' => 'admin'], + 'crm-iq-tl-it' => ['name' => 'ADMIN CRM > Reisebausteine > Baustein', 'color' => 'admin'], + 'crm-old-cm' => ['name' => 'ADMIN CRM altes System > Kundenverwaltung', 'color' => 'info'], + 'cms' => ['name' => 'ADMIN CMS', 'color' => 'secondary'], + 'cms-iq-assets' => ['name' => 'ADMIN CMS > Medien', 'color' => 'secondary'], + 'cms-tg' => ['name' => 'ADMIN CMS > Reiseführer', 'color' => 'secondary'], + 'cms-fewo' => ['name' => 'ADMIN CMS > FeWo', 'color' => 'secondary'], + 'cms-book' => ['name' => 'ADMIN CMS > Buchungen', 'color' => 'secondary'], + 'cms-fb' => ['name' => 'ADMIN CMS > Feedback', 'color' => 'secondary'], + 'cms-nw' => ['name' => 'ADMIN CMS > News', 'color' => 'secondary'], + 'cms-aq' => ['name' => 'ADMIN CMS > Fragen & Antworten', 'color' => 'secondary'], + 'cms-sb' => ['name' => 'ADMIN CMS > Sidebar', 'color' => 'secondary'], + 'cms-cn' => ['name' => 'ADMIN CMS > Inhalte', 'color' => 'secondary'], + 'cms-cn-in' => ['name' => 'ADMIN CMS > Inhalte > Infos', 'color' => 'secondary'], + 'cms-cn-al' => ['name' => 'ADMIN CMS > Inhalte > Inhalte', 'color' => 'secondary'], + 'cms-cn-au' => ['name' => 'ADMIN CMS > Inhalte > Autor', 'color' => 'secondary'], + 'cms-cn-co' => ['name' => 'ADMIN CMS > Inhalte > Länder', 'color' => 'secondary'], + 'cms-newsletter' => ['name' => 'ADMIN CMS > Newsletter', 'color' => 'secondary'], + 'crm-nav-api' => ['name' => 'ADMIN CRM > Navigation API', 'color' => 'secondary'], ], 2 => [ - 'sua-bo-n-edit' => ['name' => 'SUPERADMIN > Buchungen > Notizen > bearbeiten' , 'color' => 'secondary'], - 'sua-fewo-n-edit' => ['name' => 'SUPERADMIN > FeWo > Notizen > bearbeiten' , 'color' => 'secondary'], - 'sua-st' => ['name' => 'SUPERADMIN > Einstellungen' , 'color' => 'superadmin'], - 'sua-st-al' => ['name' => 'SUPERADMIN > Einstellungen > Airline' , 'color' => 'superadmin'], - 'sua-st-em' => ['name' => 'SUPERADMIN > Einstellungen > E-Mails' , 'color' => 'superadmin'], - 'sua-st-ke' => ['name' => 'SUPERADMIN > Einstellungen > Keywords' , 'color' => 'superadmin'], - 'sua-st-sp' => ['name' => 'SUPERADMIN > Einstellungen > Leistungsträger' , 'color' => 'superadmin'], - 'sua-st-tn' => ['name' => 'SUPERADMIN > Einstellungen > Nationalitäten' , 'color' => 'superadmin'], - 'sua-st-co' => ['name' => 'SUPERADMIN > Einstellungen > Reiseländer' , 'color' => 'superadmin'], - 'sua-st-tp' => ['name' => 'SUPERADMIN > Einstellungen > Reiseprogramme' , 'color' => 'superadmin'], - 'sua-st-tpl' => ['name' => 'SUPERADMIN > Einstellungen > Reiseorte' , 'color' => 'superadmin'], - 'sua-st-bs' => ['name' => 'SUPERADMIN > Einstellungen > Reisestatus' , 'color' => 'superadmin'], - 'sua-st-tc' => ['name' => 'SUPERADMIN > Einstellungen > Veranstalter' , 'color' => 'superadmin'], - 'sua-st-in' => ['name' => 'SUPERADMIN > Einstellungen > Versicherungen' , 'color' => 'superadmin'], - 'sua-st-ca' => ['name' => 'SUPERADMIN > Einstellungen > Kategorien' , 'color' => 'superadmin'], - 'sua-re' => ['name' => 'SUPERADMIN > Export' , 'color' => 'superadmin'], - 'sua-re-bo' => ['name' => 'SUPERADMIN > Export > Buchungen' , 'color' => 'superadmin'], - 'sua-re-pp' => ['name' => 'SUPERADMIN > Export > Leistungsträger' , 'color' => 'superadmin'], - 'sua-ur-rt' => ['name' => 'SUPERADMIN > User Rechte' , 'color' => 'danger'], - 'cms-cn-co' => ['name' => 'ADMIN CMS > Inhalte > Länder' , 'color' => 'secondary'], + 'sua-bo-n-edit' => ['name' => 'SUPERADMIN > Buchungen > Notizen > bearbeiten', 'color' => 'secondary'], + 'sua-fewo-n-edit' => ['name' => 'SUPERADMIN > FeWo > Notizen > bearbeiten', 'color' => 'secondary'], + 'sua-st' => ['name' => 'SUPERADMIN > Einstellungen', 'color' => 'superadmin'], + 'sua-st-al' => ['name' => 'SUPERADMIN > Einstellungen > Airline', 'color' => 'superadmin'], + 'sua-st-ap' => ['name' => 'SUPERADMIN > Einstellungen > Airport', 'color' => 'superadmin'], + 'sua-st-em' => ['name' => 'SUPERADMIN > Einstellungen > E-Mails', 'color' => 'superadmin'], + 'sua-st-ke' => ['name' => 'SUPERADMIN > Einstellungen > Keywords', 'color' => 'superadmin'], + 'sua-st-sp' => ['name' => 'SUPERADMIN > Einstellungen > Leistungsträger', 'color' => 'superadmin'], + 'sua-st-tn' => ['name' => 'SUPERADMIN > Einstellungen > Nationalitäten', 'color' => 'superadmin'], + 'sua-st-co' => ['name' => 'SUPERADMIN > Einstellungen > Reiseländer', 'color' => 'superadmin'], + 'sua-st-tp' => ['name' => 'SUPERADMIN > Einstellungen > Reiseprogramme', 'color' => 'superadmin'], + 'sua-st-tpl' => ['name' => 'SUPERADMIN > Einstellungen > Reiseorte', 'color' => 'superadmin'], + 'sua-st-bs' => ['name' => 'SUPERADMIN > Einstellungen > Reisestatus', 'color' => 'superadmin'], + 'sua-st-tc' => ['name' => 'SUPERADMIN > Einstellungen > Veranstalter', 'color' => 'superadmin'], + 'sua-st-tca' => ['name' => 'SUPERADMIN > Einstellungen > Reiseart', 'color' => 'superadmin'], + 'sua-st-tap' => ['name' => 'SUPERADMIN > Einstellungen > Zielflughafen', 'color' => 'superadmin'], + 'sua-st-in' => ['name' => 'SUPERADMIN > Einstellungen > Versicherungen', 'color' => 'superadmin'], + 'sua-st-ca' => ['name' => 'SUPERADMIN > Einstellungen > Kategorien', 'color' => 'superadmin'], + 'sua-st-tgn' => ['name' => 'SUPERADMIN > Einstellungen > Reisehinweise', 'color' => 'superadmin'], + 'sua-re' => ['name' => 'SUPERADMIN > Export', 'color' => 'superadmin'], + 'sua-re-bo' => ['name' => 'SUPERADMIN > Export > Buchungen', 'color' => 'superadmin'], + 'sua-re-pp' => ['name' => 'SUPERADMIN > Export > Leistungsträger', 'color' => 'superadmin'], + 'sua-re-fw' => ['name' => 'SUPERADMIN > Export > Fewo', 'color' => 'superadmin'], + 'sua-re-le' => ['name' => 'SUPERADMIN > Export > Anfragen', 'color' => 'superadmin'], + 'sua-ur-rt' => ['name' => 'SUPERADMIN > User Rechte', 'color' => 'danger'], + ], ], 'roles' => [ @@ -68,4 +79,4 @@ return [ 1 => 'Admin', 2 => 'SuperAdmin' ] -]; \ No newline at end of file +]; diff --git a/config/trustedproxy.php b/config/trustedproxy.php index acda8d5..7400d5d 100644 --- a/config/trustedproxy.php +++ b/config/trustedproxy.php @@ -39,7 +39,12 @@ return [ * * @link https://symfony.com/doc/current/deployment/proxies.html */ - 'headers' => Illuminate\Http\Request::HEADER_X_FORWARDED_ALL, + 'headers' => Illuminate\Http\Request::HEADER_X_FORWARDED_FOR | + Illuminate\Http\Request::HEADER_X_FORWARDED_HOST | + Illuminate\Http\Request::HEADER_X_FORWARDED_PORT | + Illuminate\Http\Request::HEADER_X_FORWARDED_PROTO | + Illuminate\Http\Request::HEADER_X_FORWARDED_PREFIX | + Illuminate\Http\Request::HEADER_X_FORWARDED_AWS_ELB, ]; diff --git a/database/factories/BookingFactory.php b/database/factories/BookingFactory.php new file mode 100644 index 0000000..29244ea --- /dev/null +++ b/database/factories/BookingFactory.php @@ -0,0 +1,69 @@ + + */ +class BookingFactory extends Factory +{ + protected $model = Booking::class; + + public function definition(): array + { + $start = fake()->dateTimeBetween('+1 month', '+6 months'); + $end = fake()->dateTimeBetween($start, '+12 months'); + + return [ + 'customer_id' => CustomerFactory::new(), + 'lead_id' => LeadFactory::new(), + 'booking_date' => now()->format('Y-m-d'), + 'start_date' => $start->format('Y-m-d'), + 'end_date' => $end->format('Y-m-d'), + 'sf_guard_user_id' => null, + 'branch_id' => null, + 'service_fee' => 0.0, + 'travel_country_id' => null, + 'travel_category_id' => null, + 'pax' => 2, + 'coupon_id' => null, + 'title' => fake()->sentence(4), + 'travel_number' => strtoupper(fake()->bothify('??####')), + 'participant_name' => fake()->lastName(), + 'participant_firstname' => fake()->firstName(), + 'participant_birthdate' => fake()->dateTimeBetween('-60 years', '-18 years')->format('Y-m-d'), + 'participant_salutation_id' => 1, + 'ev_number' => '', + 'merlin_knr' => '', + 'merlin_order_number' => '', + 'travel_company_id' => null, + 'travel_documents' => false, + 'price' => fake()->randomFloat(2, 500, 5000), + 'price_total' => 0.0, + 'deposit_total' => 0.0, + 'final_payment' => 0.0, + 'final_payment_date' => null, + 'travelagenda_id' => null, + 'website_id' => null, + 'new_drafts' => false, + ]; + } + + public function canceled(): static + { + return $this->state(fn (array $attributes) => [ + 'canceled' => 1.0, + ]); + } + + public function withPrice(float $price): static + { + return $this->state(fn (array $attributes) => [ + 'price' => $price, + 'price_total' => $price, + ]); + } +} diff --git a/database/factories/CustomerFactory.php b/database/factories/CustomerFactory.php new file mode 100644 index 0000000..5f91720 --- /dev/null +++ b/database/factories/CustomerFactory.php @@ -0,0 +1,50 @@ + + */ +class CustomerFactory extends Factory +{ + protected $model = Customer::class; + + public function definition(): array + { + return [ + 'salutation_id' => 1, + 'title' => '', + 'name' => fake()->lastName(), + 'firstname' => fake()->firstName(), + 'birthdate' => fake()->dateTimeBetween('-80 years', '-18 years')->format('Y-m-d'), + 'company' => '', + 'street' => fake()->streetAddress(), + 'zip' => fake()->postcode(), + 'city' => fake()->city(), + 'email' => fake()->unique()->safeEmail(), + 'phone' => fake()->phoneNumber(), + 'phonebusiness' => '', + 'phonemobile' => fake()->phoneNumber(), + 'fax' => '', + 'bank' => '', + 'bank_code' => '', + 'bank_account_number' => '', + 'credit_card_type_id' => null, + 'credit_card_number' => '', + 'credit_card_expiration_date'=> null, + 'participants_remarks' => '', + 'miscellaneous_remarks' => '', + 'country_id' => null, + ]; + } + + public function company(): static + { + return $this->state(fn (array $attributes) => [ + 'company' => fake()->company(), + ]); + } +} diff --git a/database/factories/LeadFactory.php b/database/factories/LeadFactory.php new file mode 100644 index 0000000..2273966 --- /dev/null +++ b/database/factories/LeadFactory.php @@ -0,0 +1,60 @@ + + */ +class LeadFactory extends Factory +{ + protected $model = Lead::class; + + public function definition(): array + { + $start = fake()->dateTimeBetween('+1 month', '+6 months'); + $end = fake()->dateTimeBetween($start, '+12 months'); + + return [ + 'customer_id' => CustomerFactory::new(), + 'request_date' => now()->format('Y-m-d'), + 'travelperiod_start' => $start->format('Y-m-d'), + 'travelperiod_end' => $end->format('Y-m-d'), + 'travelperiod_length' => (int) $start->diff($end)->days, + 'travelcountry_id' => null, + 'travelagenda_id' => null, + 'remarks' => '', + 'sf_guard_user_id' => null, + 'is_closed' => false, + 'initialcontacttype_id' => null, + 'searchengine_id' => null, + 'searchengine_keywords' => '', + 'status_id' => 1, + 'next_due_date' => now()->addDays(7)->format('Y-m-d'), + 'website_id' => null, + 'travelcategory_id' => null, + 'price' => 0.0, + 'pax' => 2, + 'participant_name' => fake()->lastName(), + 'participant_firstname' => fake()->firstName(), + 'participant_birthdate' => fake()->dateTimeBetween('-60 years', '-18 years')->format('Y-m-d'), + 'participant_salutation_id' => 1, + ]; + } + + public function closed(): static + { + return $this->state(fn (array $attributes) => [ + 'is_closed' => true, + ]); + } + + public function withPrice(float $price): static + { + return $this->state(fn (array $attributes) => [ + 'price' => $price, + ]); + } +} diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index facf233..67ccaa0 100755 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -1,23 +1,43 @@ define(App\User::class, function (Faker $faker) { - return [ - 'name' => $faker->name, - 'email' => $faker->unique()->safeEmail, - 'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret - 'remember_token' => str_random(10), - ]; -}); +/** + * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\User> + */ +class UserFactory extends Factory +{ + protected $model = User::class; + + public function definition(): array + { + return [ + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), + 'password' => Hash::make('password'), + 'remember_token' => Str::random(10), + 'active' => 1, + 'admin' => 0, + 'confirmed' => 1, + ]; + } + + public function admin(): static + { + return $this->state(fn (array $attributes) => [ + 'admin' => 1, + ]); + } + + public function inactive(): static + { + return $this->state(fn (array $attributes) => [ + 'active' => 0, + ]); + } +} diff --git a/database/migrations/2019_03_21_123748_create_travel_user_booking_fewos_table.php b/database/migrations/2019_03_21_123748_create_travel_user_booking_fewos_table.php index 6342e01..18e72f2 100644 --- a/database/migrations/2019_03_21_123748_create_travel_user_booking_fewos_table.php +++ b/database/migrations/2019_03_21_123748_create_travel_user_booking_fewos_table.php @@ -46,6 +46,7 @@ class CreateTravelUserBookingFewosTable extends Migration $table->text('notice')->nullable(); + $table->boolean('is_calendar_traum_fewo')->default(false); // Fewo-Direkt, HRS und STERN TOUR $table->boolean('is_calendar_fewo_direct')->default(false); // Fewo-Direkt, HRS und STERN TOUR $table->boolean('is_calendar_hrs')->default(false); $table->boolean('is_calendar_stern_tours')->default(false); diff --git a/database/migrations/2020_04_08_094515_create_booking_voucher_agency_table.php b/database/migrations/2020_04_08_094515_create_booking_voucher_agency_table.php new file mode 100644 index 0000000..e989238 --- /dev/null +++ b/database/migrations/2020_04_08_094515_create_booking_voucher_agency_table.php @@ -0,0 +1,47 @@ +bigIncrements('id'); + $table->bigInteger('booking_id'); + $table->binary('binary_data'); + $table->dateTime('created_at'); + $table->dateTime('updated_at'); + + $table->index('booking_id', 'booking_voucher_agency_booking_id_idx'); + + $table->foreign('booking_id', 'booking_voucher_agency_booking_id_booking_id')->references('id')->on('booking')->onDelete('CASCADE +')->onUpdate('RESTRICT'); + + }); + + + + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('booking_voucher_agency'); + } +} diff --git a/database/migrations/2020_04_08_094515_create_booking_voucher_table.php b/database/migrations/2020_04_08_094515_create_booking_voucher_table.php new file mode 100644 index 0000000..854c482 --- /dev/null +++ b/database/migrations/2020_04_08_094515_create_booking_voucher_table.php @@ -0,0 +1,47 @@ +bigIncrements('id'); + $table->bigInteger('booking_id'); + $table->binary('binary_data'); + $table->dateTime('created_at'); + $table->dateTime('updated_at'); + + $table->index('booking_id', 'booking_voucher_booking_id_idx'); + + $table->foreign('booking_id', 'booking_voucher_booking_id_booking_id')->references('id')->on('booking')->onDelete('CASCADE +')->onUpdate('RESTRICT'); + + }); + + + + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('booking_voucher'); + } +} diff --git a/database/migrations/2024_04_24_151608_create_booking_documents_table.php b/database/migrations/2024_04_24_151608_create_booking_documents_table.php new file mode 100644 index 0000000..58801bf --- /dev/null +++ b/database/migrations/2024_04_24_151608_create_booking_documents_table.php @@ -0,0 +1,70 @@ +bigIncrements('id'); + + $table->bigInteger('booking_id')->nullable(); + $table->bigInteger('customer_id')->nullable(); + $table->bigInteger('lead_id')->nullable(); + $table->bigInteger('coupon_id')->nullable(); + $table->bigInteger('booking_storno_id')->nullable(); + + $table->string('identifier')->index(); + $table->string('filename'); + $table->string('dir'); + $table->string('original_name'); + $table->string('ext'); + $table->string('mine'); + $table->unsignedInteger('size'); + $table->date('date'); + $table->text('data')->nullable(); + + $table->unsignedTinyInteger('status')->nullable()->default(0); + + $table->timestamps(); + + $table->foreign('booking_id') + ->references('id') + ->on('booking'); + + $table->foreign('customer_id') + ->references('id') + ->on('customer'); + + $table->foreign('lead_id') + ->references('id') + ->on('lead'); + + $table->foreign('coupon_id') + ->references('id') + ->on('coupon'); + + $table->foreign('booking_storno_id') + ->references('id') + ->on('booking_storno'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('booking_documents'); + } +} diff --git a/database/migrations/2024_05_27_095607_create_airport_table.php b/database/migrations/2024_05_27_095607_create_airport_table.php new file mode 100644 index 0000000..7de1e16 --- /dev/null +++ b/database/migrations/2024_05_27_095607_create_airport_table.php @@ -0,0 +1,36 @@ +bigIncrements('id'); + $table->string('code', 10); + $table->string('name', 255); + $table->string('city', 255)->nullable(); + $table->string('country', 255)->nullable(); + $table->boolean('active')->default(true); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('airports'); + } +} diff --git a/database/migrations/2025_04_15_100001_phase1_add_merge_fields_to_customer_table.php b/database/migrations/2025_04_15_100001_phase1_add_merge_fields_to_customer_table.php new file mode 100644 index 0000000..2c6a17b --- /dev/null +++ b/database/migrations/2025_04_15_100001_phase1_add_merge_fields_to_customer_table.php @@ -0,0 +1,36 @@ +unsignedBigInteger('merged_into_id')->nullable()->after('id'); + $table->dateTime('merged_at')->nullable()->after('merged_into_id'); + + $table->index('merged_into_id', 'customer_merged_into_id_idx'); + }); + } + + public function down(): void + { + Schema::table('customer', function (Blueprint $table) { + $table->dropIndex('customer_merged_into_id_idx'); + $table->dropColumn(['merged_into_id', 'merged_at']); + }); + } +}; diff --git a/database/migrations/2025_04_15_100002_phase1_add_soft_delete_to_customer_table.php b/database/migrations/2025_04_15_100002_phase1_add_soft_delete_to_customer_table.php new file mode 100644 index 0000000..464aa32 --- /dev/null +++ b/database/migrations/2025_04_15_100002_phase1_add_soft_delete_to_customer_table.php @@ -0,0 +1,34 @@ +softDeletes(); + }); + } + + public function down(): void + { + Schema::table('customer', function (Blueprint $table) { + $table->dropSoftDeletes(); + }); + } +}; diff --git a/database/migrations/2025_04_15_200001_phase2_rename_customer_to_contacts.php b/database/migrations/2025_04_15_200001_phase2_rename_customer_to_contacts.php new file mode 100644 index 0000000..17cd0b4 --- /dev/null +++ b/database/migrations/2025_04_15_200001_phase2_rename_customer_to_contacts.php @@ -0,0 +1,30 @@ +dropForeign('booking_lead_id_lead_id'); + }); + + DB::statement('ALTER TABLE `booking` RENAME COLUMN `lead_id` TO `inquiry_id`'); + + Schema::table('booking', function (Blueprint $table) { + // Neuen FK auf umbenannte Tabelle setzen + $table->foreign('inquiry_id', 'booking_inquiry_id_inquiries_id') + ->references('id')->on('inquiries') + ->onDelete('no action') + ->onUpdate('no action'); + }); + } + + public function down(): void + { + Schema::table('booking', function (Blueprint $table) { + $table->dropForeign('booking_inquiry_id_inquiries_id'); + }); + + DB::statement('ALTER TABLE `booking` RENAME COLUMN `inquiry_id` TO `lead_id`'); + + Schema::table('booking', function (Blueprint $table) { + $table->foreign('lead_id', 'booking_lead_id_lead_id') + ->references('id')->on('lead') + ->onDelete('no action') + ->onUpdate('no action'); + }); + } +}; diff --git a/database/migrations/2025_04_15_300001_phase3_create_participants_unified_table.php b/database/migrations/2025_04_15_300001_phase3_create_participants_unified_table.php new file mode 100644 index 0000000..70a1c2f --- /dev/null +++ b/database/migrations/2025_04_15_300001_phase3_create_participants_unified_table.php @@ -0,0 +1,123 @@ +id(); + + // Kontext-FKs — genau einer ist gesetzt, der andere NULL + $table->unsignedBigInteger('inquiry_id')->nullable(); + $table->unsignedBigInteger('booking_id')->nullable(); + + // Teilnehmerdaten + $table->string('participant_name')->nullable(); + $table->string('participant_firstname')->nullable(); + $table->date('participant_birthdate')->nullable(); + $table->unsignedBigInteger('participant_salutation_id')->nullable(); + $table->boolean('participant_child')->default(false); + $table->integer('nationality_id')->nullable(); + + // Nur bei Buchungs-Teilnehmern + $table->boolean('participant_pass')->default(false); + $table->boolean('participant_storno')->default(false); + + // Markiert den Hauptreisenden aus lead.participant_name + $table->boolean('is_lead_contact')->default(false); + + $table->timestamps(); + + $table->index('inquiry_id'); + $table->index('booking_id'); + + $table->foreign('inquiry_id', 'pu_inquiry_id_fk') + ->references('id')->on('inquiries') + ->onDelete('cascade'); + + $table->foreign('booking_id', 'pu_booking_id_fk') + ->references('id')->on('booking') + ->onDelete('cascade'); + + $table->foreign('participant_salutation_id', 'pu_salutation_id_fk') + ->references('id')->on('salutation') + ->onDelete('set null'); + }); + + // ── Daten migrieren ───────────────────────────────────────────────── + + // 1. Aus lead_participant → inquiry_id gesetzt + DB::statement(" + INSERT INTO participants_unified + (inquiry_id, booking_id, participant_name, participant_firstname, + participant_birthdate, participant_salutation_id, participant_child, + nationality_id, is_lead_contact, created_at, updated_at) + SELECT + lead_id, NULL, + participant_name, participant_firstname, + participant_birthdate, participant_salutation_id, participant_child, + nationality_id, 0, + NOW(), NOW() + FROM lead_participant + "); + + // 2. Aus lead.participant_name → Hauptreisende-Datensätze (is_lead_contact = 1) + DB::statement(" + INSERT INTO participants_unified + (inquiry_id, booking_id, participant_name, participant_firstname, + participant_birthdate, participant_salutation_id, participant_child, + nationality_id, is_lead_contact, created_at, updated_at) + SELECT + id, NULL, + participant_name, participant_firstname, + participant_birthdate, participant_salutation_id, 0, + NULL, 1, + NOW(), NOW() + FROM inquiries + WHERE participant_name IS NOT NULL + AND participant_name != '' + "); + + // 3. Aus participant → booking_id gesetzt + DB::statement(" + INSERT INTO participants_unified + (inquiry_id, booking_id, participant_name, participant_firstname, + participant_birthdate, participant_salutation_id, participant_child, + nationality_id, participant_pass, participant_storno, + is_lead_contact, created_at, updated_at) + SELECT + NULL, booking_id, + participant_name, participant_firstname, + participant_birthdate, participant_salutation_id, participant_child, + nationality_id, participant_pass, participant_storno, + 0, NOW(), NOW() + FROM participant + "); + } + + public function down(): void + { + Schema::dropIfExists('participants_unified'); + } +}; diff --git a/database/migrations/2025_04_15_300002_phase3_drop_old_participant_tables.php b/database/migrations/2025_04_15_300002_phase3_drop_old_participant_tables.php new file mode 100644 index 0000000..3f2cbec --- /dev/null +++ b/database/migrations/2025_04_15_300002_phase3_drop_old_participant_tables.php @@ -0,0 +1,40 @@ +id(); + + // Kontext-FKs — bei customer_mails können beide gesetzt sein + $table->unsignedBigInteger('inquiry_id')->nullable(); + $table->unsignedBigInteger('booking_id')->nullable(); + $table->unsignedBigInteger('contact_id')->nullable(); + + // Reply-Chain — kein FK-Constraint (cross-table Remapping) + $table->unsignedBigInteger('reply_id')->nullable(); + + // Herkunft für Remapping und spätere Analyse + $table->enum('legacy_source', ['lead_mail', 'customer_mail']); + $table->unsignedBigInteger('legacy_id'); + + // Mail-Felder (identisch in beiden Quell-Tabellen) + $table->boolean('is_answer')->default(false); + $table->string('email')->nullable(); + $table->text('recipient')->nullable(); + $table->text('cc')->nullable(); + $table->text('bcc')->nullable(); + $table->string('subject')->nullable(); + $table->text('message')->nullable(); + $table->boolean('dir')->default(false); + $table->unsignedBigInteger('subdir')->nullable(); + + // Nur in customer_mails vorhanden + $table->unsignedBigInteger('travel_country_id')->nullable(); + + $table->boolean('draft')->default(false); + $table->boolean('important')->default(false); + $table->boolean('send')->default(false); + $table->boolean('fail')->default(false); + $table->text('error')->nullable(); + $table->text('forward')->nullable(); + + $table->dateTime('sent_at')->nullable(); + $table->dateTime('scheduled_at')->nullable(); + $table->dateTime('delivered_at')->nullable(); + + $table->timestamps(); + + $table->index('inquiry_id'); + $table->index('booking_id'); + $table->index('contact_id'); + $table->index('reply_id'); + $table->index(['legacy_source', 'legacy_id'], 'comm_legacy_idx'); + + $table->foreign('inquiry_id', 'comm_inquiry_id_fk') + ->references('id')->on('inquiries') + ->onDelete('cascade'); + + $table->foreign('booking_id', 'comm_booking_id_fk') + ->references('id')->on('booking') + ->onDelete('cascade'); + + $table->foreign('contact_id', 'comm_contact_id_fk') + ->references('id')->on('contacts') + ->onDelete('set null'); + }); + + // ── Daten migrieren ───────────────────────────────────────────────── + + // 1. Aus lead_mails → inquiry_id gesetzt + DB::statement(" + INSERT INTO communications + (inquiry_id, booking_id, contact_id, is_answer, reply_id, + legacy_source, legacy_id, + email, recipient, cc, bcc, subject, message, + dir, subdir, travel_country_id, + draft, important, send, fail, error, forward, + sent_at, scheduled_at, delivered_at, created_at, updated_at) + SELECT + lead_id, NULL, customer_id, is_answer, reply_id, + 'lead_mail', id, + email, recipient, cc, bcc, subject, message, + dir, subdir, NULL, + draft, important, send, fail, error, forward, + sent_at, scheduled_at, delivered_at, created_at, updated_at + FROM lead_mails + "); + + // 2. Aus customer_mails → booking_id gesetzt (kann zusätzlich lead_id haben) + DB::statement(" + INSERT INTO communications + (inquiry_id, booking_id, contact_id, is_answer, reply_id, + legacy_source, legacy_id, + email, recipient, cc, bcc, subject, message, + dir, subdir, travel_country_id, + draft, important, send, fail, error, forward, + sent_at, scheduled_at, delivered_at, created_at, updated_at) + SELECT + lead_id, booking_id, customer_id, is_answer, reply_id, + 'customer_mail', id, + email, recipient, cc, bcc, subject, message, + dir, subdir, travel_country_id, + draft, important, send, fail, error, forward, + sent_at, scheduled_at, delivered_at, created_at, updated_at + FROM customer_mails + "); + + // 3. Reply-IDs remappen: alte source-table-IDs auf neue communications-IDs umstellen + // Funktioniert weil reply_id immer auf eine Mail derselben Quell-Tabelle zeigt. + DB::statement(" + UPDATE communications c1 + INNER JOIN communications c2 + ON c1.legacy_source = c2.legacy_source + AND c2.legacy_id = c1.reply_id + SET c1.reply_id = c2.id + WHERE c1.reply_id IS NOT NULL + "); + } + + public function down(): void + { + Schema::dropIfExists('communications'); + } +}; diff --git a/database/migrations/2025_04_15_400002_phase4_create_notices_table.php b/database/migrations/2025_04_15_400002_phase4_create_notices_table.php new file mode 100644 index 0000000..624c891 --- /dev/null +++ b/database/migrations/2025_04_15_400002_phase4_create_notices_table.php @@ -0,0 +1,94 @@ +id(); + + // Kontext-FKs — genau einer ist gesetzt + $table->unsignedBigInteger('inquiry_id')->nullable(); + $table->unsignedBigInteger('booking_id')->nullable(); + + // Benutzer-Referenzen (integer wie in den Quell-Tabellen) + $table->unsignedInteger('from_user_id'); + $table->unsignedInteger('to_user_id')->nullable(); + + $table->text('message')->nullable(); + $table->boolean('show')->default(false); + $table->boolean('important')->default(false); + $table->dateTime('edit_at')->nullable(); + + $table->timestamps(); + + $table->index('inquiry_id'); + $table->index('booking_id'); + $table->index('from_user_id'); + $table->index('to_user_id'); + + $table->foreign('inquiry_id', 'notices_inquiry_id_fk') + ->references('id')->on('inquiries') + ->onDelete('cascade'); + + $table->foreign('booking_id', 'notices_booking_id_fk') + ->references('id')->on('booking') + ->onDelete('cascade'); + + $table->foreign('from_user_id', 'notices_from_user_id_fk') + ->references('id')->on('users') + ->onDelete('cascade'); + + $table->foreign('to_user_id', 'notices_to_user_id_fk') + ->references('id')->on('users') + ->onDelete('cascade'); + }); + + // ── Daten migrieren ───────────────────────────────────────────────── + + // 1. Aus lead_notices → inquiry_id gesetzt + DB::statement(" + INSERT INTO notices + (inquiry_id, booking_id, from_user_id, to_user_id, + message, show, important, edit_at, created_at, updated_at) + SELECT + lead_id, NULL, from_user_id, to_user_id, + message, show, important, edit_at, created_at, updated_at + FROM lead_notices + "); + + // 2. Aus booking_notices → booking_id gesetzt + DB::statement(" + INSERT INTO notices + (inquiry_id, booking_id, from_user_id, to_user_id, + message, show, important, edit_at, created_at, updated_at) + SELECT + NULL, booking_id, from_user_id, to_user_id, + message, show, important, edit_at, created_at, updated_at + FROM booking_notices + "); + } + + public function down(): void + { + Schema::dropIfExists('notices'); + } +}; diff --git a/database/migrations/2025_04_15_400003_phase4_create_attachments_table.php b/database/migrations/2025_04_15_400003_phase4_create_attachments_table.php new file mode 100644 index 0000000..7f44feb --- /dev/null +++ b/database/migrations/2025_04_15_400003_phase4_create_attachments_table.php @@ -0,0 +1,118 @@ +id(); + + // Kontext-FKs + $table->unsignedBigInteger('inquiry_id')->nullable(); + $table->unsignedBigInteger('booking_id')->nullable(); + + // Verknüpfung zur dazugehörigen Mail (nur bei Anfrage-Anhängen) + $table->unsignedBigInteger('communication_id')->nullable(); + + // Datei-Metadaten + $table->string('identifier')->nullable(); + $table->string('filename'); + $table->string('dir')->nullable(); + $table->string('original_name')->nullable(); + $table->string('ext')->nullable(); + $table->string('mime_type')->nullable(); + $table->unsignedInteger('size')->nullable(); + + // Herkunft für spätere Analyse / Rollback + $table->enum('legacy_source', ['lead_file', 'booking_file']); + $table->unsignedBigInteger('legacy_id'); + + $table->timestamps(); + + $table->index('inquiry_id'); + $table->index('booking_id'); + $table->index('communication_id'); + $table->index('identifier', 'attachments_identifier_idx'); + $table->index(['legacy_source', 'legacy_id'], 'attachments_legacy_idx'); + + $table->foreign('inquiry_id', 'att_inquiry_id_fk') + ->references('id')->on('inquiries') + ->onDelete('cascade'); + + $table->foreign('booking_id', 'att_booking_id_fk') + ->references('id')->on('booking') + ->onDelete('cascade'); + + $table->foreign('communication_id', 'att_communication_id_fk') + ->references('id')->on('communications') + ->onDelete('set null'); + }); + + // ── Daten migrieren ───────────────────────────────────────────────── + + // 1. Aus lead_files → inquiry_id gesetzt; communication_id wird unten gesetzt + DB::statement(" + INSERT INTO attachments + (inquiry_id, booking_id, communication_id, + identifier, filename, dir, original_name, ext, mime_type, size, + legacy_source, legacy_id, created_at, updated_at) + SELECT + lead_id, NULL, NULL, + identifier, filename, dir, original_name, ext, mine, size, + 'lead_file', id, created_at, updated_at + FROM lead_files + "); + + // 2. Aus booking_files → booking_id gesetzt + DB::statement(" + INSERT INTO attachments + (inquiry_id, booking_id, communication_id, + identifier, filename, dir, original_name, ext, mime_type, size, + legacy_source, legacy_id, created_at, updated_at) + SELECT + NULL, booking_id, NULL, + identifier, filename, dir, original_name, ext, mine, size, + 'booking_file', id, created_at, updated_at + FROM booking_files + "); + + // 3. communication_id für lead_files setzen (sofern lead_mail_id gesetzt war) + // Nutzt legacy_source + legacy_id der communications-Tabelle. + DB::statement(" + UPDATE attachments a + INNER JOIN lead_files lf ON lf.id = a.legacy_id + INNER JOIN communications c + ON c.legacy_source = 'lead_mail' + AND c.legacy_id = lf.lead_mail_id + SET a.communication_id = c.id + WHERE a.legacy_source = 'lead_file' + AND lf.lead_mail_id IS NOT NULL + "); + } + + public function down(): void + { + Schema::dropIfExists('attachments'); + } +}; diff --git a/database/migrations/2025_04_15_400004_phase4_drop_old_communication_tables.php b/database/migrations/2025_04_15_400004_phase4_drop_old_communication_tables.php new file mode 100644 index 0000000..bbdff3f --- /dev/null +++ b/database/migrations/2025_04_15_400004_phase4_drop_old_communication_tables.php @@ -0,0 +1,45 @@ +dropForeign('lead_files_lead_mail_id_foreign'); + }); + } + + Schema::dropIfExists('lead_mails'); + Schema::dropIfExists('customer_mails'); + } + + public function down(): void + { + throw new \RuntimeException( + 'Phase 4 Schritt 2a kann nicht automatisch zurückgerollt werden. ' . + 'Bitte Datenbank-Backup einspielen.' + ); + } +}; diff --git a/database/migrations/2025_04_15_400005_phase4_drop_old_notice_tables.php b/database/migrations/2025_04_15_400005_phase4_drop_old_notice_tables.php new file mode 100644 index 0000000..d50006d --- /dev/null +++ b/database/migrations/2025_04_15_400005_phase4_drop_old_notice_tables.php @@ -0,0 +1,35 @@ +id(); + + // Kontaktdaten + $table->string('email')->index(); + $table->string('firstname')->nullable(); + $table->string('lastname')->nullable(); + + // Newsletter-Gruppen (kann mehrere sein) + $table->boolean('group_kulturreisen')->default(false)->index(); + $table->boolean('group_ferienwohnungen')->default(false)->index(); + + // Status & Herkunft + $table->enum('source', [ + 'booking_kulturreisen', + 'booking_ferienwohnungen', + 'newsletter_signup', + 'manual', + 'import' + ])->index(); + + $table->enum('status', [ + 'active', + 'inactive', + 'unsubscribed', + 'bounced' + ])->default('active')->index(); + + // Tracking-Informationen + $table->timestamp('subscribed_at')->nullable(); + $table->timestamp('unsubscribed_at')->nullable(); + $table->timestamp('last_booking_at')->nullable(); + + // Statistiken + $table->integer('total_bookings_kulturreisen')->default(0); + $table->integer('total_bookings_ferienwohnungen')->default(0); + + // Referenzen zu Originaldaten + $table->integer('customer_id')->nullable()->index()->comment('Referenz zu customer Tabelle für Kulturreisen'); + $table->integer('travel_user_id')->nullable()->index()->comment('Referenz zu travel_users Tabelle für Ferienwohnungen'); + + // Sync-Informationen + $table->timestamp('last_synced_at')->nullable(); + $table->string('sync_hash')->nullable()->comment('Hash für Duplikat-Erkennung'); + + // Notizen & Zusatzinformationen + $table->text('notes')->nullable(); + + $table->timestamps(); + $table->softDeletes(); + + // Unique Index auf E-Mail (nur für nicht gelöschte Einträge) + $table->unique(['email', 'deleted_at'], 'newsletter_email_unique'); + + // Composite Index für häufige Abfragen mit kürzeren Namen + $table->index(['status', 'group_kulturreisen', 'group_ferienwohnungen'], 'newsletter_status_groups_idx'); + $table->index(['source', 'status'], 'newsletter_source_status_idx'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('newsletter_contacts'); + } +} + diff --git a/database/migrations/2025_11_07_000002_create_newsletter_logs_table.php b/database/migrations/2025_11_07_000002_create_newsletter_logs_table.php new file mode 100644 index 0000000..67b1625 --- /dev/null +++ b/database/migrations/2025_11_07_000002_create_newsletter_logs_table.php @@ -0,0 +1,51 @@ +id(); + $table->foreignId('newsletter_contact_id')->constrained()->onDelete('cascade'); + + $table->enum('action', [ + 'subscribed', + 'unsubscribed', + 'booking_added', + 'status_changed', + 'group_changed', + 'email_sent', + 'bounced' + ]); + + $table->string('description')->nullable(); + $table->json('metadata')->nullable(); + + $table->integer('user_id')->nullable()->comment('Admin-User der die Aktion ausgeführt hat'); + + $table->timestamps(); + + $table->index(['newsletter_contact_id', 'created_at']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('newsletter_logs'); + } +} + diff --git a/database/migrations/2025_11_12_000001_add_last_travel_end_date_to_newsletter_contacts_table.php b/database/migrations/2025_11_12_000001_add_last_travel_end_date_to_newsletter_contacts_table.php new file mode 100644 index 0000000..c9e204f --- /dev/null +++ b/database/migrations/2025_11_12_000001_add_last_travel_end_date_to_newsletter_contacts_table.php @@ -0,0 +1,32 @@ +dateTime('last_travel_end_date')->nullable()->after('last_booking_at'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('newsletter_contacts', function (Blueprint $table) { + $table->dropColumn('last_travel_end_date'); + }); + } +} diff --git a/database/migrations/2026_04_17_100001_create_offers_table.php b/database/migrations/2026_04_17_100001_create_offers_table.php new file mode 100644 index 0000000..6629ed8 --- /dev/null +++ b/database/migrations/2026_04_17_100001_create_offers_table.php @@ -0,0 +1,71 @@ +id(); + $t->string('offer_number', 32)->unique(); + + $t->foreignId('contact_id') + ->constrained('contacts') + ->restrictOnDelete(); + + $t->foreignId('inquiry_id') + ->nullable() + ->constrained('inquiries') + ->nullOnDelete(); + + $t->foreignId('booking_id') + ->nullable() + ->constrained('booking') + ->nullOnDelete(); + + $t->enum('status', [ + 'draft', + 'sent', + 'accepted', + 'declined', + 'expired', + 'withdrawn', + ])->default('draft'); + + // FK wird in 2026_04_17_100007 nachträglich gesetzt + $t->unsignedBigInteger('current_version_id')->nullable(); + + $t->foreignId('created_by')->constrained('users'); + + $t->timestamps(); + $t->softDeletes(); + + $t->index(['status', 'contact_id']); + $t->index('inquiry_id'); + }); + } + + public function down(): void + { + Schema::dropIfExists('offers'); + } +}; diff --git a/database/migrations/2026_04_17_100002_create_offer_versions_table.php b/database/migrations/2026_04_17_100002_create_offer_versions_table.php new file mode 100644 index 0000000..2cc6e30 --- /dev/null +++ b/database/migrations/2026_04_17_100002_create_offer_versions_table.php @@ -0,0 +1,81 @@ +id(); + + $t->foreignId('offer_id') + ->constrained('offers') + ->cascadeOnDelete(); + + $t->unsignedInteger('version_no'); + + $t->enum('status', [ + 'draft', + 'sent', + 'accepted', + 'declined', + 'expired', + 'superseded', + ])->default('draft'); + + $t->date('valid_until')->nullable(); + $t->decimal('total_price', 10, 2)->default(0); + + $t->string('headline')->nullable(); + $t->text('intro_text')->nullable(); + $t->longText('itinerary_text')->nullable(); + $t->text('closing_text')->nullable(); + + // offer_templates wird in Migration 4 erzeugt — FK dort, + // hier zunächst nullable + FK wird über Migration 4 nachgeholt + $t->unsignedBigInteger('template_id')->nullable(); + + $t->string('pdf_path')->nullable(); + $t->boolean('pdf_archived')->default(false); + + $t->dateTime('sent_at')->nullable(); + $t->dateTime('accepted_at')->nullable(); + + $t->enum('accepted_via', [ + 'customer_link', + 'admin', + 'email', + ])->nullable(); + + // Referenz auf zentral hinterlegte Dokument-Vorlagen, + // die mit dieser Version (als Anhang) verknüpft sind + $t->json('template_document_ids')->nullable(); + + $t->foreignId('created_by')->constrained('users'); + + $t->timestamps(); + + $t->unique(['offer_id', 'version_no']); + $t->index(['offer_id', 'status']); + }); + } + + public function down(): void + { + Schema::dropIfExists('offer_versions'); + } +}; diff --git a/database/migrations/2026_04_17_100003_create_offer_items_table.php b/database/migrations/2026_04_17_100003_create_offer_items_table.php new file mode 100644 index 0000000..c540a9b --- /dev/null +++ b/database/migrations/2026_04_17_100003_create_offer_items_table.php @@ -0,0 +1,68 @@ +id(); + + $t->foreignId('offer_version_id') + ->constrained('offer_versions') + ->cascadeOnDelete(); + + $t->unsignedInteger('position')->default(0); + + $t->enum('type', [ + 'travel', + 'service', + 'option', + 'discount', + 'insurance', + 'custom', + ]); + + $t->string('title'); + $t->text('description')->nullable(); + + $t->unsignedInteger('quantity')->default(1); + $t->decimal('price_per_unit', 10, 2)->default(0); + $t->decimal('total_price', 10, 2)->default(0); + + // Bewusst OHNE FK-Constraint — siehe Risiko R4 + $t->unsignedBigInteger('travel_program_id')->nullable(); + $t->unsignedBigInteger('fewo_lodging_id')->nullable(); + + $t->json('metadata')->nullable(); + + $t->timestamps(); + + $t->index(['offer_version_id', 'position']); + }); + } + + public function down(): void + { + Schema::dropIfExists('offer_items'); + } +}; diff --git a/database/migrations/2026_04_17_100004_create_offer_templates_table.php b/database/migrations/2026_04_17_100004_create_offer_templates_table.php new file mode 100644 index 0000000..67d4bab --- /dev/null +++ b/database/migrations/2026_04_17_100004_create_offer_templates_table.php @@ -0,0 +1,70 @@ +id(); + + // `branch` existiert schon im CRM — Vorlagen können so pro + // Filiale gepflegt werden. Eine spätere Erweiterung auf + // `organization_id` (Modul 5) erfolgt additiv. + $t->foreignId('branch_id') + ->nullable() + ->constrained('branch') + ->nullOnDelete(); + + $t->string('name'); + $t->text('description')->nullable(); + + $t->string('default_headline')->nullable(); + $t->text('default_intro')->nullable(); + $t->longText('default_itinerary')->nullable(); + $t->text('default_closing')->nullable(); + + // Array aus [{title, description, type, price_per_unit, quantity}, …] + $t->json('default_items')->nullable(); + + $t->boolean('is_active')->default(true); + $t->foreignId('created_by')->constrained('users'); + + $t->timestamps(); + $t->softDeletes(); + + $t->index(['branch_id', 'is_active']); + }); + + Schema::table('offer_versions', function (Blueprint $t) { + $t->foreign('template_id') + ->references('id') + ->on('offer_templates') + ->nullOnDelete(); + }); + } + + public function down(): void + { + Schema::table('offer_versions', function (Blueprint $t) { + $t->dropForeign(['template_id']); + }); + + Schema::dropIfExists('offer_templates'); + } +}; diff --git a/database/migrations/2026_04_17_100005_create_offer_files_table.php b/database/migrations/2026_04_17_100005_create_offer_files_table.php new file mode 100644 index 0000000..2e8442f --- /dev/null +++ b/database/migrations/2026_04_17_100005_create_offer_files_table.php @@ -0,0 +1,48 @@ +id(); + + $t->foreignId('offer_version_id') + ->constrained('offer_versions') + ->cascadeOnDelete(); + + $t->string('identifier', 64)->nullable(); + $t->string('filename'); + $t->string('dir'); + $t->string('original_name'); + $t->string('ext', 16); + $t->string('mine', 128); + $t->unsignedBigInteger('size')->default(0); + + $t->boolean('include_in_pdf')->default(true); + + $t->timestamps(); + + $t->index(['offer_version_id', 'identifier']); + }); + } + + public function down(): void + { + Schema::dropIfExists('offer_files'); + } +}; diff --git a/database/migrations/2026_04_17_100006_create_offer_access_tokens_table.php b/database/migrations/2026_04_17_100006_create_offer_access_tokens_table.php new file mode 100644 index 0000000..cd10b9c --- /dev/null +++ b/database/migrations/2026_04_17_100006_create_offer_access_tokens_table.php @@ -0,0 +1,48 @@ +id(); + + $t->foreignId('offer_id') + ->constrained('offers') + ->cascadeOnDelete(); + + $t->foreignId('offer_version_id') + ->constrained('offer_versions') + ->cascadeOnDelete(); + + $t->string('token_hash', 64)->unique(); + $t->dateTime('expires_at')->nullable(); + $t->dateTime('first_opened_at')->nullable(); + $t->dateTime('revoked_at')->nullable(); + + $t->timestamps(); + + $t->index(['offer_id', 'revoked_at']); + }); + } + + public function down(): void + { + Schema::dropIfExists('offer_access_tokens'); + } +}; diff --git a/database/migrations/2026_04_17_100007_add_offer_refs_to_offers_and_bookings.php b/database/migrations/2026_04_17_100007_add_offer_refs_to_offers_and_bookings.php new file mode 100644 index 0000000..32681ab --- /dev/null +++ b/database/migrations/2026_04_17_100007_add_offer_refs_to_offers_and_bookings.php @@ -0,0 +1,57 @@ +foreign('current_version_id') + ->references('id') + ->on('offer_versions') + ->nullOnDelete(); + }); + + Schema::table('booking', function (Blueprint $t) { + // `inquiry_id` kommt aus Modul-3 Phase 2 (war vorher `lead_id`) + $t->unsignedBigInteger('offer_id')->nullable()->after('inquiry_id'); + + $t->foreign('offer_id') + ->references('id') + ->on('offers') + ->nullOnDelete(); + + $t->index('offer_id'); + }); + } + + public function down(): void + { + Schema::table('booking', function (Blueprint $t) { + $t->dropForeign(['offer_id']); + $t->dropIndex(['offer_id']); + $t->dropColumn('offer_id'); + }); + + Schema::table('offers', function (Blueprint $t) { + $t->dropForeign(['current_version_id']); + }); + } +}; diff --git a/dev/audit-april-2025.md b/dev/audit-april-2025.md new file mode 100644 index 0000000..90044c1 --- /dev/null +++ b/dev/audit-april-2025.md @@ -0,0 +1,242 @@ +# Code-Audit – mein.sterntours.de (April 2025) + +Durchgeführt nach Framework-Update auf Laravel 10 / PHPUnit 10. + +--- + +## Status-Übersicht + +| Bereich | Status | +|---------|--------| +| PHPUnit-Konfiguration | ✅ behoben | +| UserFactory | ✅ auf Laravel 10 migriert | +| Test-Abdeckung | ✅ Grundgerüst erstellt | +| Composer-Autoload | ✅ behoben | +| User/Customer/Lead/Booking HasFactory | ✅ hinzugefügt | +| Hardcoded API-Key | ✅ behoben (→ `config('app.success_key')`) | +| Code-Duplizierung Services | ✅ `MailDirService` extrahiert | +| BookingController Request-Facade | ✅ auf Injection umgestellt | +| Util.php Carbon-Calls | ✅ behoben | +| Leere Konstruktoren | ✅ entfernt | +| Factories Customer/Lead/Booking | ✅ erstellt | +| Veraltetes Frontend-Tooling | ℹ️ bekannt – separates Vorhaben | + +--- + +## Behobene Probleme + +### 1. `phpunit.xml` — PHPUnit 10 Inkompatibilität + +**Datei:** `phpunit.xml` + +PHPUnit 10 hat mehrere Attribute aus dem XML entfernt, die vorher vorhanden waren. Das führte zu Warnings bzw. Fehlern beim Testlauf. + +**Entfernt:** +- `backupStaticAttributes` (seit PHPUnit 9.6 deprecated, in 10 entfernt) +- `convertErrorsToExceptions`, `convertNoticesToExceptions`, `convertWarningsToExceptions` (in PHPUnit 10 entfernt) +- `processIsolation`, `stopOnFailure` (in PHPUnit 10 aus XML entfernt → nur noch als CLI-Flag) + +**Geändert:** +- `` → `` (PHPUnit 10 Syntax) + +--- + +### 2. `database/factories/UserFactory.php` — Laravel 7 Syntax + +**Datei:** `database/factories/UserFactory.php` + +Die alte Factory nutzte die Laravel 7 Closure-Syntax (`$factory->define()`), die in Laravel 10 nicht mehr unterstützt wird. + +**Vorher:** +```php +$factory->define(App\User::class, function (Faker $faker) { ... }); +``` + +**Nachher:** Vollständige Laravel 10 `Factory`-Klasse mit States (`admin()`, `inactive()`). + +--- + +### 3. `composer.json` — Veraltetes Classmap-Autoloading + +**Datei:** `composer.json` + +```json +// Vorher (Laravel 7 Stil): +"classmap": ["database/seeds", "database/factories"] + +// Nachher (PSR-4): +"Database\\Factories\\": "database/factories/", +"Database\\Seeders\\": "database/seeds/" +``` + +--- + +### 4. `app/User.php` — HasFactory-Trait fehlte + ungültiger Import + +`HasFactory` wurde hinzugefügt, damit `User::factory()` in Tests funktioniert. + +Der ungültige Import `PhpOffice\PhpSpreadsheet\Calculation\Statistical\Distributions\F` (nie benutzt) wurde entfernt. + +--- + +## Offene Probleme (Handlungsbedarf) + +### ⚠️ Hardcoded API-Key (Priorität: HOCH) + +**Datei:** `app/Http/Controllers/API/BookingController.php:12` + +```php +private $successKey = 'f6077389c9ce710e554763a5de02c8ec'; +``` + +Der API-Key ist direkt im Source Code und damit im Git-Repository. Das ist ein Sicherheitsrisiko. + +**Lösung:** +```php +// .env +BOOKING_IMPORT_KEY=f6077389c9ce710e554763a5de02c8ec + +// Controller +private string $successKey; + +public function __construct() +{ + $this->successKey = config('app.booking_import_key'); +} +``` + +Dazu in `config/app.php` ergänzen: +```php +'booking_import_key' => env('BOOKING_IMPORT_KEY'), +``` + +--- + +### ⚠️ Code-Duplizierung: `Services/Booking.php` und `Services/Lead.php` + +Beide Services enthalten nahezu identische Methoden: +- `getCustomerMailDirs()` +- `getCustomerMailDir($id)` +- `getCustomerMailName($dir, $id)` +- `getCustomerMailEmails($dir, $id)` +- `setOutputDirs($dir, $subdir)` +- `getMailDirNotInOutput($id, $dir)` + +**Lösung:** Einen gemeinsamen `MailDirService` (oder Trait) extrahieren. + +--- + +### ⚠️ `BookingController` nutzt Request-Facade statt Dependency Injection + +**Datei:** `app/Http/Controllers/BookingController.php:5` + +```php +use Request; // Facade +// ... +$data = Request::all(); +``` + +**Lösung:** `Illuminate\Http\Request $request` als Parameter injizieren. + +--- + +### ⚠️ `Services/Util.php` — veraltete Carbon-Nutzung + +**Datei:** `app/Services/Util.php:54-58` + +```php +\Carbon::parse($date) // veraltet +\Util::formatDateDB() // statischer Aufruf über Facade-Alias +``` + +**Lösung:** `Carbon\Carbon::parse($date)` und `self::formatDateDB()` verwenden. + +--- + +### ℹ️ `API/BookingController` — leerer Konstruktor + +**Datei:** `app/Http/Controllers/API/BookingController.php:17-19` + +```php +public function __construct() +{ +} +``` + +Leere Konstruktoren ohne Parameter sollen laut Projekt-Konvention entfernt werden. + +--- + +### ℹ️ Frontend-Tooling — stark veraltet + +**Datei:** `package.json` + +| Package | Aktuell | Stand | +|---------|---------|-------| +| `laravel-mix` | 2.1.11 | 2018 — aktuell: 6.x | +| `cross-env` | 5.1.4 | veraltet | +| `node-sass` | ~4.7.2 | deprecated → `sass` (dart-sass) verwenden | +| `bootstrap` | ~4.1.1 | Bootstrap 5.x verfügbar | + +Ein Frontend-Update ist ein größeres Vorhaben und sollte separat geplant werden. Das Build-System funktioniert noch, ist aber auf veralteten Node-Versionen abhängig. + +--- + +### ℹ️ `BaseRepository.php` — fehlende Return-Types + +**Datei:** `app/Repositories/BaseRepository.php` + +Alle Methoden haben keine Return-Type-Deklarationen. Als technische Schuld für künftige Refactoring-Sessions notiert. + +--- + +### ℹ️ `phpunit.xml` — SQLite & zweite Datenbankverbindung + +Tests nutzen SQLite (`:memory:`), die `mysql_stern`-Verbindung ist nicht konfiguriert. Models, die `mysql_stern` nutzen (`App\Models\Sym\*`, `App\Models\TravelBooking`), können in Tests nicht ohne Mock/Skip getestet werden. + +**Empfehlung:** Für Tests eine zweite SQLite-Verbindung in `phpunit.xml` konfigurieren: +```xml + + +``` + +--- + +## Neue Test-Dateien + +| Datei | Typ | Was wird getestet | +|-------|-----|-------------------| +| `tests/Unit/Services/UtilTest.php` | Unit | `Util`-Service: Formatierung, Sanitizing, Placeholder-Ersetzung | +| `tests/Feature/Auth/LoginTest.php` | Feature | Login, Logout, Redirect für Gäste/inaktive User | +| `tests/Feature/Api/BookingImportTest.php` | Feature | API-Key-Validierung, 404-Handling | +| `tests/Feature/BookingControllerTest.php` | Feature | Middleware (Guest-Redirect, Admin-Check) | + +### Tests ausführen + +```bash +# Alle Tests +php artisan test --compact + +# Nur Unit-Tests +php artisan test --compact tests/Unit + +# Nur die neuen Feature-Tests +php artisan test --compact tests/Feature/Auth/LoginTest.php +php artisan test --compact tests/Feature/Api/BookingImportTest.php +php artisan test --compact tests/Feature/BookingControllerTest.php + +# Einzelner Test per Filter +php artisan test --compact --filter=testLoginFailsWithWrongPassword +``` + +--- + +## Nächste Schritte (Empfehlung) + +1. **API-Key** aus Code entfernen → `.env`-Variable (HOCH) +2. `MailDirService` extrahieren (Booking + Lead Services zusammenführen) +3. `BookingController` auf Request-Injection umstellen +4. `Util.php` Carbon-Calls bereinigen +5. Leere Konstruktoren entfernen +6. Weitere Factories erstellen (`Customer`, `Booking`, `Lead`) für tiefere Test-Abdeckung +7. Frontend-Tooling-Update planen (laravel-mix → Vite oder mix v6) diff --git a/dev/briefings.md b/dev/briefings.md new file mode 100644 index 0000000..43729fb --- /dev/null +++ b/dev/briefings.md @@ -0,0 +1,61 @@ +Anfrage direkt vom Kunden + +"Zudem habe ich ein wichtiges Anliegen. Wir möchten aus unserem System unbedingt einfach, schnell und qualitativ hochwertig Angebote erstellen können, die wir ja individuell ausarbeiten. Es ist also fast jedes der Angebote anders. + +Derzeit bestehen unsere Angebote aus Texten in einer einfachen Email. Das finde ich unprofessionell, denn die Kunden haben damit nichts, was sie sich schön ausdrucken können, was übersichtlich wie ein vernünftiges Angebot aussieht. Wenn es dabei auch noch um sehr teure Reisen geht, passt das einfach nicht und zeugt nicht von Seriosität. + +Daher möchte ich fragen, ob wir daran arbeiten können? + +Theoretisch kann ein solches Angebot aussehen wie unser Buchungsauftrag, nur dass "Angebot" darüber steht (oder Persönliches Angebot für Frau XXX). Wichtig ist uns , dass es einfach zu erstellen ist und man ggf. bei einer sehr hochwertigen Reise auch weiterführenden Text zum Reiseverlauf für die Reisebeschreibung hinzufügen kann. Das kann aber ggf. auch auf einem separaten Briefbogen erfolgen, den wir dann hochladen. + +Aktuell gehen wir so vor: Kunde ruft an, wir füllen unser Kontaktformular mit seinen Anfragedaten aus, sodass ein Kundendatensatz und eine Anfrage im System entsteht. Dann schreiben wir Emails hin und her, bis er sich für eine Buchung entscheidet und dann füllen wir das Buchungsformular aus. Daraus entsteht dann ein zweites mal der Kundendatensatz und der Buchungssatz. + +An der Stelle, an der wie die Anfrage erstellen, möchten wir im System bereits die Möglichkeit haben, das Angebot zu erstellen. Vielleicht kann man hier aus einer der Vorlagen eine Organisation laden, dieses dann an die individuelle Anfrage anpassen und daraus dann das Angebot als Pdf erstellen. Anschließend wäre es gut, wenn hieraus direkt eine Buchung generiert werden könnte, denn dann haben wir ja schon alle Leistungen im System eingetragen." + + + +Weitere wichtige Punkte, die in den Entwicklungsplan gehören: + +Das System muss grundsätzlich an vielen Stellen modernisiert werden und optimiert werden, auch was Darstellung und Benutzer Bedienung angeht. + +https://mein.sterntours.test/requests +Ein wichtiger Punkt sind die Buchungen hier muss noch deutlich optimiert werden. + +Derzeit kommen alle Buchungen über die Webseite Siehe /sterntours.de/src/AppBundle/Controller /sterntours.de/src/AppBundle/Export +Es muss auch möglich sein, direkt im System Buchungen anzulegen. Hintergrund ist wenn derzeit eine Anfrage per Telefon kommt, gehen die Mitarbeiter tatsächlich auf die Webseite und lösen eine Bestellung aus, Das muss auch einfach im System funktionieren + +Unter dem Punkt Buchungen muss Der Reiter organisation verbessert werden Es muss von der Benutzerführung einfacher und übersichtlicher werden, eine Organisation einer Reise anzulegen und zu verwalten. + +Unter dem Punkt Buchungen gibt es E-Mails wird eine E-Mail geschrieben. Soll diese sofort per AutoSave als Entwurf gespeichert werden. + +Zusätzlich gilt das, was hier noch aufgeschlüsselt ist mein.sterntours.de/dev/customer-bookings/* + +Unter dem Punkt Fewos +https://mein.sterntours.test/travel_user_booking_fewos + +Auch hier müssen die E-Mails, die den selben Prinzip die Buchung verfolgen auch ein Auto Safe bekommen. +Da die E-Mails im System grundsätzlich eine einheitliche Programmierung haben, wäre es sinnvoll, diese Skripte zu migrieren. + +Bei den Buchungen der Ferienwohnungen tauchen immer wieder Fehler auf bei der Belegung das liegt daran, wenn die Daten geändert werden. Diese werden nicht synchron überschrieben, so dass Doppelbuchungen teilweise im System vorliegen. Ich glaube nur in der Datenbank das muss natürlich bereinigt werden. + +Zusätzlich gibt es ein weiteres Backend sterntours.de/src/AppBundle/Controller/AdminController.php Dieses muss auch sauber in das Hauptbackend mein.sterntours.de (v3) Übernommen werden, damit wir das alte abstellen können. Damit wird sich dann vermutlich auch der Fehler erledigen. Grundsätzlich darf gerne die Datenstruktur migriert werden und optimiert werden. + +Hier gibt es schon mal einen Ansatz für die Darstellung des Navigations,dieser ist aber noch nicht gut +https://mein.sterntours.test/navigation-api + +Im System gerade in Fronten sterntours.de/src/AppBundle/Listener/KernelControllerListener.php Ist die Struktur der Navigation und der des Seitenbaums sehr eigenwillig und muss verbessert und optimiert werden mein.sterntours.de/app/Models/Page.php Alles liegt in dieser Page Tabelle und ist sehr schlecht. War bei undurchschaubar hier muss ein deutlich Cleaneres konzept her. So dass auch hier https://mein.sterntours.test/navigation-api Übersichtlich ein Navigations Baum erstellt werden kann, der deutlich klarer zeigt, was auf dem Fronten zu sehen ist und wo ich welche Elemente ändern kann. + +Teilweise gibt es schon CMS Ansätze, die die Fronten Zeiten bearbeitBar machen. Dieses ist hier in Kategorien geteilt. +https://mein.sterntours.test/cms/feedback +https://mein.sterntours.test/cms/fewo/content +https://mein.sterntours.test/cms/travel_guide/content +https://mein.sterntours.test/iq/content/tree/index +https://mein.sterntours.test/cms/news +https://mein.sterntours.test/cms/answer_question +https://mein.sterntours.test/cms/sidebar +https://mein.sterntours.test/cms/content/infos +https://mein.sterntours.test/cms/content/all + +Grundsätzlich muss das alles mehr vereinheitlicht werden und deutlicher werden, was, wo geändert werden kann. Die Einzelmodule können so bleiben. Es muss nur klarer in der Benutzerführung werden und auch aus der Hauptnavigation erreichbar sein und deutlich sein, wo was hingehört. + +Jetzt kommt noch ein sehr großer Punkt und zwar gibt es noch ein Verwaltung v2.stern-tours.de/application/controllers/acp Hier werden Reisen angelegt und auch die Reisezeiträume verwaltet. Dieses ist mittlerweile absolut veraltet und auch Fehler anfällig. Ein großes neues Modul wird es sein dieses auf die bestehende mein.sterntours.de (v3) Zu migrieren d.h. der komplette Funktionsumfang muss in das Back and ein entwickelt werden und benutzerfreundliche gemacht werden sowie müssen die gesamten Skripte etc. deutlich optimiert werden. diff --git a/dev/customer-bookings/konzept.md b/dev/customer-bookings/konzept.md new file mode 100644 index 0000000..cb48916 --- /dev/null +++ b/dev/customer-bookings/konzept.md @@ -0,0 +1,441 @@ +# Konzept: Neustrukturierung Customer / Lead / Booking + +**Status:** Entwurf +**Erstellt:** April 2025 +**Ziel:** Beseitigung der Daten-Redundanz und Vereinfachung der Kernstruktur + +--- + +## 1. Ist-Zustand — Analyse der Probleme + +### 1.1 Aktuelle Datenfluss-Kette + +``` +Anfrage (Lead) + └── customer_id → Customer (neu angelegt pro Lead!) + └── LeadMail + └── LeadFile + └── LeadNotice + └── LeadParticipant + | + | createBooking() + ↓ +Buchung (Booking) + └── customer_id → Customer (derselbe, aber Daten werden separat gepflegt) + └── lead_id → Lead (Rückreferenz) + └── CustomerMail + └── BookingFile + └── BookingNotice + └── Participant (Kopie von LeadParticipant!) +``` + +### 1.2 Konkrete Probleme + +| Problem | Auswirkung | +|---------|-----------| +| **Kunde wird pro Anfrage neu angelegt** | Bucht ein Kunde zweimal: 2 Customer-Datensätze, keine Kundenhistorie | +| **Teilnehmer doppelt gespeichert** | `participant_name/firstname/birthdate` in `lead`, `booking` UND `lead_participant` + `participant` | +| **Mail-Tabellen aufgesplittet** | `lead_mail` für Anfragen, `customer_mail` für Buchungen — gleiche Struktur, getrennte Tabellen | +| **Notizen aufgesplittet** | `lead_notice` und `booking_notice` — identisch, getrennt | +| **Datei-Tabellen aufgesplittet** | `lead_file`, `booking_file`, `customer_fewo_file` — gleiche Funktion | +| **Kein übergreifendes Kunden-Profil** | Alle Buchungen/Anfragen eines Kunden nur per ID-Lookup findbar, aber nie wirklich verknüpft | +| **`createBooking()` kopiert Daten** | `LeadRepository::createBooking()` kopiert Participants 1:1 — spätere Änderungen laufen auseinander | + +--- + +## 2. Soll-Zustand — Zielbild + +### 2.1 Kernprinzip + +``` +Contact (Stammkunde — einmal, für immer) + └── hasMany: Inquiry (früher: Lead) + └── hasMany: Booking + +Inquiry (Anfrage) + └── belongsTo: Contact + └── hasMany: Booking (eine Anfrage kann zu einer Buchung werden) + └── hasMany: Communication (Mails, Notizen, Dateien) + +Booking (Buchung) + └── belongsTo: Contact + └── belongsTo: Inquiry + └── hasMany: Communication + └── hasMany: Participant +``` + +### 2.2 Neue Tabellen-Struktur + +#### `contacts` (ersetzt `customer`) +Identisch zur `customer`-Tabelle — nur umbenannt und mit Deduplizierungslogik ausgestattet. + +```sql +CREATE TABLE contacts ( + -- alle bisherigen Felder aus customer + id, salutation_id, title, name, firstname, birthdate, + company, street, zip, city, email, phone, phonebusiness, + phonemobile, fax, bank, bank_code, bank_account_number, + credit_card_type_id, credit_card_number, + credit_card_expiration_date, participants_remarks, + miscellaneous_remarks, country_id, + -- neu: + merged_into_id INT NULL, -- zeigt auf Haupt-Datensatz bei Duplikaten + created_at, updated_at, deleted_at +); +``` + +#### `inquiries` (umbenennung von `lead`) +Weitgehend identisch, `customer_id` → `contact_id`. + +```sql +-- Änderungen gegenüber lead: +ALTER TABLE inquiries + RENAME COLUMN customer_id TO contact_id; +-- Teilnehmerfelder bleiben vorerst (Abwärtskompatibilität Phase 1) +-- Entfernung in Phase 3 +``` + +#### `bookings` (geringfügige Anpassung) +`customer_id` → `contact_id`, `lead_id` → `inquiry_id`. + +```sql +-- inquiry_id bleibt nullable: +-- Direktbuchungen (ohne vorherige Anfrage) sollen möglich sein → inquiry_id = NULL +-- Teilnehmerfelder (participant_name etc.) fallen in Phase 3 weg +-- → wandern komplett in die participants-Tabelle +``` + +#### `participants` (konsolidiert `lead_participant` + `participant`) + +```sql +CREATE TABLE participants ( + id, + contact_id INT NULL, -- direkte Zuordnung zum Stammkunden (optional) + inquiry_id INT NULL, -- FK auf inquiries (früher lead_participant) + booking_id INT NULL, -- FK auf bookings (früher participant) + salutation_id INT NULL, + name VARCHAR, + firstname VARCHAR, + birthdate DATE NULL, + participant_child BOOL DEFAULT FALSE, + nationality_id INT NULL, + is_lead_contact BOOL DEFAULT FALSE, -- markiert den Hauptreisenden + created_at, updated_at +); +``` + +#### `communications` (konsolidiert `lead_mail` + `customer_mail`) + +```sql +CREATE TABLE communications ( + id, + contact_id INT NULL, + inquiry_id INT NULL, + booking_id INT NULL, + -- alle bisherigen Felder aus lead_mail/customer_mail: + from_email, to_email, from_name, to_name, + subject, body, sent_at, + dir, subdir, + -- Typ-Unterscheidung: + context ENUM('inquiry', 'booking') NOT NULL, + created_at, updated_at +); +``` + +#### `notices` (konsolidiert `lead_notice` + `booking_notice`) + +```sql +CREATE TABLE notices ( + id, + inquiry_id INT NULL, + booking_id INT NULL, + from_user_id INT NOT NULL, + to_user_id INT NULL, + message TEXT, + edit_at DATETIME NULL, + created_at, updated_at +); +``` + +#### `attachments` (konsolidiert `lead_file` + `booking_file` + `customer_fewo_file`) + +```sql +CREATE TABLE attachments ( + id, + contact_id INT NULL, + inquiry_id INT NULL, + booking_id INT NULL, + disk, path, filename, mime_type, filesize, + identifier VARCHAR NULL, + created_at, updated_at +); +``` + +--- + +## 3. Migrationsstrategie — Phasen + +Die Migration ist bewusst **rückwärtskompatibel** geplant: jede Phase kann unabhängig deployed werden, das System bleibt zu jeder Zeit funktionsfähig. + +--- + +### Phase 1 — Contact-Deduplizierung (Kern-Problem lösen) + +**Ziel:** Mehrfach-Kunden zusammenführen. Kein Datenverlust. + +#### 1a) Duplikate identifizieren + +```php +// artisan-Befehl: php artisan contacts:find-duplicates +// Gruppierungsstrategie (absteigend nach Konfidenz): +// 1. Gleiche E-Mail-Adresse → sicher identisch +// 2. Gleicher Name + Vorname + Geburtsdatum → sehr wahrscheinlich identisch +// 3. Gleicher Name + Vorname + PLZ → wahrscheinlich identisch (manuell prüfen) +``` + +Ausgabe: CSV-Liste mit Gruppen und vorgeschlagenem Haupt-Datensatz. + +#### 1b) `merged_into_id` Spalte hinzufügen + +```sql +ALTER TABLE customer ADD COLUMN merged_into_id INT NULL; +ALTER TABLE customer ADD COLUMN merged_at DATETIME NULL; +``` + +#### 1c) Migration ausführen + +```php +// artisan-Befehl: php artisan contacts:merge-duplicates --dry-run +// Dann: php artisan contacts:merge-duplicates --confirm +// +// Für jeden gefundenen Duplikat-Cluster: +// 1. Neuesten Datensatz (höchste ID / neuestes updated_at) als Master wählen +// → Entscheidung: immer die neueste Adresse gewinnt +// 2. Alle leads: customer_id → master_id +// 3. Alle bookings: customer_id → master_id +// 4. Duplikat: merged_into_id = master_id setzen +``` + +#### 1d) Customer-Model: Abfragen abfangen + +```php +// app/Models/Customer.php — GlobalScope hinzufügen +protected static function booted(): void +{ + static::addGlobalScope('not_merged', function ($query) { + $query->whereNull('merged_into_id'); + }); +} +``` + +**Aufwand:** ~2 Tage +**Risiko:** Gering — nur Lese-/Schreib-Operationen, keine Struktur-Änderung + +--- + +### Phase 2 — Tabellen umbenennen (Customer → Contact, Lead → Inquiry) + +**Ziel:** Sprechende Namen einführen, interne Logik bereinigen. + +```sql +-- Migration: +RENAME TABLE customer TO contacts; +RENAME TABLE lead TO inquiries; + +-- Booking: +ALTER TABLE bookings RENAME COLUMN lead_id TO inquiry_id; +-- customer_id bleibt vorerst, wird in Phase 2b auf contact_id umgestellt +``` + +**Code-Änderungen:** +- `App\Models\Customer` → bleibt, aber `protected $table = 'contacts'` +- `App\Models\Lead` → bleibt, aber `protected $table = 'inquiries'` +- Alle Referenzen auf `lead_id` in Booking → `inquiry_id` +- Controller-Routen: `/lead/` → `/inquiry/` (alte URLs: Redirect 301) + +**Aufwand:** ~3 Tage +**Risiko:** Mittel — viele Stellen im Code müssen angepasst werden. Sorgfältige Suche mit `grep -r "lead_id\|customer_id\|'lead'\|'customer'"`. + +--- + +### Phase 3 — Participants konsolidieren + +**Ziel:** `lead_participant` und `participant` zu einer Tabelle zusammenführen. Teilnehmerfelder in `lead` und `booking` entfernen. + +```sql +CREATE TABLE participants ( + -- wie in 2.2 beschrieben +); + +-- Daten migrieren: +INSERT INTO participants (inquiry_id, name, firstname, birthdate, ...) + SELECT lead_id, participant_name, participant_firstname, participant_birthdate, ... + FROM lead_participant; + +INSERT INTO participants (booking_id, name, firstname, birthdate, ...) + SELECT booking_id, participant_name, participant_firstname, participant_birthdate, ... + FROM participant; + +-- Hauptreisenden aus den denormalisierten Feldern migrieren: +-- (lead.participant_name → participant mit is_lead_contact = true) +INSERT INTO participants (inquiry_id, name, firstname, birthdate, is_lead_contact, ...) + SELECT id, participant_name, participant_firstname, participant_birthdate, true, ... + FROM lead + WHERE participant_name IS NOT NULL; +``` + +**Code-Änderungen:** +- `LeadRepository::createBooking()` — kein Kopieren von Participants mehr nötig; bestehende `inquiry_id`-Participants werden automatisch per `booking_id` ergänzt +- `lead_participant`, `participant` Tabellen nach Abgleich droppen +- Denormalisierte Felder (`participant_name` etc.) in `lead` und `booking` mit `NULL` befüllen, dann in Phase 4 entfernen + +**Aufwand:** ~4 Tage +**Risiko:** Mittel — betrifft PDF-Generierung, Buchungsbestätigungen; diese müssen angepasst werden + +--- + +### Phase 4 — Communications / Notices / Attachments konsolidieren + +**Ziel:** Die 6+ Mail/Notiz/Datei-Tabellen auf 3 gemeinsame Tabellen reduzieren. + +```sql +-- Mails migrieren: +INSERT INTO communications (inquiry_id, context, from_email, ...) + SELECT lead_id, 'inquiry', from_email, ... FROM lead_mail; + +INSERT INTO communications (booking_id, context, from_email, ...) + SELECT booking_id, 'booking', from_email, ... FROM customer_mail; + +-- Notizen migrieren: +INSERT INTO notices (inquiry_id, from_user_id, message, ...) + SELECT lead_id, from_user_id, message, ... FROM lead_notice; + +INSERT INTO notices (booking_id, from_user_id, message, ...) + SELECT booking_id, from_user_id, message, ... FROM booking_notice; + +-- Dateien migrieren: +INSERT INTO attachments (inquiry_id, disk, path, ...) + SELECT lead_id, disk, path, ... FROM lead_file; + +INSERT INTO attachments (booking_id, disk, path, ...) + SELECT booking_id, disk, path, ... FROM booking_file; +``` + +**Code-Änderungen:** +- `LeadMailRepository`, `CustomerMailRepository` → gemeinsames `CommunicationRepository` +- `LeadFileRepository`, `BookingFileRepository` → gemeinsames `AttachmentRepository` +- `MailDirService` (bereits vorhanden) erhält einheitlichen Datenzugriff +- Views für Mails/Notizen/Dateien in Lead und Booking können shared werden + +**Aufwand:** ~5 Tage +**Risiko:** Hoch — betrifft viele Views und Controller. Muss sehr sorgfältig getestet werden. + +--- + +## 4. Neues Beziehungsmodell (Zielbild) + +``` +Contact (1) + ├── (N) Inquiry + │ ├── (N) Participant [inquiry_id] + │ ├── (N) Communication [inquiry_id] + │ ├── (N) Notice [inquiry_id] + │ ├── (N) Attachment [inquiry_id] + │ └── (1) Booking + │ ├── (N) Participant [booking_id] + │ ├── (N) Communication [booking_id] + │ ├── (N) Notice [booking_id] + │ ├── (N) Attachment [booking_id] + │ └── (N) BookingDocument, BookingInvoice, ... + └── (N) Booking (direkt, ohne Umweg über Inquiry) +``` + +--- + +## 5. Controller-Vereinfachung + +Nach den Migrationen können Controller und Views schrittweise zusammengelegt werden: + +| Jetzt | Ziel | +|-------|------| +| `LeadController` | `InquiryController` | +| `CustomerController` | `ContactController` | +| `BookingController` | bleibt, aber schlanker | +| `LeadMailController` + `CustomerMailController` | `CommunicationController` | +| `CustomerFewoMailController` | → `CommunicationController` (mit Fewo-Kontext) | + +Die Detail-Seiten für Lead und Booking sind strukturell fast identisch. Langfristig könnte es eine gemeinsame Basis-View geben, die je nach Kontext unterschiedliche Sektionen einblendet. + +--- + +## 6. Empfohlene Reihenfolge + +``` +Phase 1 (Contact-Deduplizierung) + → Unmittelbarer Gewinn: Kundenhistorie ist korrekt + → Unabhängig von allen anderen Phasen + → Sofort umsetzbar + +Phase 2 (Umbenennung) + → Voraussetzung für Phase 3 & 4 + → Kann parallel zur normalen Entwicklung erfolgen + +Phase 3 (Participants) + → Abhängig von Phase 2 + → Direkte Auswirkung auf PDF-Generierung — sorgfältig testen + +Phase 4 (Communications/Notices/Attachments) + → Größtes Vorhaben, letzter Schritt + → Kann in Teilschritte aufgesplittet werden + (erst Notices, dann Attachments, dann Communications) +``` + +--- + +## 7. Was NICHT geändert werden soll + +- **Buchungs-Detailseite** (`booking.detail`): Bleibt strukturell erhalten — zu komplex für gleichzeitige Überarbeitung +- **PDF-Generierung**: Erst nach Phase 3 anpassen (Participants-Konsolidierung) +- **Fewo-Buchungsstruktur** (`FewoLodging`, `TravelUserBookingFewo`): Separates Thema, nicht Teil dieses Konzepts +- **Legacy-Datenbank** (`mysql_stern`): Keine Änderungen — bleibt read-only + +--- + +## 8. Entscheidungen (geklärt) + +| # | Frage | Entscheidung | +|---|-------|-------------| +| 1 | Welcher Datensatz wird Master bei Duplikaten mit verschiedenen Adressen? | **Immer der neueste** (höchste ID / jüngstes `updated_at`) — vollautomatisch, kein manueller Review | +| 2 | Direktbuchung ohne vorherige Anfrage? | **Ja** — `inquiry_id` in `bookings` bleibt `NULL`able; Direktbuchungen sind vorgesehen | +| 3 | Was bedeutet `is_rebook`? | **Umbuchung** (nicht Wiederbuchung). Checkbox „Umbuchung abgeschlossen" auf der Anfrage. Feld bleibt auf `inquiries`, keine Sonderbehandlung nötig | +| 4 | DSGVO — Einwilligungen pro Datensatz? | **Kein Problem.** Einwilligung war immer Pflichtfeld beim Formular-Submit. Jede Anfrage enthält implizit eine gültige Einwilligung — keine separate Migrationsprüfung nötig | + +### Auswirkungen auf die Migration + +**Zu 1 — Automatische Master-Wahl:** +```php +// In contacts:merge-duplicates: +// Master = Customer::where('email', $email)->orderByDesc('updated_at')->first() +// Kein manuelles Eingreifen erforderlich +``` + +**Zu 2 — Direktbuchung:** +```sql +-- bookings.inquiry_id bleibt NULL erlaubt (bereits so geplant) +-- Neuer Einstiegspunkt im UI: "Buchung direkt anlegen" ohne Lead-Voraussetzung +-- BookingController::store() darf inquiry_id weglassen +``` + +**Zu 3 — is_rebook bleibt auf Inquiry:** +```php +// Bedeutung: diese Anfrage ist eine Umbuchung einer bestehenden Buchung +// is_rebook: bool — Checkbox "Umbuchung abgeschlossen" +// Keine Änderung an der Logik, nur Umbenennung mit Phase 2 +``` + +**Zu 4 — DSGVO:** +``` +Keine zusätzlichen Schritte nötig. +Beim Mergen zweier Kontakte gilt: beide haben gültige Einwilligungen erteilt. +Der zusammengeführte Master-Datensatz ist datenschutzrechtlich unbedenklich. +``` diff --git a/dev/customer-bookings/umsetzung.md b/dev/customer-bookings/umsetzung.md new file mode 100644 index 0000000..eccfa6d --- /dev/null +++ b/dev/customer-bookings/umsetzung.md @@ -0,0 +1,464 @@ +# Umsetzung: Neustrukturierung Customer / Lead / Booking + +**Status:** Phase 1 auf Testsystem abgeschlossen — Contacts-Modul live; **Phase-2-App-Code vorbereitet (deploy-bereit)** +**Erstellt:** April 2025 +**Konzept:** [konzept.md](konzept.md) + +--- + +## Aktueller Fortschritt + +| Phase | Status | Deployed auf Test? | Deployed auf Live? | +|-------|--------|-------------------|-------------------| +| Phase 1 — Contact-Deduplizierung | ✅ Abgeschlossen | ✅ Ja | ⬜ Nein | +| Phase 1 — Contacts-Modul (neuer Code) | ✅ Abgeschlossen | ✅ Ja | ⬜ Nein | +| Phase 2 — App-Code (Models/Repos/Controller/Views auf `contacts`/`inquiries`/`inquiry_id`) | ✅ Abgeschlossen | ⬜ Nein | ⬜ Nein | +| Phase 2 — Tabellen-Migrationen (3 Migrationsdateien) | ⬜ Ausstehend (Code ist deploy-ready) | ⬜ Nein | ⬜ Nein | +| Phase 3 — Participants konsolidieren | ⬜ Ausstehend | ⬜ Nein | ⬜ Nein | +| Phase 4 — Communications / Notices / Attachments | ⬜ Ausstehend | ⬜ Nein | ⬜ Nein | + +### Was in Phase 1 umgesetzt wurde + +**Datenbank-Migrationen (alle auf Testsystem eingespielt):** +- `merged_into_id` + `merged_at` auf `customer`-Tabelle → Duplikat-Tracking +- `deleted_at` auf `customer`-Tabelle → Soft Delete für neue Contacts-UI + +**Artisan Commands:** +- `contacts:find-duplicates` — findet Duplikate nach E-Mail / Name+Geburtsdatum / Name+PLZ +- `contacts:merge-duplicates` — führt Duplikate zusammen (dry-run-Modus vorhanden) + +**Contacts-Modul (neuer paralleler Code, alter Code bleibt unberührt):** +- `app/Models/Contact.php` — Global Scope schließt Duplikate + gelöschte Kontakte aus +- `app/Repositories/ContactRepository.php` +- `app/Http/Controllers/ContactController.php` — index, detail, store, destroy, getContacts +- `resources/views/contact/` — index, detail, partials +- Neue Routes unter `/contacts` und `/contact/*` +- Neuer Navigationspunkt "Kontakte" im Sidenav + +**Contacts-Übersicht — Features:** +- DataTable mit Schnellsuche (Name, Vorname, E-Mail, Telefon gleichzeitig) +- PLZ/Ort-Suche mit OR-Logik über beide Felder +- Schnellfilter: Alle / Mit Anfragen / Mit Buchungen +- Anfragen- und Buchungs-Zähler pro Kontakt als klickbare Badges +- History-Modal: Klick auf Anfragen- oder Buchungs-Badge öffnet Modal mit vollständiger Verlaufsübersicht (AJAX, `_detail_history.blade.php` mit `$modal=true`, Links öffnen in neuem Tab) +- Löschen mit Bootstrap-Bestätigungs-Modal + Fehler-Toast (blockiert wenn Anfragen/Buchungen vorhanden) + +--- + +## Übersicht der Migrations-Dateien + +Alle Migrations-Dateien liegen in `database/migrations/` und können gezielt auf den Live-Server eingespielt werden. Jede Phase ist **unabhängig deploybar** — das System bleibt nach jeder Phase voll funktionsfähig. + +| Datei | Phase | Beschreibung | +|-------|-------|-------------| +| `2025_04_15_100001_phase1_add_merge_fields_to_customer_table.php` | 1 | `merged_into_id` + `merged_at` zu `customer` hinzufügen | +| `2025_04_15_100002_phase1_add_soft_delete_to_customer_table.php` | 1 | `deleted_at` (Soft Delete) zu `customer` hinzufügen | +| `2025_04_15_200001_phase2_rename_customer_to_contacts.php` | 2 | `customer` → `contacts` umbenennen | +| `2025_04_15_200002_phase2_rename_lead_to_inquiries.php` | 2 | `lead` → `inquiries` umbenennen | +| `2025_04_15_200003_phase2_rename_booking_lead_id_to_inquiry_id.php` | 2 | `booking.lead_id` → `booking.inquiry_id` | +| `2025_04_15_300001_phase3_create_participants_unified_table.php` | 3 | `participants_unified` erstellen + Daten migrieren | +| `2025_04_15_300002_phase3_drop_old_participant_tables.php` | 3 | `lead_participant` + `participant` droppen (**nach Test!**) | +| `2025_04_15_400001_phase4_create_communications_table.php` | 4 | `communications` erstellen + Daten migrieren | +| `2025_04_15_400002_phase4_create_notices_table.php` | 4 | `notices` erstellen + Daten migrieren | +| `2025_04_15_400003_phase4_create_attachments_table.php` | 4 | `attachments` erstellen + Daten migrieren | +| `2025_04_15_400004_phase4_drop_old_communication_tables.php` | 4 | `lead_mails` + `customer_mails` droppen (**nach Test!**) | +| `2025_04_15_400005_phase4_drop_old_notice_tables.php` | 4 | `lead_notices` + `booking_notices` droppen (**nach Test!**) | +| `2025_04_15_400006_phase4_drop_old_attachment_tables.php` | 4 | `lead_files` + `booking_files` droppen (**nach Test!**) | + +--- + +## Voraussetzungen + +```bash +# Auf dem Live-Server ausführen: +# 1. Datenbank-Backup erstellen (vor JEDER Phase!) +mysqldump -u root -ppassword stern_crm > backup_$(date +%Y%m%d_%H%M%S).sql + +# 2. Migration-Status prüfen +php artisan migrate:status +``` + +--- + +## Phase 1 — Contact-Deduplizierung + +### Schritt 1: Migration einspielen +```bash +php artisan migrate --path=database/migrations/2025_04_15_100001_phase1_add_merge_fields_to_customer_table.php +php artisan migrate --path=database/migrations/2025_04_15_100002_phase1_add_soft_delete_to_customer_table.php +``` + +### Schritt 2: Duplikate analysieren (dry-run) +```bash +php artisan contacts:find-duplicates +# Optional: CSV exportieren +php artisan contacts:find-duplicates --export=storage/app/duplicates.csv +# Nur bestimmte Konfidenz-Stufe +php artisan contacts:find-duplicates --confidence=HIGH +``` + +### Schritt 3: Duplikate zusammenführen +```bash +# Erst Vorschau ohne Änderungen +php artisan contacts:merge-duplicates --dry-run + +# Dann ausführen (HIGH-Konfidenz zuerst, sicherste Duplikate) +php artisan contacts:merge-duplicates --confidence=HIGH --force +php artisan contacts:merge-duplicates --confidence=MEDIUM --force + +# LOW nur nach manueller Prüfung der CSV +php artisan contacts:merge-duplicates --confidence=LOW --force +``` + +### Ergebnis-Prüfung +```sql +-- Wie viele Duplikate wurden zusammengeführt? +SELECT COUNT(*) FROM customer WHERE merged_into_id IS NOT NULL; + +-- Gibt es noch aktive Duplikate (gleiche E-Mail)? +SELECT email, COUNT(*) FROM customer +WHERE merged_into_id IS NULL AND email IS NOT NULL AND email != '' +GROUP BY email HAVING COUNT(*) > 1; +``` + +### Rollback Phase 1 +```bash +php artisan migrate:rollback --path=database/migrations/2025_04_15_100001_phase1_add_merge_fields_to_customer_table.php +``` + +--- + +## Phase 2 — Tabellen umbenennen + +> **Wichtig:** Vor Phase 2 muss der App-Code bereits auf die neuen Tabellennamen vorbereitet sein, +> ODER die Migration wird deployed bevor der Code-Release erfolgt (mit sofortigem Rollback-Plan). +> +> **Der App-Code ist vorbereitet** (siehe Abschnitt "Erledigte Code-Änderungen"). Empfehlung +> für den Live-Deploy: **Maintenance-Mode-Window** — Code-Release und Migrationen atomar +> in einem Wartungsfenster einspielen, damit Code und DB immer synchron sind. + +### Erledigte Code-Änderungen (App-Code ist Phase-2-ready) + +**Models (`app/Models/`):** +- `Customer.php`: `protected $table = 'contacts';` (mit Doku-Kommentar zu Modul 3 Phase 2) +- `Lead.php`: `protected $table = 'inquiries';` (mit Doku-Kommentar — Model-Name bleibt aus Kompatibilitätsgründen) +- `Contact.php`: `protected $table = 'contacts';` (ohne Fallback-Kommentar zu "pre-Phase-2") +- `Booking.php`: + - `@property int $inquiry_id` (ersetzt `$lead_id`) + - `$casts['inquiry_id']` + `$fillable` enthalten `'inquiry_id'` statt `'lead_id'` + - `lead()`-Relation: `return $this->belongsTo(Lead::class, 'inquiry_id');` — Methodenname bleibt für Legacy-Kompatibilität + - Zusätzlich `inquiry()`-Alias-Relation für semantische Klarheit im neuen Code + +**Repositories (`app/Repositories/`):** +- `BookingPDFRepository.php`: alle 9 Vorkommen von `$this->model->lead_id` → `$this->model->inquiry_id`. In `booking_documents.lead_id` (Shadow-Feld, Spaltenname bleibt) wird jetzt `$this->model->inquiry_id` geschrieben. +- `LeadRepository::createBooking()`: Booking-Create nutzt `'inquiry_id' => $this->model->id`. +- `CustomerMailRepository`: `customer_mails.lead_id`-Spalte bleibt erhalten, Wert kommt aus `$booking->inquiry_id`. Alle 6 Vorkommen angepasst. + +**Controllers + Services + Commands:** +- `RequestController.php`: alle Booking-Queries `where('lead_id', ...)` → `where('inquiry_id', ...)`; Datatables-SQL-Sort auf `inquiry_id`. +- `API/BookingController.php`: API-Feldname `lead_id` bleibt (Abwärtskompatibilität), Wert aus `$booking->inquiry_id`. +- `Admin/ReportController.php` + `Admin/ReportProviderController.php`: alle 16 Vorkommen von `$v->booking->lead_id` / `$export->booking->lead_id` → `...->inquiry_id`. +- `Admin/ReportLeadsController.php` + `LeadController.php`: qualifizierte Subquery `whereColumn('lead_id', 'lead.id')` → `whereColumn('lead_id', 'inquiries.id')`. +- `ContactController.php`: `select('customer.*')` → `select('contacts.*')`, `where('customer.id', ...)` → `where('contacts.id', ...)`, `DB::table('customer')` / `DB::table('lead')` → `DB::table('contacts')` / `DB::table('inquiries')`. +- `CustomerController.php`: `select('customer.*')` → `select('contacts.*')`. +- `Services/BookingImport.php`: Booking-Create-Array nutzt `'inquiry_id'`. +- `Console/Commands/ContactsMergeDuplicates.php` + `ContactsFindDuplicates.php`: alle `DB::table('customer')` / `DB::table('lead')` umgestellt. +- `Console/Commands/SyncNewsletterKulturreisen.php`: `metadata['lead_id']`-Key bleibt (ist Payload-Konvention), Wert aus `$booking->inquiry_id`. + +**Views (`resources/views/`):** +- `pdf/components/booking_header.blade.php`, `pdf/components/booking_head.blade.php`, `customer/mail/modal-show-mail-inner.blade.php`: `{{ $booking->lead_id }}` → `{{ $booking->inquiry_id }}`. +- Alle weiteren View-Treffer zu `lead_id` sind Lead-Kontext (`lead_mails.lead_id`, `lead_notices.lead_id`, HTML-Data-Attribute) und bleiben unverändert — die Spalten werden von Phase 2 nicht umbenannt. + +**Was _nicht_ umgestellt wurde (mit Absicht):** +- FK-Spalten `lead_mails.lead_id`, `lead_notices.lead_id`, `lead_files.lead_id`, `lead_participant.lead_id`, `inquiry.lead_id`, `status_history.lead_id`, `customer_mails.lead_id`, `booking_documents.lead_id` — Spaltennamen bleiben, FKs zeigen nach `RENAME TABLE` automatisch auf `inquiries.id`. +- API-Feld `lead_id` in `API/BookingController::import`-Response — Abwärtskompatibilität für API-Konsumenten. +- Metadaten-Keys `lead_id` in Newsletter-Payload. +- HTML-Data-Attribute `data-lead_id` + DataTables-Spaltennamen `lead_id` (UI-seitige Konventionen, kein DB-Bezug). +- Routen-Pfade `/lead/*` — reine UX-Arbeit, nicht blockierend für DB-Rename. Nachträglich als 301-Redirect-Paket umsetzbar. +- Routen-Namen (`lead_detail`, `lead_index`) — bleiben als Aliase, um Links in Views/Mails/Logs nicht zu brechen. + +### Schritt 1: Migrationen einspielen +```bash +# Backup erstellen! +php artisan migrate --path=database/migrations/2025_04_15_200001_phase2_rename_customer_to_contacts.php +php artisan migrate --path=database/migrations/2025_04_15_200002_phase2_rename_lead_to_inquiries.php +php artisan migrate --path=database/migrations/2025_04_15_200003_phase2_rename_booking_lead_id_to_inquiry_id.php +``` + +### Ergebnis-Prüfung +```sql +-- Tabellen vorhanden? +SHOW TABLES LIKE 'contacts'; +SHOW TABLES LIKE 'inquiries'; +-- Spalte umbenannt? +SHOW COLUMNS FROM booking LIKE 'inquiry_id'; +-- FK vorhanden? +SELECT * FROM information_schema.KEY_COLUMN_USAGE +WHERE TABLE_NAME = 'booking' AND COLUMN_NAME = 'inquiry_id'; +``` + +### Rollback Phase 2 +```bash +# In umgekehrter Reihenfolge +php artisan migrate:rollback --path=database/migrations/2025_04_15_200003_phase2_rename_booking_lead_id_to_inquiry_id.php +php artisan migrate:rollback --path=database/migrations/2025_04_15_200002_phase2_rename_lead_to_inquiries.php +php artisan migrate:rollback --path=database/migrations/2025_04_15_200001_phase2_rename_customer_to_contacts.php +``` + +--- + +## Phase 3 — Participants konsolidieren + +### Schritt 1: Neue Tabelle erstellen + Daten migrieren +```bash +# Backup erstellen! +php artisan migrate --path=database/migrations/2025_04_15_300001_phase3_create_participants_unified_table.php +``` + +### Ergebnis-Prüfung (vor Schritt 2!) +```sql +-- Zeilenzahlen vergleichen +SELECT 'lead_participant' AS src, COUNT(*) AS cnt FROM lead_participant +UNION ALL +SELECT 'participant', COUNT(*) FROM participant +UNION ALL +SELECT 'participants_unified (inquiry)', COUNT(*) FROM participants_unified WHERE inquiry_id IS NOT NULL +UNION ALL +SELECT 'participants_unified (booking)', COUNT(*) FROM participants_unified WHERE booking_id IS NOT NULL +UNION ALL +SELECT 'participants_unified (lead_contact)', COUNT(*) FROM participants_unified WHERE is_lead_contact = 1; + +-- Stichprobe: Vergleich einzelner Datensätze +SELECT * FROM lead_participant LIMIT 5; +SELECT * FROM participants_unified WHERE inquiry_id IS NOT NULL LIMIT 5; +``` + +### Schritt 2: Alte Tabellen droppen (erst nach erfolgreicher Prüfung!) +```bash +# Backup erstellen! +php artisan migrate --path=database/migrations/2025_04_15_300002_phase3_drop_old_participant_tables.php +``` + +> **Achtung:** Schritt 2 ist irreversibel. Nur ausführen wenn: +> - participants_unified seit mindestens 1 Woche stabil läuft +> - Alle PDF-Generierungen, Buchungsbestätigungen etc. korrekt funktionieren +> - Kein Rollback auf Schritt 2 geplant + +### Rollback Phase 3 +```bash +# Nur Schritt 1 rollback-fähig: +php artisan migrate:rollback --path=database/migrations/2025_04_15_300001_phase3_create_participants_unified_table.php +# Schritt 2 ist irreversibel → Backup einspielen +``` + +--- + +## Phase 4 — Communications / Notices / Attachments konsolidieren + +> **Voraussetzung:** Phase 2 muss abgeschlossen sein (inquiries + contacts Tabellen müssen existieren). + +### Schritt 1: Neue Tabellen erstellen + Daten migrieren + +Die drei Schritt-1-Migrationen sind voneinander **nicht** unabhängig: +- `400003_attachments` setzt `400001_communications` voraus (wegen `communication_id` FK) +- Reihenfolge daher: communications → notices → attachments + +```bash +# Backup erstellen! +php artisan migrate --path=database/migrations/2025_04_15_400001_phase4_create_communications_table.php +php artisan migrate --path=database/migrations/2025_04_15_400002_phase4_create_notices_table.php +php artisan migrate --path=database/migrations/2025_04_15_400003_phase4_create_attachments_table.php +``` + +### Ergebnis-Prüfung Communications +```sql +SELECT 'lead_mails' AS src, COUNT(*) FROM lead_mails +UNION ALL +SELECT 'customer_mails', COUNT(*) FROM customer_mails +UNION ALL +SELECT 'communications (lead)', COUNT(*) FROM communications WHERE legacy_source = 'lead_mail' +UNION ALL +SELECT 'communications (cust)', COUNT(*) FROM communications WHERE legacy_source = 'customer_mail'; + +-- Reply-Chain korrekt? +SELECT COUNT(*) FROM communications WHERE reply_id IS NOT NULL; +-- Muss gleich sein wie: +SELECT COUNT(*) FROM lead_mails WHERE reply_id IS NOT NULL; +-- + COUNT(*) FROM customer_mails WHERE reply_id IS NOT NULL; +``` + +### Ergebnis-Prüfung Notices +```sql +SELECT 'lead_notices' AS src, COUNT(*) FROM lead_notices +UNION ALL +SELECT 'booking_notices', COUNT(*) FROM booking_notices +UNION ALL +SELECT 'notices (inquiry)', COUNT(*) FROM notices WHERE inquiry_id IS NOT NULL +UNION ALL +SELECT 'notices (booking)', COUNT(*) FROM notices WHERE booking_id IS NOT NULL; +``` + +### Ergebnis-Prüfung Attachments +```sql +SELECT 'lead_files' AS src, COUNT(*) FROM lead_files +UNION ALL +SELECT 'booking_files', COUNT(*) FROM booking_files +UNION ALL +SELECT 'attachments (lead)', COUNT(*) FROM attachments WHERE legacy_source = 'lead_file' +UNION ALL +SELECT 'attachments (booking)', COUNT(*) FROM attachments WHERE legacy_source = 'booking_file'; + +-- communication_id korrekt verknüpft? +SELECT COUNT(*) FROM lead_files WHERE lead_mail_id IS NOT NULL; +-- Muss gleich sein wie: +SELECT COUNT(*) FROM attachments WHERE legacy_source = 'lead_file' AND communication_id IS NOT NULL; +``` + +### Schritt 2: Alte Tabellen droppen (erst nach erfolgreicher Prüfung!) + +Kann unabhängig pro Tabellenpaar eingespielt werden: + +```bash +# Backup erstellen! +# Communications droppen (achtet auf FK von lead_files → lead_mails wird intern behandelt): +php artisan migrate --path=database/migrations/2025_04_15_400004_phase4_drop_old_communication_tables.php + +# Notices droppen: +php artisan migrate --path=database/migrations/2025_04_15_400005_phase4_drop_old_notice_tables.php + +# Attachments droppen: +php artisan migrate --path=database/migrations/2025_04_15_400006_phase4_drop_old_attachment_tables.php +``` + +> **Achtung:** Reihenfolge bei Schritt 2: +> `400004_communications` muss vor `400006_attachments` laufen, +> da `lead_files.lead_mail_id` FK auf `lead_mails` zeigt und erst in 400004 entfernt wird. +> (Der FK wird in 400004 automatisch entfernt falls noch vorhanden.) + +### Rollback Phase 4 +```bash +# Schritt 1 rollback (umgekehrte Reihenfolge): +php artisan migrate:rollback --path=database/migrations/2025_04_15_400003_phase4_create_attachments_table.php +php artisan migrate:rollback --path=database/migrations/2025_04_15_400002_phase4_create_notices_table.php +php artisan migrate:rollback --path=database/migrations/2025_04_15_400001_phase4_create_communications_table.php +# Schritt 2 ist irreversibel → Backup einspielen +``` + +--- + +## Vollständige Deployment-Sequenz (alle Phasen auf einmal) + +Nur empfohlen wenn alle Phasen bereits lokal/staging getestet wurden: + +```bash +# 1. Backup +mysqldump -u [user] -p stern_crm > backup_pre_migration_$(date +%Y%m%d).sql + +# 2. Maintenance Mode aktivieren +php artisan down --render="errors::503" + +# 3. Phase 1 — Deduplizierungsfelder +php artisan migrate --path=database/migrations/2025_04_15_100001_phase1_add_merge_fields_to_customer_table.php + +# 4. Phase 1 — Duplikate zusammenführen +php artisan contacts:merge-duplicates --confidence=HIGH --force +php artisan contacts:merge-duplicates --confidence=MEDIUM --force + +# 5. Phase 2 — Umbenennung +php artisan migrate --path=database/migrations/2025_04_15_200001_phase2_rename_customer_to_contacts.php +php artisan migrate --path=database/migrations/2025_04_15_200002_phase2_rename_lead_to_inquiries.php +php artisan migrate --path=database/migrations/2025_04_15_200003_phase2_rename_booking_lead_id_to_inquiry_id.php + +# 6. Phase 3 — Participants +php artisan migrate --path=database/migrations/2025_04_15_300001_phase3_create_participants_unified_table.php + +# 7. Phase 4 — Communications / Notices / Attachments +php artisan migrate --path=database/migrations/2025_04_15_400001_phase4_create_communications_table.php +php artisan migrate --path=database/migrations/2025_04_15_400002_phase4_create_notices_table.php +php artisan migrate --path=database/migrations/2025_04_15_400003_phase4_create_attachments_table.php + +# 8. Maintenance Mode deaktivieren +php artisan up + +# 9. Testen — BEVOR die Cleanup-Migrationen laufen! +# → Daten prüfen (SQL-Queries oben), App manuell testen + +# Cleanup-Migrationen (300002, 400004-400006) SEPARAT nach Testphase einspielen! +``` + +--- + +## Abhängigkeiten zwischen Phasen + +``` +Phase 1 ──────────────────────────────────────► unabhängig +Phase 2 ──────────────────────────────────────► unabhängig (empfohlen nach Phase 1) +Phase 3 ──────────► setzt Phase 2 voraus (FK auf inquiries) +Phase 4a (comm) ──► setzt Phase 2 voraus (FK auf inquiries + contacts) +Phase 4b (not.) ──► setzt Phase 2 voraus (FK auf inquiries) +Phase 4c (att.) ──► setzt Phase 2 + Phase 4a voraus (FK auf communications) +``` + +--- + +## Rollback-Strategie: Zusammenfassung + +| Migration | Rollback möglich? | Methode | +|-----------|-------------------|---------| +| Phase 1 (merge fields) | Ja | `migrate:rollback` | +| Phase 2 (rename) | Ja | `migrate:rollback` (umgekehrte Reihenfolge) | +| Phase 3 Schritt 1 (create participants_unified) | Ja | `migrate:rollback` | +| Phase 3 Schritt 2 (drop participant tables) | **NEIN** | Backup einspielen | +| Phase 4 Schritt 1 (create comm/notices/attach) | Ja | `migrate:rollback` (umgekehrte Reihenfolge) | +| Phase 4 Schritt 2 (drop old tables) | **NEIN** | Backup einspielen | + +**Faustregel:** Alle `_create_*` Migrationen sind rollback-fähig. Alle `_drop_*` Migrationen sind irreversibel. + +--- + +## Abhängiges Modul: Newsletter (/newsletter) + +Das Newsletter-Modul (`app/Http/Controllers/NewsletterController.php`) ist **nicht direkt betroffen** von den bisherigen Änderungen, muss aber bei zukünftigen Phasen im Blick behalten werden: + +- Eigene Tabelle `newsletter_contacts` mit `customer_id` FK → `customer.id` +- Verwendet `App\Models\Customer` (altes Model) über die `customer()`-Beziehung +- Export (`/newsletter/export`) läuft über `NewsletterExport` → `NewsletterContact`-Model, nicht direkt über `customer` +- Sync-Commands: `contacts:sync-newsletter-kulturreisen`, `contacts:sync-newsletter-ferienwohnungen` + +### Was bei Phase 2 angepasst werden muss + +Wenn `customer` → `contacts` umbenannt wird (Phase 2), muss im Newsletter-Modul: +- `App\Models\Customer` → weiterhin verwenden ODER auf `App\Models\Contact` umstellen +- FK `newsletter_contacts.customer_id` zeigt weiterhin auf dieselbe Tabelle (jetzt `contacts`) — keine Migration nötig, da FK-Name sich nicht ändert, nur der Tabellenname + +### Aktueller Status +- ✅ Newsletter-Export funktioniert unverändert (Phase 1 hat nichts daran geändert) +- ✅ Phase-2-Check: `NewsletterContact` belongs-to `Customer::class` — `Customer` verwendet jetzt `$table = 'contacts'`, der FK `newsletter_contacts.customer_id` bleibt stabil. Keine Code-Änderung im Newsletter-Modul nötig. + +--- + +## Code-Änderungen nach den Migrationen + +Die Migrationen erstellen nur die neuen Tabellen und migrieren die Daten. +Der App-Code muss separat angepasst werden (nicht Teil der Migrations selbst): + +### Nach Phase 2 +- ✅ `app/Models/Customer.php`: `protected $table = 'contacts';` +- ✅ `app/Models/Lead.php`: `protected $table = 'inquiries';` +- ✅ `app/Models/Contact.php`: `protected $table = 'contacts';` +- ✅ `app/Models/Booking.php`: `lead_id` → `inquiry_id` (`$casts`, `$fillable`, `@property`, `lead()`-Relation mit expliziter FK-Spalte `inquiry_id`, neuer `inquiry()`-Alias) +- ✅ Alle Repositories, Controllers, Services, Commands und Views im Booking-Kontext auf `inquiry_id` umgestellt +- ✅ Raw-SQL (`DB::table('customer')` / `DB::table('lead')`, `select('customer.*')` / `select('lead.*')`, `whereColumn(..., 'lead.id')`) auf `contacts` / `inquiries` umgestellt +- ⬜ Route-URLs: `/lead/` → `/inquiry/` (301 Redirects) — nachgelagert, nicht blockierend für DB-Rename + +### Nach Phase 3 +- `LeadRepository::createBooking()`: Participants nicht mehr kopieren — bestehende `inquiry_id`-Einträge werden per `booking_id` ergänzt +- PDF-Generierung: auf `participants_unified` umstellen statt `lead_participant`/`participant` +- Nach Cleanup (Schritt 2): alle direkten Queries auf `lead_participant`/`participant` entfernen + +### Nach Phase 4 +- `LeadMailRepository` + `CustomerMailRepository` → `CommunicationRepository` (neu erstellen) +- `LeadFileRepository` + `BookingFileRepository` → `AttachmentRepository` (neu erstellen) +- `LeadNoticeRepository` + `BookingNoticeRepository` → `NoticeRepository` (neu erstellen) +- `MailDirService`: Datenzugriff auf `communications` umstellen +- Views für Mails/Notizen/Dateien in Lead und Booking können nach Umstellung geteilt werden diff --git a/dev/entwicklungsplan.md b/dev/entwicklungsplan.md new file mode 100644 index 0000000..2848564 --- /dev/null +++ b/dev/entwicklungsplan.md @@ -0,0 +1,732 @@ +# Entwicklungsplan mein.sterntours.de (2026) + +**Erstellt:** April 2026 +**Basis:** [briefings.md](./briefings.md), [customer-bookings/](./customer-bookings/), [audit-april-2025.md](./audit-april-2025.md), [projekt-empfehlungen-2026-04.md](./projekt-empfehlungen-2026-04.md), [frontend-navigation/](./frontend-navigation/) +**Ziel:** Konsolidierung der drei Anwendungen (`mein.sterntours.de` v3, `sterntours.de` Frontend-Backend, `v2.stern-tours.de` Reiseverwaltung) in **ein** modernes Laravel-10-CRM; Ablösung der Altsysteme; neue Kernfunktion „Angebote". + +--- + +## 0. Einordnung und Grundprinzipien + +### 0.1 Strategische Leitplanken + +- **Ein System als Zielbild:** `mein.sterntours.de` (Laravel 10) wird das einzige Backend. `sterntours.de` bleibt als Frontend-Auslieferung bestehen, das Redaktions-/Admin-Backend darin entfällt. `v2.stern-tours.de` wird komplett abgelöst. +- **Schrittweise, rückwärtskompatibel:** Jede Phase muss produktiv deploybar sein, ohne dass andere Module brechen. Parallelbetrieb alt/neu wo nötig. +- **Migrationen immer mit Rollback:** Jede DB-Migration hat einen `down()`-Pfad, Drop-Migrationen laufen erst nach bestätigter Stabilität. +- **UI-Baseline festlegen:** Bevor die Modernisierung in die Breite geht, wird ein verbindlicher UI/UX-Standard definiert (Listen, Detailseiten, Formulare, Modals, Toolbar, Filter, Inline-Edit, Tabs). Alle neuen Module werden daran ausgerichtet; Altmodule ziehen nach. +- **Business-Logik in Services, nicht in Controllern.** Neue Module nutzen konsequent den bestehenden Schichtenaufbau (Controller → FormRequest → Repository → Service → Model). + +### 0.2 Grob-Roadmap (Reihenfolge, high-level) + +``` +Block A – Fundament (Voraussetzung für alles Weitere) + A1 UI/UX-Baseline definieren + A2 Technisches Aufräumen aus Audit (API-Key, Frontend-Tooling-Entscheidung, Pint/Larastan, Queue) + A3 Customer/Lead/Booking-Neustrukturierung Phasen 2–4 abschließen + +Block B – Kerngeschäft (sichtbare Verbesserungen für Mitarbeiter) + B1 Backend-Direktbuchung (Reise + Fewo) + B2 Organisations-Tab Buchung überarbeiten + B3 E-Mail-System vereinheitlichen + Auto-Save + B4 Fewo-Doppelbuchung / Belegungs-Bug beheben + B5 Angebots-Modul (zentrale neue Funktion) + +Block C – Ablösung der Altsysteme + C1 Admin-Controller sterntours.de → mein.sterntours.de migrieren + C2 Navigation + Page-Modell refactoren + C3 CMS-Module vereinheitlichen (Navigation / Benutzerführung) + C4 Reisenverwaltung v2.stern-tours.de migrieren (größtes Modul) + +Block D – Betrieb & Langfristpflege + D1 Tests, Monitoring, Deployment + D2 Framework-/PHP-Upgrade-Pfad (Laravel 11, PHP 8.3+) + +Block E – Kundenseitige Self-Service-Funktionen (Zukunftsmodul) + E1 Kundenportal / Kunden-Login (Modul 15) +``` + +Die genannten Module sind jeweils unten ausführlich beschrieben. Block A ist zwingende Voraussetzung, danach können B und C teilweise parallelisiert werden. + +--- + +## 1. Modul 1 — UI/UX-Baseline (Block A1) + +**Ziel:** Einmalig festlegen, wie eine „moderne, einheitliche Seite" im Backend aussieht. Davon leitet sich alles andere ab. + +### 1.1 Analyse / Inventar + +- Screenshots aller Haupt-Listen (Buchungen, Anfragen, Fewo-Buchungen, Kunden, Kontakte, CMS-Listen) aufnehmen und Abweichungen dokumentieren (Filter oben / Filter als Sidebar / Suchfeld, Inline-Edit ja/nein, Pagination-Stil, Table-Buttons). +- Detailseiten (Anfrage-Detail, Buchung-Detail, Fewo-Buchung-Detail) strukturell vergleichen: Welche Sektionen / Tabs / Boxen existieren, welche sind identisch, welche unterscheiden sich unnötig? +- Typografie, Abstände, Form-Controls, Modal-Varianten auflisten. + +### 1.2 Baseline-Definition + +- Einheitliches Grid, einheitliche Toolbar (links Filter / Suche, rechts Aktionen). +- Einheitliches DataTable-Pattern (Filter → Spalten → Badge-Logik → Zeilenaktionen). +- Einheitliches Tab-Layout auf Detailseiten (linke Sidebar mit Stammdaten / Zähler, rechte Tab-Area). +- Einheitliche Modals (Bestätigung, Formular, History). +- Einheitliche Status-/Fehler-/Erfolgs-Toasts. +- Komponentenbibliothek als Blade-Components unter `resources/views/components/ui/` (Button, Card, Tabs, Toolbar, FormRow, Modal, Toast). + +### 1.3 Pilot-Umsetzung + +- Bestehende **Contacts-Liste** (bereits gut, Phase 1 abgeschlossen) als Referenz auf den Baseline-Stand anheben. +- Eine weitere Ansicht (Vorschlag: Buchungsliste) auf die Baseline portieren, um das Pattern zu validieren, bevor die Breite umgestellt wird. + +### 1.4 Frontend-Tooling-Migration (parallel, blockiert den Pilot nicht) + +**Zielkorridor (Entscheidung Abschnitt 17.7):** Vite + dart-sass + schrittweise Bootstrap 5. + +- Laravel Mix 2 → **Vite** als Build-Tool. +- `node-sass` → **dart-sass**. +- **Bootstrap 4 → 5 schrittweise:** erst Infrastruktur umstellen (Vite/Sass), Bootstrap 5 als Ziel im gleichen Branch parallel einziehen; Views ziehen **modulweise** nach, nicht in einem Big-Bang-Rewrite. +- Komponentenbibliothek aus 1.2 wird direkt auf Bootstrap 5 aufgesetzt — so zieht jedes neu gebaute Modul (ab Modul 4 aufwärts) automatisch in die neue Welt um. +- Alte Views bleiben in Bootstrap 4 lauffähig, bis ihr jeweiliges Modul umgebaut wird. +- Als eigener Feature-Branch, erst mergen, wenn Pilot-View auf neuer Pipeline läuft und parallel zu Bootstrap-4-Views ko­existieren kann. + +**Aufwand:** 2–3 Wochen (inkl. Komponenten-Library, Pilot-View). +**Abhängigkeiten:** keine. Startmodul. +**Deliverables:** Baseline-Dokument, Komponentenbibliothek, 2 Referenz-Views. + +--- + +## 2. Modul 2 — Technische Hausaufgaben (Block A2) + +Aus [audit-april-2025.md](./audit-april-2025.md) und [projekt-empfehlungen-2026-04.md](./projekt-empfehlungen-2026-04.md), bevor größere Module starten. Alle klein / mittel, aber Voraussetzung für einen sauberen Weiterbau. + +| # | Maßnahme | Priorität | Aufwand | +|---|----------|-----------|---------| +| 2.1 | Composer-Wildcards (`"*"`) durch feste Versionen ersetzen | Hoch | klein | +| 2.2 | `navigation/cache/clear`-Endpoint absichern (Auth/Secret/IP) | Hoch | klein | +| 2.3 | `booking/import`: GET entfernen, nur POST; Rate-Limit | Hoch | klein | +| 2.4 | `MailDirService`-Nutzung in Booking-/Lead-Services konsolidieren (war im Audit offen) | Mittel | mittel | +| 2.5 | API-Routen auf Klassen-Syntax (`[Controller::class, 'method']`) | Niedrig | klein, laufend | +| 2.6 | Laravel Pint + Larastan + CI-Pipeline | Mittel | mittel | +| 2.7 | PHPUnit: zweite SQLite-Connection für `mysql_stern` + Factories für Customer/Booking/Lead | Mittel | mittel | +| 2.8 | Queue-Worker (Supervisor) + `Mail::queue()` für nicht-kritische Mails | Mittel | mittel–groß | +| 2.9 | `Console\Kernel::schedule()` dokumentieren oder befüllen (keine unsichtbaren Crons) | Mittel | klein | + +**Abhängigkeiten:** keine. Läuft parallel zu A1. + +--- + +## 3. Modul 3 — Customer / Lead / Booking konsolidieren (Block A3, in Arbeit) + +**Aktueller Stand:** Phase 1 auf Testsystem abgeschlossen, Phasen 2–4 offen. Siehe [customer-bookings/umsetzung.md](./customer-bookings/umsetzung.md). + +### 3.1 Was noch zu tun ist + +1. **Phase 1 live deployen** (Duplikat-Merge). Voraussetzung: Backup + Stichprobenprüfung der CSV auf Test. +2. **Phase 2 — Tabellen umbenennen** (`customer` → `contacts`, `lead` → `inquiries`, `booking.lead_id` → `inquiry_id`). Code-Vorarbeit: Model-`$table`, Repositories auf `inquiry_id`, Routen `/lead/` → `/inquiry/` mit 301-Redirects. +3. **Phase 3 — Participants konsolidieren** (`participants_unified`). Code-Anpassung: `LeadRepository::createBooking()` kopiert keine Teilnehmer mehr; PDF-Generierung auf unified-Tabelle umstellen. **Vor dem Drop** der Alttabellen mindestens eine Woche Parallelbetrieb. +4. **Phase 4 — Communications / Notices / Attachments konsolidieren.** Neue Repositories (`CommunicationRepository`, `NoticeRepository`, `AttachmentRepository`), Views teilen, dann Alt-Tabellen droppen. + +### 3.2 Ergänzungen / Optimierungen, die in dieser Phase mitlaufen sollten + +Aus eigener Analyse nachgeschoben: + +- **Abhängiges Newsletter-Modul** (erwähnt in `umsetzung.md` §Abhängiges Modul): Nach Phase 2 `NewsletterContact`-Model auf `App\Models\Contact` mappen, damit wir keine zwei Model-Pfade für dieselbe Tabelle halten. +- **Passport-/API-Scopes:** Nach Umbenennung der Tabellen sind alle API-Responses, die `customer_id`/`lead_id` ausliefern, zu prüfen (Versionierung `v1` behalten, optional `v2` mit neuen Feldnamen). +- **Volltextsuche für Contacts:** Mit wachsender Kundenhistorie lohnt sich ein DB-Index auf `email`, `name`, `firstname`, `zip` (oder MySQL-Fulltext) — verbessert die bereits eingebaute Schnellsuche. +- **Audit-Log für Merges:** `merge_log`-Tabelle (wer hat wann welchen Contact in welchen gemerged), damit im Support nachvollziehbar bleibt. +- **DSGVO-Lösch-Workflow:** `deleted_at` existiert bereits. Braucht UI für „Kontakt komplett löschen" (mit allen Anfragen/Buchungen), inkl. Sperre, falls aktive Buchungen existieren. +- **Teilnehmer als Stammdaten:** `participants_unified.contact_id` langfristig konsequent setzen — dann können Teilnehmer aus bisherigen Reisen bei neuer Buchung übernommen werden. + +**Aufwand:** wie in `umsetzung.md` geschätzt, plus 1 Woche für die Ergänzungen oben. +**Abhängigkeiten:** Phase 2 ist Voraussetzung für das neue Angebots-Modul (Modul 6), weil sonst zwei Namenswelten parallel leben. + +--- + +## 4. Modul 4 — Backend-Direktbuchung (Block B1) + +**Briefing-Punkt:** „Es muss auch möglich sein, direkt im System Buchungen anzulegen. Aktuell gehen Mitarbeiter auf die Webseite und lösen dort eine Bestellung aus." + +### 4.1 Ist-Analyse + +- Alle Buchungen laufen aktuell über das Webseiten-Formular (`sterntours.de/src/AppBundle/Controller` → API-Endpoint `booking/import` auf `mein.sterntours.de`). +- Im Backend gibt es keinen vollständigen „Neue Buchung"-Flow; Anlage erfolgt bisher via Konvertierung aus einem Lead (`LeadRepository::createBooking()`). + +### 4.2 Teilschritte + +1. **Flow definieren (paper design):** + - Einstieg 1: „Direktbuchung ohne Anfrage" (z. B. aus `/bookings` → „Neue Buchung"). + - Einstieg 2: „Buchung aus Angebot" (kommt aus Modul 6). + - Einstieg 3: Bestehend — aus Anfrage (bleibt wie gehabt). +2. **Gemeinsames BookingFormRequest:** Validierung, die sowohl von der Web-API als auch vom Backend-Form genutzt wird (Single Source of Truth). +3. **BookingService::createManual(array $data, ?Inquiry $inquiry = null)** als zentrale Erzeugungsmethode (ersetzt Duplikatlogik zwischen Web-Import und Backend). +4. **UI-Flow im Backend (mehrstufig, nicht ein Riesenformular):** + - Schritt 1: Kontakt wählen oder anlegen (Contact-Autocomplete aus neuer Contacts-Tabelle). + - Schritt 2: Reise / Fewo wählen, Termin, Zimmer-/Personenbelegung. + - Schritt 3: Teilnehmer (aus Kontakt-Historie vorschlagen — hier greift `participants_unified.contact_id`). + - Schritt 4: Leistungen / Optionen / Versicherung. + - Schritt 5: Zahlmodalitäten, Anmerkungen. + - Schritt 6: Übersicht + „Anlegen" + „Anlegen & Bestätigung-Mail senden". +5. **Wiederverwendung des Web-Formulars:** Prüfen, ob Teile des Frontend-Formulars (`sterntours.de`) als Blade-Partials ins Backend gezogen werden können — sonst aber lieber neu auf der UI-Baseline, da das Alt-Frontend auf Twig/Symfony läuft. +6. **E-Mail-Versand optional (Entscheidung Abschnitt 17.4):** + - Letzter Schritt im Backend-Flow bietet zwei Buttons: + - **„Anlegen & Bestätigung senden"** → nutzt dieselbe Mail-Pipeline wie der Web-Import (Buchungsbestätigung an Kunde + interne Mail). + - **„Nur anlegen (keine Mail)"** → legt Buchung an, setzt ein internes Flag `silent_created = 1`, kein Kundenversand. + - Das Flag wird im Audit-Log der Buchung vermerkt, damit später nachvollziehbar ist, warum keine Bestätigung rausging. + - Nachträglicher manueller Mailversand bleibt jederzeit möglich (bestehende Mail-Funktionalität in Buchungs-Detailseite). +7. **Dokumente wie bei Web-Buchung:** Direktbuchung nutzt dieselbe Dokumenten-Logik wie `app/Http/Controllers/BookingController.php` heute (zentral hinterlegte Dokumente über `hasDocument(...)` + freie Uploads über `BookingFileRepository`) — kein Neubau. + +### 4.3 Fewo-Variante + +- Dasselbe Konzept für Fewo (`TravelUserBookingFewoController`) — mit Verfügbarkeitsprüfung in Echtzeit und harter Kollisions-Sperre (siehe auch Modul 7, Doppelbuchungen). + +**Aufwand:** ~4 Wochen (Reisebuchung + Fewo + Tests). +**Abhängigkeiten:** UI-Baseline (Modul 1), Phase 2 Customer/Lead (damit `contact_id`/`inquiry_id` sauber sind). +**Risiko:** Mittel — muss mit Web-API-Import identisch enden, sonst entstehen zwei Wahrheiten. + +--- + +## 5. Modul 5 — Organisations-Tab der Buchung überarbeiten (Block B2) + +**Briefing-Punkt:** „Unter dem Punkt Buchungen muss der Reiter Organisation verbessert werden. Es muss von der Benutzerführung einfacher und übersichtlicher werden, eine Organisation einer Reise anzulegen und zu verwalten." + +### 5.1 Ist-Analyse (TODO vor Start des Moduls) + +- Screenshots + Workflow-Walkthrough des aktuellen Organisations-Tabs dokumentieren. +- Welche Entitäten / Datensätze hängen daran (Transportleistungen, Partner, Zeiten, Dokumente)? Welche Felder sind Pflicht, welche redundant? +- Welche Reibungspunkte berichten die Mitarbeiter (Usability-Interview, 30 min). + +### 5.2 Teilschritte + +1. **Zieldesign** (aus UI-Baseline abgeleitet): Zeitleisten-/Kacheldarstellung je Leistungsposition (statt langer Tabelle), Inline-Edit für häufige Änderungen. +2. **Refactor im Daten-Layer:** Doppelte Felder identifizieren, konsolidieren (vermutlich analog zu Teilnehmer-Konsolidierung). +3. **UI-Umsetzung** auf Basis der neuen Komponentenbibliothek. +4. **Bulk-Aktionen:** Leistungsblock kopieren (für Gruppen-/Serienreisen), Vorlagen speichern. +5. **PDF-Output** prüfen (Organisationsplan als Dokument). + +**Aufwand:** ~2–3 Wochen. +**Abhängigkeiten:** Modul 1. Kein harter Zusammenhang zu Modul 3, aber wirkt sauberer, wenn Modul 3 Phase 3 (Participants) vorher durch ist. + +--- + +## 6. Modul 6 — Angebote / Offers (Block B5, großer neuer Kernbaustein) + +**Briefing-Zitat (Kunde):** „Wir möchten aus unserem System unbedingt einfach, schnell und qualitativ hochwertig Angebote erstellen können … Theoretisch kann ein solches Angebot aussehen wie unser Buchungsauftrag, nur dass ‚Angebot' darüber steht … Wichtig ist uns, dass es einfach zu erstellen ist und man ggf. bei einer sehr hochwertigen Reise auch weiterführenden Text zum Reiseverlauf für die Reisebeschreibung hinzufügen kann … Anschließend wäre es gut, wenn hieraus direkt eine Buchung generiert werden könnte." + +### 6.1 Ziel + +Aus einer Anfrage (oder direkt) ein **Angebot** erstellen, als PDF ausgeben, an den Kunden versenden und bei Annahme **mit einem Klick in eine Buchung umwandeln**, ohne Daten doppelt zu pflegen. + +### 6.2 Datenmodell + +Neue Tabellen (Entwurf): + +```sql +-- Logischer Angebotsdatensatz (eine "Angebots-Nummer", mehrere Versionen möglich) +CREATE TABLE offers ( + id INT PK, + inquiry_id INT NULL, -- aus Anfrage erzeugt + contact_id INT NOT NULL, + booking_id INT NULL, -- gesetzt, sobald Angebot → Buchung wurde + offer_number VARCHAR UNIQUE, -- eigene Nummernkreisführung, z. B. 2026-00123 + status ENUM('draft','sent','accepted','declined','expired','withdrawn'), + current_version_id INT NULL, -- FK auf offer_versions.id (aktiv/zuletzt versendet) + created_by INT, + created_at, updated_at +); + +-- Jede versendete (und jede danach geänderte) Fassung ist eine eigene Version +CREATE TABLE offer_versions ( + id INT PK, + offer_id INT FK, + version_no INT, -- 1, 2, 3, ... + status ENUM('draft','sent','accepted','declined','expired','superseded'), + valid_until DATE NULL, + total_price DECIMAL(10,2), + headline VARCHAR, -- "Persönliches Angebot für Frau XXX" + intro_text TEXT, + itinerary_text LONGTEXT, -- Reiseverlauf, optional WYSIWYG + closing_text TEXT, + template_id INT NULL, + pdf_path VARCHAR NULL, -- generiertes PDF dieser Version + pdf_archived TINYINT(1) DEFAULT 0, -- für spätere Speicher-Bereinigung alter Versionen + sent_at DATETIME NULL, + accepted_at DATETIME NULL, + accepted_via ENUM('customer_link','admin','email') NULL, + created_by INT, + created_at, updated_at, + UNIQUE KEY (offer_id, version_no) +); + +CREATE TABLE offer_items ( + id INT PK, + offer_version_id INT FK, -- gehört zu einer Version, nicht zum Angebot direkt + position INT, + type ENUM('travel','service','option','discount','insurance','custom'), + title VARCHAR, + description TEXT, + quantity INT DEFAULT 1, + price_per_unit DECIMAL(10,2), + total_price DECIMAL(10,2), + travel_program_id INT NULL, + fewo_lodging_id INT NULL, + metadata JSON +); + +CREATE TABLE offer_templates ( + id, name, description, headline, intro_text, itinerary_text, closing_text, items_json, ... +); + +-- Kundenseitiger Freigabe-Link (Token-URL, Einmal-Link pro Version) +CREATE TABLE offer_access_tokens ( + id INT PK, + offer_version_id INT FK, + token VARCHAR(64) UNIQUE, + expires_at DATETIME NULL, + opened_at DATETIME NULL, -- wann der Kunde den Link erstmals geöffnet hat + accepted_at DATETIME NULL, + declined_at DATETIME NULL, + ip_address VARCHAR(45) NULL, + user_agent VARCHAR(255) NULL +); +``` + +Angebote sind **eigenständig**, nicht Unterdatensatz einer Buchung. Eine Buchung kann per `offer_id` rückverweisen, und ein Angebot hält per `booking_id` die daraus entstandene Buchung. Die Versionierung ist zwingend (Entscheidung aus Abschnitt 17.1): ab dem ersten Versand ist Änderung = neue Version. + +### 6.3 Teilschritte + +1. **Datenmodell & Migrationen** (`offers`, `offer_versions`, `offer_items`, `offer_templates`, `offer_access_tokens`). +2. **Model / Repository / Service** (`OfferService::createFromInquiry($inquiryId)`, `::createNewVersion(Offer $offer)`, `::send(OfferVersion $v)`, `::convertToBooking(Offer $offer)`). +3. **Vorlagen-Verwaltung:** + - Eigene Liste `/offer-templates`, anlegbar aus einem existierenden Angebot (Button „Als Vorlage speichern"). + - Vorlagen pro Reise-Organisation gruppierbar (Briefing: „aus einer der Vorlagen eine Organisation laden"). +4. **Angebots-Editor:** + - Einstieg: innerhalb `/inquiries/{id}` Button „Angebot erstellen"; alternativ eigenständiges `/offers/create`. + - Vorlage wählen → Felder werden gefüllt → frei bearbeitbar. + - Positionen (offer_items) mit Drag&Drop, Kopier-Button, Summe live. + - Optionales Feld „Reiseverlauf" als WYSIWYG (TinyMCE/TipTap), ausblendbar für einfache Angebote. + - **Dokumente am Angebot** (analog zum bestehenden Buchungs-Pattern in `app/Http/Controllers/BookingController.php`, der `booking.hasDocument('coupon'|'storno'|…)` für zentral hinterlegte Dokumente und `BookingFileRepository` für freie Uploads nutzt): + - **Zentral hinterlegte Dokumente** (Briefbögen, AGB, Standard-Anhänge pro Reise-Organisation / Reisetyp) werden auswählbar und automatisch als Anhang angeboten. + - **Freie Uploads pro Angebot** (individueller Reiseverlauf, eigener Briefbogen, Bilder) — analog zu `booking_file` über eine `offer_file`-Tabelle bzw. über das in Modul 3 Phase 4 konsolidierte `attachments`-Modul (dann mit `offer_version_id`). + - Ab `sent` werden die zu diesem Zeitpunkt ausgewählten/hochgeladenen Dokumente mit der Version „eingefroren" (zur Version gespeichert, damit spätere Änderungen keine alten PDFs verfälschen). +5. **PDF-Generierung:** + - Neues Template `pdf/offer.blade.php` analog zum bestehenden Buchungsauftrag-PDF. + - Header: „Angebot Nr. 2026-00123 / V2" und / oder „Persönliches Angebot für Frau Musterfrau". + - Gleiche Corporate-Identity-Elemente wie Buchungsauftrag. + - Anlage: zentral ausgewählte Dokumente + frei hochgeladene Dokumente. +6. **Versionierung (fest verankert, Entscheidung Abschnitt 17.1):** + - Solange Status `draft`: Änderungen ändern die aktuelle Version direkt. + - Ab dem ersten `send`: jede Änderung erzeugt eine **neue Version** (V2, V3 …); vorherige Version wird `superseded`. + - Jede Version hält ihr eigenes PDF + ihre eigenen Dokumente + ihre eigenen `offer_items` + ihren eigenen Freigabe-Token. + - **Speicher-/Archivstrategie:** Cron-Job (später, Modul 13) setzt PDFs älterer Versionen `pdf_archived = 1` und verschiebt sie auf kalten Storage; konfigurierbares Retention-Limit (z. B. „nur letzte 3 Versionen im Hot-Storage, ältere PDFs bei Bedarf neu generieren"). +7. **Versand-Workflow:** + - Status-Maschine auf `offer_versions`: `draft → sent → accepted/declined/expired/superseded`. + - Versand als E-Mail (PDF im Anhang, Textvorlage im CMS pflegbar — siehe Modul 11). + - Mail-Thread landet im gemeinsamen Communications-Modul (Modul 3 Phase 4). + - Beim Senden wird pro Version **ein neuer `offer_access_token`** erzeugt und in die Mail als Link eingebaut. +8. **Kundenseitiger Freigabe-Link (Entscheidung Abschnitt 17.2):** + - Öffentliche Route `GET /angebot/{token}` auf `sterntours.de` (oder Subdomain `angebote.sterntours.de`), die die Angebotsversion anzeigt (PDF-Embed + Anhänge + Buttons „Annehmen" / „Ablehnen" / „Fragen?"). + - Route `POST /angebot/{token}/accept` und `POST /angebot/{token}/decline` mit IP/User-Agent-Protokoll. + - Beim Annehmen: `offer_versions.status = accepted`, `accepted_at = now()`, `accepted_via = 'customer_link'`, Benachrichtigung (Mail + Dashboard-Hinweis) an den zuständigen Mitarbeiter. + - **Admin-Annahme bleibt gleichwertig möglich** (Status händisch auf `accepted` setzen, `accepted_via = 'admin'`), z. B. bei telefonischer Zusage. +9. **Konvertierung Angebot → Buchung:** + - Button „In Buchung übernehmen" im Angebot (nur aktiv bei `accepted`). + - `OfferService::convertToBooking()` legt Buchung + Teilnehmer + Leistungen auf Basis der angenommenen `offer_version` an; nutzt denselben Service wie Modul 4 (Direktbuchung), damit nur eine Erzeugungslogik existiert. + - Angebots-Dokumente (Version-eingefroren) werden automatisch an die Buchung kopiert / verlinkt. + - `booking_id` wird auf `offers` gesetzt. +10. **Übersichtsseite / Listen:** `/offers` mit Filtern (Status, Ablaufdatum, Mitarbeiter, Kontakt, Version), Badges, Bulk-Export. +11. **Zähler / Dashboard:** In der Kontakt- und Anfrage-Übersicht jeweils Badge „X Angebote" analog zum Anfragen-/Buchungs-Badge. +12. **Berechtigungen:** Neue Permissions `offers.read`, `offers.create`, `offers.send`, `offers.accept`. + +### 6.4 Ergänzungen aus meiner Sicht (nicht im Briefing, aber sinnvoll) + +- **Ablauf-Automatik:** Cron setzt Angebote nach `valid_until` auf `expired`, optional Erinnerungsmail an Mitarbeiter vor Ablauf. Token wird dabei invalidiert. +- **Änderbarkeits-Regel:** Nur `draft`-Versionen sind frei änderbar. Ab `sent` ist Änderung = neue Version. +- **Preiskonsistenz:** `offer_items` greifen — sofern verknüpft — auf dieselben Preisquellen wie das bestehende Reise-/Fewo-System (aus v2 migriert, Modul 12). Keine Doppeltpflege von Preislisten. +- **Anbindung Kundenportal (Modul 15):** Sobald das Kundenportal steht, sieht der eingeloggte Kunde seine Angebote direkt dort — der Token-Link bleibt aber für nicht eingeloggte Kunden weiterhin der Standardweg. + +**Aufwand:** ~7–9 Wochen (großes Modul, durch Versionierung + Freigabe-Link leicht gewachsen). +**Abhängigkeiten:** +- UI-Baseline (Modul 1) muss stehen. +- Modul 3 Phase 2 (inquiries-Tabelle), damit `inquiry_id`-Referenzen sauber sind. +- Modul 3 Phase 4 (attachments-Tabelle) ideal — sonst legen wir eine separate `offer_file`-Tabelle an, die später fusioniert. +- Modul 4 (gemeinsamer BookingService), damit die Konvertierung keinen Copy-Code erzeugt. +- Modul 12 Teil „Reiseprogramme" verfügbar in Laravel, falls `offer_items` auf bestehende Programme referenzieren sollen — zur Not über View-basiertes Legacy-Lesemodell überbrückbar. + +--- + +## 7. Modul 7 — E-Mail-System vereinheitlichen & Auto-Save (Block B3) + +**Briefing-Punkte:** +- „Unter dem Punkt Buchungen gibt es E-Mails … wird eine E-Mail geschrieben. Soll diese sofort per Auto-Save als Entwurf gespeichert werden." +- „Auch hier [Fewo] müssen die E-Mails, die dem selben Prinzip die Buchung verfolgen, auch ein Auto-Save bekommen." +- „Da die E-Mails im System grundsätzlich eine einheitliche Programmierung haben, wäre es sinnvoll, diese Skripte zu migrieren." + +### 7.1 Teilschritte + +1. **Konsolidierung zuerst erledigen** (Modul 3 Phase 4, `communications`-Tabelle). Solange drei verschiedene Mail-Tabellen existieren, ist jede Erweiterung doppelte Arbeit. +2. **Draft-Feld einführen** in `communications`: Status `draft | queued | sent | failed`, plus `autosaved_at`. +3. **Auto-Save im Editor (Frontend):** + - JS-Debounce (alle 3 s) schreibt per `PATCH /communications/{id}/draft` Betreff und Body. + - Anlage eines Drafts beim Öffnen des leeren Editors (liefert `id` zurück). + - Crash-/Reload-Recovery: Beim Öffnen des Mail-Dialogs prüft das Frontend, ob ein bestehender Draft für diesen Kontext existiert (Anfrage / Buchung / Fewo-Buchung) und bietet ihn zum Weiterbearbeiten an. +4. **Vereinheitlichte Modals** auf Basis der UI-Baseline (ein Mail-Modal für alle drei Kontexte). +5. **Queue-basierter Versand** (siehe Modul 2 / 2.8): `Mail::queue()`, mit `send_after`-Feld (geplanter Versand), Retry-Logik. +6. **CustomerFewoMail → Communications migrieren** (Ausnahme, die in Modul 3 Phase 4 ggf. noch offen ist). +7. **Draft-Aufräumcron** (automatische Löschung von Drafts > 30 Tage ohne Aktivität). + +**Aufwand:** ~2 Wochen nach Abschluss von Modul 3 Phase 4. +**Abhängigkeiten:** Modul 3 Phase 4. + +--- + +## 8. Modul 8 — Fewo-Doppelbuchungen / Belegung fixen (Block B4) + +**Briefing:** „Bei den Buchungen der Ferienwohnungen tauchen immer wieder Fehler auf bei der Belegung … wenn die Daten geändert werden … Doppelbuchungen teilweise im System vorliegen. Ich glaube nur in der Datenbank, das muss natürlich bereinigt werden." + +### 8.1 Analyse + +- Root-Cause vermutet (aus Briefing): Daten-Änderungen werden nicht synchron in die zweite Speicher-Ebene durchgeschrieben (vermutlich Legacy-Admin in `sterntours.de/AdminController.php` vs. `mein.sterntours.de`). +- Ziel von Modul 9 (Admin-Migration) wird diesen Fehler indirekt mit beheben, der Bug muss aber separat gezielt adressiert werden — sonst blutet er weiter. + +### 8.2 Teilschritte + +1. **Quellen inventarisieren:** Welche Stellen schreiben `FewoReservation` / Belegungen (Legacy AdminController, Webseite, mein.sterntours Fewo-Buchungen, Fewo-Mail-Import, ggf. iCal-Sync)? +2. **Konflikt-Detektor-Cron schreiben:** Stündlicher Job, der Überlappungen pro `fewo_lodging_id` findet und einen Report ins Dashboard + Slack/Mail liefert. +3. **Datenbestand aufräumen:** Einmaliger Report → manuelle / halb-automatische Bereinigung. +4. **Zentrale Schreiblogik einziehen:** Alle Fewo-Reservierungs-Anlagen / -Änderungen laufen künftig durch einen einzigen `FewoReservationService`, der + - Überlappungen mit Lock prüft (`SELECT … FOR UPDATE`), + - Konsistent in allen relevanten Tabellen schreibt, + - Events feuert (für Cache-Invalidierung, Kalender). +5. **Turnustag-Logik (Entscheidung Abschnitt 17.5):** + - **Kein harter DB-Constraint** (kein `EXCLUSION`-/Unique-Index auf Tages-Ebene), weil An- und Abreisetag legitimerweise überlappen dürfen (Abreise-Vormittag / Anreise-Nachmittag am selben Tag). + - Überlappung wird **im Service** nach klaren Regeln geprüft: + - Konflikt = neue Buchung endet **später** als bestehende beginnt UND neue Buchung beginnt **früher** als bestehende endet, **und** die überlappenden Tage sind keine reinen Wechseltage (Turnustage). + - „Wechseltag" konfigurierbar pro Lodging (Tagestyp: frei / nur Anreise / nur Abreise / gesperrt). + - Der Service liefert bei Konflikt eine sprechende Fehlermeldung („Belegung kollidiert mit Buchung #1234 vom 12.–19.06., kein Wechseltag"), statt stumm abzulehnen. +6. **Reservierungs-Audit-Log:** Jede Änderung protokollieren (alter/neuer Zeitraum, User, Quelle). +7. **UI-Kalender für Mitarbeiter:** Visueller Belegungskalender pro Lodging mit farblich markierten Wechseltagen — macht das „überlappen darf, aber nur am Turnustag" für Mitarbeiter sofort sichtbar. + +**Aufwand:** ~2 Wochen (Analyse + Fix + Bereinigung). +**Abhängigkeiten:** kann früh gestartet werden; überschneidet sich inhaltlich mit Modul 9 (Admin-Migration) und muss dort mitgedacht werden. + +--- + +## 9. Modul 9 — Migration Admin aus sterntours.de (Block C1) + +**Briefing:** „Zusätzlich gibt es ein weiteres Backend `sterntours.de/src/AppBundle/Controller/AdminController.php`. Dieses muss auch sauber in das Hauptbackend `mein.sterntours.de` (v3) übernommen werden, damit wir das alte abstellen können. Damit wird sich dann vermutlich auch der Fehler erledigen. Grundsätzlich darf gerne die Datenstruktur migriert werden und optimiert werden." + +### 9.1 Scope-Analyse + +`AdminController.php` (~1.300 Zeilen) enthält laut Code u. a.: +- Fewo-Lodging-Verwaltung (CRUD, Bilder, Gruppen). +- Fewo-Preise, Saisons, Reservierungen. +- Fewo-Booking-Requests. + +### 9.2 Teilschritte + +1. **Inventar:** Jede Route in `AdminController.php` (+ evtl. zugehörige Templates) auflisten, Funktion beschreiben, Äquivalent im Laravel-System suchen. +2. **Datenstruktur-Analyse:** Welche Tabellen werden bedient (`fewo_lodging`, `fewo_price`, `fewo_season`, …)? Welche liegen schon in `mein.sterntours.de`, welche müssen migriert / umbenannt werden? Wo existiert doppelte Datenhaltung (Ursache für Modul 8)? +3. **Zieldesign:** Pro Funktion ein Ticket/Epic (Fewo-Lodging-Verwaltung, Preise, Saisons, …). Jede Funktion zieht auf die UI-Baseline (Modul 1). +4. **Migrationssequenz:** + - a) Read-Only-Schattenansicht in `mein.sterntours.de` bauen, die Daten aus der bestehenden Tabelle anzeigt. + - b) Schreib-Operationen parallel einbauen (Dual-Write-Modus: Legacy + neu), solange beide laufen. + - c) Schreib-Rechte im Legacy-Admin entziehen, sobald die neue UI stabil ist. + - d) Legacy-Admin vollständig deaktivieren (Routing/Login weg). +5. **Integrationstests pro Funktion** (zwingend, da sonst Modul 8 erneut entsteht). + +### 9.3 Reihenfolge-Empfehlung innerhalb C1 + +1. Fewo-Lodging-CRUD (niedriges Risiko, häufigste Aufgabe). +2. Fewo-Preise + Saisons (mittel, zentral für Buchungen). +3. Fewo-Reservierungen (hohes Risiko — muss mit Modul 8 zusammen gedacht werden). +4. Fewo-Booking-Requests + Bilder. + +**Aufwand:** ~8–10 Wochen abhängig von Funktionsumfang. +**Abhängigkeiten:** Modul 1 (UI), Modul 2.8 (Queue) optional, eng mit Modul 8. + +--- + +## 10. Modul 10 — Navigation & Page-Modell refactoren (Block C2) + +**Briefing:** +- „Im System, gerade in Fronten `sterntours.de/src/AppBundle/Listener/KernelControllerListener.php`, ist die Struktur der Navigation und der des Seitenbaums sehr eigenwillig und muss verbessert und optimiert werden. `mein.sterntours.de/app/Models/Page.php` — alles liegt in dieser Page-Tabelle und ist sehr schlecht wartbar und undurchschaubar. Hier muss ein deutlich cleaneres Konzept her." +- `https://mein.sterntours.test/navigation-api` ist als Ansatz vorhanden, aber noch nicht gut. + +### 10.1 Ist-Zustand (aus navigation.md / frontend-navigation/) + +- Ein Symfony `KernelControllerListener` übernimmt Routing-Entscheidungen basierend auf `Page.realUrlPath` / Slug-Traversierung / hartkodierten Redirects / Template-Namen. +- Alles liegt in **einer** Tabelle `page`, die sowohl Inhalte, Reiseprogramme, Fewo-Zuordnungen, Länder, News, Reiseführer referenziert. +- Nested-Set-Logik (`lft`/`rgt`/`lvl`) ist unzuverlässig; derzeit wird sie im Listener bewusst umgangen. +- Es existiert eine Backend-UI unter `/navigation-api`, aber sie ist read-only und deckt das Frontend-Mental-Modell nicht sauber ab. + +### 10.2 Zielbild (Vorschlag) + +Trennung in klar benannte Entitäten: + +``` +pages — generische Inhaltsseiten (CMS-Content) +menu_items — reine Navigationsknoten (Titel, Link, Sortierung, parent_id) +routes/redirects — URL-Routing (Slug → Ziel-Entität) inkl. 301-Redirects +content_types — Polymorphe Zuordnung: menu_item → [Page | TravelProgram | FewoLodging | Country | News | TravelGuide | ...] +``` + +- `menu_items` ist der **einzige** Baum (adjacency list, evtl. mit `nested-set`-Paket gepflegt). +- Jede `menu_item` hat einen `linkable_type` + `linkable_id` (Polymorphie) — so wird klar, was hinter einem Link steht, und das Model `Page` ist nicht mehr das Mega-Modell. +- `routes`-Tabelle auflöst Slug → `linkable`, ersetzt `realUrlPath`-Suche. + +### 10.3 Teilschritte + +1. **Konzept-Doku** mit allen Alt-Datenfeldern in `page` und Zielzuordnung (welche bleiben auf `pages`, welche wandern auf `menu_items`, welche werden zu polymorphen Zielen). +2. **Neue Tabellen aufbauen (migrativ):** `menu_items`, `routes`, optionale `redirects`. +3. **Datenmigration:** `page` → `menu_items` + `pages` + `routes` (alles ableitbar; kein Datenverlust). +4. **Laravel-Route-Driver bauen** (für Backend- und API-Lookups). +5. **Symfony-Frontend anpassen:** + - `KernelControllerListener` nutzt eine neue Lookup-API (`GET /api/routes/resolve?path=/foo/bar`) aus `mein.sterntours.de`. + - Legacy-Queries auf `page`-Tabelle entfallen dort. +6. **Neue Backend-UI** unter `/navigation` (nicht mehr `/navigation-api` read-only): + - Drag&Drop-Tree. + - Inline-Edit für Titel / Slug / Sichtbarkeit. + - „Was ist hier verlinkt?" — direkter Sprung zum Content-Editor der Zielentität. + - Live-Preview-Link ins Frontend. +7. **Redirect-Verwaltung** als eigene UI (statt hartkodierter Liste im Listener). +8. **Cache-Strategie** (Events: `RouteChanged` → Cache-Invalidierung; kein manuelles „Cache leeren"-Button mehr als primärer Weg). + +**Aufwand:** ~6–8 Wochen. +**Abhängigkeiten:** Modul 1 (UI-Pattern). Muss vor Modul 11 (CMS-Vereinheitlichung) stehen, damit CMS-Inhalte auf das neue Model angedockt werden. + +--- + +## 11. Modul 11 — CMS-Vereinheitlichung (Block C3) + +**Briefing:** Es existieren CMS-Ansätze unter `/cms/feedback`, `/cms/fewo/content`, `/cms/travel_guide/content`, `/iq/content/tree/index`, `/cms/news`, `/cms/answer_question`, `/cms/sidebar`, `/cms/content/infos`, `/cms/content/all`. „Die Einzelmodule können so bleiben. Es muss nur klarer in der Benutzerführung werden und auch aus der Hauptnavigation erreichbar sein und deutlich sein, wo was hingehört." + +### 11.1 Teilschritte + +1. **Inventar:** Jede dieser Routen inhaltlich beschreiben (Was wird gepflegt? Für welchen Frontend-Bereich?). +2. **Dachstruktur:** Eine neue Haupt-Menü-Gruppe „Inhalte / CMS" im Seitenmenü mit Unterpunkten, die klar benannt sind (nicht mehr `/cms/content/infos` vs. `/cms/content/all`). +3. **Landing-Page** `/content` als Dashboard mit Kacheln pro Bereich + Kurzbeschreibung („Was pflegst du hier?"). +4. **Konsistente Listen-/Edit-Views** (Baseline). +5. **Verknüpfung mit Navigation (Modul 10):** Aus der Navigations-UI direkt in den passenden CMS-Bereich springen („Inhalt dieser Seite bearbeiten"). +6. **Berechtigungen vereinheitlichen:** Jedes CMS-Submodul hat eine eigene Permission (`cms.feedback`, `cms.news`, …); aktuell ist das teilweise inkonsistent. +7. **Nicht ändern:** Die Einzellogik der Module (Datenmodelle bleiben). Nur UI / Dachnavigation / Permissions / Benennung. + +**Aufwand:** ~3 Wochen. +**Abhängigkeiten:** Modul 1, Modul 10 (für Verknüpfungen), Modul 3 (nur inhaltlich, keine Abhängigkeit in der Umsetzung). + +--- + +## 12. Modul 12 — Migration Reiseverwaltung v2.stern-tours.de (Block C4, größtes Einzelmodul) + +**Briefing:** „Jetzt kommt noch ein sehr großer Punkt: `v2.stern-tours.de/application/controllers/acp`. Hier werden Reisen angelegt und auch die Reisezeiträume verwaltet. Dieses ist mittlerweile absolut veraltet und auch fehleranfällig. Ein großes neues Modul wird es sein, dieses auf `mein.sterntours.de` zu migrieren — d. h. der komplette Funktionsumfang muss in das Backend einentwickelt und benutzerfreundlich gemacht werden, sowie müssen die gesamten Skripte etc. deutlich optimiert werden." + +### 12.1 Umfang (grob aus Controller-Ordner) + +``` +aegypten_api flight_period travel_country travel_insurance +catalog keyword travel_departure_point travel_option +feedback newsletter travel_destination travel_organizer +travel_arrival_point page travel_discount travel_period +travel_category travel_program travel_period_date travel_period_price +travel_class travel_program_image travel_setting travel_general_notes +wiki welcome +``` + +Das sind ~25 Entitäten / Verwaltungsbereiche. Viele hängen miteinander zusammen (Program ↔ Period ↔ PeriodDate ↔ PeriodPrice). + +### 12.2 Grundstrategie (Entscheidung Abschnitt 17.6) + +- **Stück für Stück**, nicht Big Bang. +- Pro Teil-Entität wird die **Datenstruktur überarbeitet und bereinigt** — d. h. sinnvolle Umbauten werden _mitgemacht_, nicht auf später verschoben (1:1-Portierung wäre zu teuer in Nachpflege). +- Während der Migration läuft das Altsystem auf dem Live-Server **weiter** (Parallelbetrieb, Entscheidung Abschnitt 17.8). Jedes fertig migrierte Teil-Modul übernimmt _sofort_ die Hoheit (Schreibrechte), das Altsystem geht für diesen Bereich auf Read-only bzw. Redirect ins neue Backend. +- **Teil-Migration auf Live** ist ausdrücklich vorgesehen: einzelne Entitäten dürfen produktiv auf das neue System umziehen, während andere noch in v2 bleiben. Voraussetzung: bidirektionale Datensicht (View oder Sync) für alle übergreifenden Reports. + +### 12.3 Teilschritte (hohes Level — jedes Teil-Modul wird wie ein eigenes Mini-Projekt geführt) + +1. **Inventar & Datenmodell-Review:** Pro Entität — Tabellen, Felder, Beziehungen, heute existierende Fehler / Sonderfälle. +2. **Entscheidung pro Tabelle:** Welche Felder bleiben, welche werden umbenannt, welche Tabellen werden zusammengeführt, welche Indizes fehlen. Dokumentiert als kurzes Delta-Dokument pro Entität, bevor die Migration geschrieben wird. +3. **Abhängigkeitsgraph** der Entitäten bauen → Migrationsreihenfolge ableiten. +4. **Schrittweise Migration — empfohlene Reihenfolge:** + - **Stammdaten zuerst** (wenige Abhängigkeiten, einfache CRUD): `travel_country`, `travel_class`, `travel_category`, `travel_organizer`, `travel_departure_point` (+ holiday), `travel_arrival_point`, `travel_destination`, `travel_general_notes`, `travel_insurance` + `travel_insurance_price`, `flight_period`, `travel_option`, `travel_discount`, `travel_setting`, `keyword`. + - **Reiseprogramme:** `travel_program`, `travel_program_image`, `catalog`, `page`-Zuordnungen (hängt mit Modul 10 zusammen). + - **Reisezeiträume:** `travel_period`, `travel_period_date`, `travel_period_price`, `travel_period_price_type` (eng verwoben, gemeinsam migrieren). + - **Sonderfälle / Rand:** `aegypten_api`, `newsletter`, `feedback`, `wiki`, `welcome` (Dashboard). +5. **Pro Teil-Modul:** + - Datenstruktur als Laravel-Migration (mit Rückwärtskompatibilität). + - Model + Repository + Service. + - UI auf Baseline (Listen + Edit). + - Integrationstests. + - Dual-Write während Übergang, bis das Altsystem lesefrei / abgeschaltet ist. +6. **Performance-/Query-Audit:** Laut Briefing „Skripte deutlich optimiert werden". Hier typische Ursachen angehen — N+1-Queries, fehlende Indizes, fehlende Eager Loads, zu viele JOINs in CI-Reports. +7. **Preis-Engine:** Der kritischste Teil. Alle Preisberechnungen (Programm + Periode + Rabatte + Versicherung + Optionen) müssen in **einem** Service gekapselt werden. Dieser wird dann von: + - Modul 6 (Angebote) — für `offer_items`, + - Modul 4 (Direktbuchung) — für Buchungspreise, + - Der Web-Buchungs-API, + - Dem aktuell laufenden Altsystem (während Parallelbetrieb) + genutzt. **Vermeidet eine Neuauflage des heutigen Preischaos.** +8. **Frontend-Adapter:** `sterntours.de` muss zur Anzeige (Preise, Abfahrten) dieselben Daten bekommen. Entweder API-Call ins neue Laravel oder View-Layer in DB, bis das Frontend gegen die neue Quelle läuft. +9. **Abschaltung v2:** Erst wenn alle Datenflüsse migriert sind, Legacy-Read-Zugriffe eliminiert und das Frontend gegen die neue Quelle läuft. + +**Aufwand:** ~14–20 Wochen. Durch die Entscheidung „Stück für Stück mit Überarbeitung/Bereinigung" (Abschnitt 17.6) eher am oberen Ende, dafür am Ende kein technischer Schuldenberg. +**Abhängigkeiten:** Modul 1 (UI), Modul 2 (Tooling/Tests), Modul 10 (Navigation, weil `travel_program` → `menu_items` verlinkt werden). + +--- + +## 13. Modul 13 — Betrieb, Tests, Monitoring (Block D1) + +Begleitendes Querschnittsmodul. + +### 13.1 Teilschritte + +1. **Test-Strategie:** + - Pro neues Modul: Unit-Tests für Services, Feature-Tests für kritische Flows (Direktbuchung, Angebot → Buchung, Fewo-Belegung). + - Contract-Tests für alle öffentlichen APIs (Booking-Import, Navigation-API). +2. **CI-Pipeline** (Gitlab/GitHub Actions): Pint, Larastan, PHPUnit, optional Dusk für die wichtigsten Flows. +3. **Queue-Monitoring:** Horizon (wenn Redis) oder Log-Channel + Alert bei Failed Jobs. +4. **Error-Tracking:** Sentry / Flare / Bugsnag (eines davon auswählen). +5. **Deployment-Pipeline:** Entweder Deployer/Envoyer-basiert oder Docker-Build; Maintenance-Mode-Script, Migrations- und Cache-Steps dokumentiert. +6. **Rollback-Pläne** pro Migration (ist in Modul 3 bereits vorbildlich gemacht — Standard für alle neuen Module). + +**Aufwand:** laufend, ca. 4 Wochen verteilt über das Gesamtprojekt. + +--- + +## 14. Modul 14 — Framework- & Sprach-Upgrade (Block D2) + +Nicht sofort, aber einplanen: + +- **Laravel 10 → 11 Upgrade-Pfad:** separater Branch, nach Abschluss von Block A + Teilen B. Nicht während aktiver Alt-Migration (Modul 12). +- **PHP 8.3** in Docker/CI festschreiben, aus `composer.json` die Obergrenze anheben. +- **`jenssegers/date`** entfernen, überall Carbon. +- Composer-Pakete konsolidieren (siehe `projekt-empfehlungen-2026-04.md` §2.3). + +**Aufwand:** ~2 Wochen. + +--- + +## 15. Modul 15 — Kundenportal / Kunden-Login (Zukunftsmodul, Block E) + +**Briefing (Ergänzung aus den Antworten):** „Ein weiteres Modul für die Zukunft bitte mit aufnehmen: einen Kunden-Login, so dass die Kunden Zugang haben zu ihren eigenen Buchungen und Übersichten." + +### 15.1 Ziel + +Ein öffentlich erreichbarer, eingeschränkter Kunden-Bereich, in dem sich ein Kontakt mit seiner E-Mail-Adresse anmelden und seine eigenen Daten / Anfragen / Angebote / Buchungen einsehen kann. Klar abgegrenzt vom Mitarbeiter-Backend. + +### 15.2 Datenmodell + +- **Kein separates `users`-Model** für Kunden — Auth wird an `contacts` aufgehängt, Erweiterung: + +```sql +ALTER TABLE contacts + ADD COLUMN password VARCHAR NULL, + ADD COLUMN remember_token VARCHAR(100) NULL, + ADD COLUMN email_verified_at DATETIME NULL, + ADD COLUMN portal_enabled TINYINT(1) DEFAULT 0, + ADD COLUMN last_login_at DATETIME NULL; + +CREATE TABLE customer_sessions ( + id, contact_id, ip, user_agent, last_active_at, created_at, expires_at +); +``` + +- Laravel-Auth-Guard `customer` (eigener Guard neben dem Mitarbeiter-Guard `web`). + +### 15.3 Teilschritte + +1. **Registrierung / Erstanmeldung:** + - Kunde erhält Einladung per Mail (Reiseunterlagen / Buchungsbestätigung enthalten einen „Zugang einrichten"-Link). + - Alternativ: „Passwort setzen" via E-Mail-Verifizierung ausgehend von einer bestehenden Mail-Adresse im `contacts`-Datensatz. + - Kein Self-Signup ohne bestehenden Kontakt — Datenbereinigung würde sonst erneut leiden. +2. **Login / Passwort-Reset / 2FA optional.** +3. **Portal-Views (auf `sterntours.de` oder Subdomain `mein.sterntours.de/portal` — Architekturentscheidung noch offen):** + - Dashboard („Ihre nächste Reise in X Tagen"). + - Meine Anfragen. + - **Meine Angebote** (Integration mit Modul 6: eingeloggter Kunde sieht dort dieselben Dokumente wie über den Token-Link, zusätzlich historische Angebote). + - Meine Buchungen (Dokumente, Zahlungsstand, Reiseunterlagen). + - Meine Daten (Adresse, Einwilligungen, Newsletter-Status). +4. **Datenschutz / DSGVO:** + - Nur eigene Daten sichtbar (strenge Scope-Checks in Controllern + Policies). + - Download der eigenen Daten als Export (Art. 15 DSGVO). + - Lösch-Anfrage-Flow (verknüpft mit dem `deleted_at`-Flow aus Modul 3). +5. **Integration mit Token-Links (Modul 6):** + - Ein Token-Link funktioniert weiterhin ohne Login. + - Ist der Kunde eingeloggt und klickt den Link, wird das Angebot in das Portal-Layout eingebettet (nicht doppelte Darstellung). +6. **Permissions & Sicherheit:** + - Separate Passport-Scopes für Portal-API. + - Rate-Limiting auf Login-Endpunkte. + - Audit-Log (wer hat wann was eingesehen) — wichtig bei Angebotsannahmen im Portal. +7. **UI:** Kein Teil der Mitarbeiter-UI-Baseline (andere Zielgruppe). Eigenes, leichtes Layout (Bootstrap 5), das zum `sterntours.de`-Look passt. + +### 15.4 Abhängigkeiten + +- Modul 3 Phase 2 (`contacts`-Tabelle) ist **zwingende** Voraussetzung — sonst liegen die Kundenlogins auf der alten `customer`-Tabelle. +- Modul 6 (Angebote) sollte mindestens Grundstand haben, damit Portal-Angebotsansicht sinnvoll Inhalt bekommt. +- Profitiert stark von Modul 2.8 (Queue) für Einladungs-/Benachrichtigungsmails. + +### 15.5 Einordnung in die Roadmap + +- **Nicht Teil der ersten Welle.** Frühester sinnvoller Start: nach Abschluss von Modul 6 + Modul 3 Phase 4. +- Entspricht einem eigenen Block „E — Kundenseitige Self-Service-Funktionen" und kann zeitlich mit Modul 14 (Framework-Upgrade) parallel laufen, wenn Kapazität da ist. + +**Aufwand:** ~6–8 Wochen für MVP (Login + Angebote + Buchungen + Daten), plus 2–3 Wochen für DSGVO-/Self-Service-Funktionen. + +--- + +## 16. Zusammenfassung — empfohlene Reihenfolge und Parallelisierung + +``` +Monat 1–2 A1 UI-Baseline + A2 Technik-Hausaufgaben (+ Start A3 Phase 2) + + Frontend-Migration Vite/dart-sass/Bootstrap 5 (Modul 1.4) parallel +Monat 2–3 A3 Customer/Lead/Booking Phasen 2+3 abschließen +Monat 3 A3 Phase 4 + B4 Fewo-Doppelbuchung (Turnustag-Logik) parallel +Monat 4 B1 Direktbuchung (mit Mail-Toggle) + B2 Organisation-Tab +Monat 4–5 B3 E-Mail-Auto-Save (nach A3 P4) +Monat 5–7 B5 Angebots-Modul (inkl. Versionierung + Freigabe-Link) +Monat 6–9 C1 Admin-Migration sterntours.de (zügig, kein harter Cut) +Monat 7–9 C2 Navigation + C3 CMS-Vereinheitlichung +Monat 8–16 C4 v2.stern-tours.de Reisenverwaltung — Stück für Stück mit + Teil-Migration auf Live und Parallelbetrieb +Monat ≥10 E1 Kundenportal / Kunden-Login (frühestens nach B5 + A3 P4) +Laufend D1 Betrieb/Tests, D2 Framework-Upgrade gegen Ende +``` + +Einige Module können parallelisiert werden, wenn Kapazität vorhanden ist. Kritischer Pfad: **A1 → A3 → B5 → C4**. Modul 15 (Portal) liegt off-path und kann flexibel eingeordnet werden. + +--- + +## 17. Entscheidungen (geklärt) + +Die acht zuvor offenen Fragen wurden vom Auftraggeber beantwortet. Die Entscheidungen sind in den jeweiligen Modulen bereits eingearbeitet; hier die konsolidierte Referenz: + +| # | Thema | Entscheidung | Fundstelle im Plan | +|---|-------|-------------|--------------------| +| 17.1 | **Angebots-Versionen** | Jede Änderung nach dem Versand erzeugt eine neue Version (V2, V3 …). Speicheroptimierung durch spätere Archivierung/Löschung alter Versionen. | Modul 6.2 (`offer_versions`), 6.3.6 (Versionierung), 6.4 (Archivstrategie) | +| 17.2 | **Angebots-Annahme** | Beides: Admin-seitige Statusänderung **und** kundenseitiger Freigabe-Link (Token-URL) mit Bestätigungsseite. | Modul 6.3.8 (`offer_access_tokens`, `/angebot/{token}`) | +| 17.2b | **Kundenportal** | Neues Zukunftsmodul (Modul 15): Kunden-Login mit Zugang zu eigenen Buchungen/Angeboten/Daten. | Modul 15 | +| 17.3 | **Angebots-Dokumente** | Dual-Modell analog zur heutigen Buchungs-Logik in `app/Http/Controllers/BookingController.php`: zentral hinterlegte Dokumente + freie Uploads pro Angebot. | Modul 6.3.4 | +| 17.4 | **Direktbuchung im Backend** | Gesonderter Einstieg mit Auswahl im letzten Schritt: „Anlegen & Bestätigung senden" **oder** „Nur anlegen (keine Mail)". Nachversand bleibt jederzeit manuell möglich. | Modul 4.2.6 | +| 17.5 | **Fewo-Überlappungen** | Kein harter DB-Constraint. Überlappungen werden im `FewoReservationService` nach klaren Turnustag-Regeln geprüft (An-/Abreise am selben Tag legitim). | Modul 8.2.5 | +| 17.6 | **v2-Migrationsstrategie** | Stück für Stück mit Überarbeitung und Bereinigung (keine 1:1-Portierung). | Modul 12.2 | +| 17.7 | **Frontend-Tooling** | Vite + dart-sass + schrittweise Bootstrap 5. Freigegeben. | Modul 1.4 | +| 17.8 | **Abschaltplan Altsysteme** | Parallelbetrieb, bis Migration abgeschlossen. `sterntours.de/AdminController` zügig migrieren (Modul 9). `v2.stern-tours.de` mit Teil-Migrationen auf dem Live-Server, damit der Betrieb ununterbrochen weiterläuft. | Modul 12.2 | + +### Direkt daraus folgende neue Bausteine + +- **Neue Tabellen:** `offer_versions`, `offer_access_tokens` (Modul 6). +- **Neue Routen (öffentlich):** `/angebot/{token}`, `/angebot/{token}/accept`, `/angebot/{token}/decline` auf `sterntours.de` bzw. Subdomain. +- **Neues Modul 15:** Kundenportal / Kunden-Login (eigener Block E, Zukunftsmodul). +- **Neue Service-Klasse:** `FewoReservationService` mit Turnustag-Logik (Modul 8). +- **Neue UI-Komponente:** Belegungskalender mit Wechseltag-Markierung (Modul 8.2.7). +- **Direktbuchungs-Flag:** `silent_created` auf `bookings` (Modul 4). + +--- + +## 18. Nächste konkrete Schritte (Start der Entwicklung) + +Nach dieser Abstimmung kann die Entwicklung starten. Sinnvolle erste Arbeitspakete, jeweils als eigene PRs / Tickets: + +1. **A2 Quick Wins** (sofort, blockiert nichts): + - Composer-Wildcards pinnen. + - `navigation/cache/clear` absichern. + - `booking/import` auf POST-only. + - Pint + Larastan + CI aufsetzen. +2. **A3 Phase 1 live deployen** (Customer-Deduplizierung — steht auf Test, braucht Backup + CSV-Review). +3. **A1 UI-Baseline dokumentieren** (Inventar + Baseline-Spec, ohne bereits umzubauen). +4. **Modul 1.4 Frontend-Migration** als eigener Feature-Branch starten (Vite/dart-sass/Bootstrap 5). +5. **A3 Phase 2 vorbereiten** (Code-Anpassungen `Customer::$table`, `Lead::$table`, Repositories auf `inquiry_id`). + +Schritt 1–3 können parallel angegangen werden; Schritt 4 läuft im Hintergrund, bis der Pilot-View auf der neuen Pipeline läuft. Sobald A3 Phase 2 produktiv ist, ist der Weg frei für Modul 4 (Direktbuchung) und anschließend Modul 6 (Angebote). diff --git a/dev/frontend-navigation/BACKEND-UI.md b/dev/frontend-navigation/BACKEND-UI.md new file mode 100644 index 0000000..81c0836 --- /dev/null +++ b/dev/frontend-navigation/BACKEND-UI.md @@ -0,0 +1,312 @@ +# Backend-UI für Navigation API + +Die Backend-UI bietet eine benutzerfreundliche grafische Oberfläche zur Verwaltung und Visualisierung des Navigationsbaums **genau wie im Frontend (header.html.twig)**. + +## Zugriff + +**URL:** `/navigation-api` +**Permission:** `crm-nav-api` +**Menü:** Navigation API (Seitenmenü) + +## Frontend-Struktur + +Die Backend-UI zeigt den Navigationsbaum **exakt wie im Frontend** mit allen Bereichen: + +### 🌍 Länder-Navigation + +- ✅ **Länderseiten** (Pages mit `country_id`) als Root-Level +- ✅ **Sortierung** nach `order` und `title` +- ✅ **Gruppierung** der Children nach `beforeTitle` (Haupt / Infos) +- ✅ **titleShort** wird verwendet statt vollständigem Titel +- ✅ Toggle zum Auf-/Zuklappen der Children + +### 🏠 USEDOM Ferienwohnungen + +- ✅ **Ferienwohnungs-Übersicht** als Hauptseite +- ✅ **Einzelne FeWos** als Children +- ✅ Sortiert nach `order` und `title` + +### 📑 Mehr-Menü Seiten + +- ✅ **Über uns** +- ✅ **Reiseversicherung** +- ✅ **Reiseführer** (mit möglichen Children) +- ✅ **Reisemagazin** (mit möglichen Children) +- ✅ **Reisenews** (mit möglichen Children) + +### Allgemein + +- ✅ **Ausgeblendete Pages** werden angezeigt (Badge "Ausgeblendet") +- ✅ **Section-Separators** trennen die Bereiche visuell + +## Features + +### 📊 Live-Statistiken + +Oben auf der Seite werden wichtige Kennzahlen angezeigt: + +- **Gesamt Seiten:** Alle Pages in der Datenbank +- **Aktive Seiten:** Nur sichtbare und aktive Pages +- **Reiseprogramme:** Anzahl der TravelProgram-Pages +- **Länderseiten:** Anzahl der Country-Pages + +Die Statistiken werden beim Laden der Seite automatisch aktualisiert. + +### 🌳 Interaktiver Navigationsbaum + +Der Hauptbereich zeigt den hierarchischen Navigationsbaum mit folgenden Features: + +#### Visuelle Darstellung + +- **Icons:** + + - ⭐ Stern (gelb) = Länderseite (Root-Level) + - ✈️ Flugzeug = Reiseprogramm + - 🏠 Haus = Ferienwohnung + - ℹ️ Info-Circle = Infos-Gruppe + - 📄 Dokument = Normale Seite + +- **Badges:** + + - 🔴 **Inaktiv** = Status ist 0 + - ⚠️ **Ausgeblendet** = show_in_navi ist 0 (wird trotzdem angezeigt!) + - 🔵 **Reiseprogramm** = Hat TravelProgram + - 💙 **FeWo** = Hat FewoLodging + - 💚 **Land** = Hat Country + - ⚪ **Gruppe: Infos** = beforeTitle ist gesetzt + +- **Hierarchie:** + + - **Root-Level:** Länderseiten (fett, grauer Hintergrund, blaue Linie links) + - **Children:** Eingerückt, normale Darstellung + - **Separator "Infos":** Grauer Block trennt Haupt- von Info-Seiten + - Toggle-Buttons nur bei Länderseiten + +- **Besonderheiten:** + - **titleShort** wird angezeigt (wie im Frontend) + - **Gruppierung** nach beforeTitle (Haupt, dann Infos) + - **Ausgeblendete** Pages haben gelbes Badge aber sind sichtbar + +#### Interaktion + +- **Auf-/Zuklappen:** + + - Klick auf Pfeil: Einzelnen Knoten auf-/zuklappen + - "Alle aufklappen": Zeigt kompletten Baum + - "Alle zuklappen": Zeigt nur Root-Ebene + +- **Hover-Effekt:** + - Hintergrund wird grau beim Überfahren mit der Maus + +### 🔍 Suche + +Die Suchfunktion durchsucht alle Navigationspunkte nach: + +- **Titel:** Page-Titel +- **Slug:** URL-freundlicher Name +- **URL:** Vollständiger Pfad + +**Verwendung:** + +1. Suchbegriff eingeben +2. Enter drücken oder auf Suchbutton klicken +3. Gefundene Knoten werden gelb markiert +4. Parent-Knoten werden automatisch aufgeklappt + +### 🎯 Filter + +**"Mit ausgeblendeten" / "Nur sichtbare"** + +- **Mit ausgeblendeten (Standard):** Zeigt alle Pages inkl. ausgeblendete (show_in_navi=0) +- **Nur sichtbare:** Zeigt nur Pages mit show_in_navi=1 (wie im Frontend) + +Der aktive Filter wird durch die Button-Farbe angezeigt: + +- Blau = Mit ausgeblendeten +- Primär = Nur sichtbare + +Ausgeblendete Pages werden mit einem gelben Badge "Ausgeblendet" markiert. + +### 📥 Export + +**JSON-Export-Funktion:** + +- Klick auf "Export JSON" lädt eine JSON-Datei herunter +- Dateiname: `navigation-tree-YYYY-MM-DD-HHMMSS.json` +- Inhalt: Kompletter Navigationsbaum entsprechend aktuellem Filter +- Format: Pretty-printed JSON mit UTF-8 Encoding + +**Verwendungszwecke:** + +- Backup der Navigationsstruktur +- Import in andere Systeme +- Analyse und Dokumentation +- Debugging + +### 🔄 Cache-Verwaltung + +**Cache leeren:** + +- Klick auf "Cache leeren" +- Bestätigung erforderlich +- Löscht alle gecachten Navigationsdaten +- Wird automatisch nach 60 Minuten erneuert + +**Wann Cache leeren?** + +- Nach Änderungen an Pages +- Nach Import/Export von Daten +- Bei veralteten Anzeigen +- Nach Struktur-Änderungen + +## Technische Details + +### API-Calls + +Die UI nutzt folgende Endpunkte: + +```javascript +// Statistiken laden +GET /navigation-api/stats + +// Navigationsbaum laden (Frontend-Struktur) +GET /navigation-api/data?include_hidden=0|1 + +// Suche durchführen +GET /navigation-api/search?query=... + +// Export starten (Frontend-Struktur) +GET /navigation-api/export?include_hidden=0|1 + +// Cache leeren +POST /navigation-api/clear-cache +``` + +**Unterschied zu API-Endpunkten:** + +- `/api/navigation/*` = Kompletter Baum (API) +- `/navigation-api/*` = Frontend-Struktur (nur Länderseiten) + +### Performance + +- **Caching:** 60 Minuten Server-seitig +- **Lazy Loading:** Kinder werden nur bei Bedarf gerendert +- **Optimierte Queries:** Eager Loading von Relationships +- **Frontend-Rendering:** jQuery-basiert, schnell auch bei 1000+ Knoten + +### Browser-Kompatibilität + +- ✅ Chrome/Edge (aktuell) +- ✅ Firefox (aktuell) +- ✅ Safari (aktuell) +- ⚠️ IE11 (eingeschränkt) + +## Styling + +### Farben + +- **Primary (Blau):** Reiseprogramme, aktive Aktionen +- **Success (Grün):** Aktive Pages, Länder +- **Info (Cyan):** Ferienwohnungen +- **Warning (Gelb):** "Nicht in Navi", Suchmarkierungen +- **Danger (Rot):** Inaktive Pages, Löschen-Aktionen + +### Responsive Design + +Die UI ist responsive und funktioniert auf verschiedenen Bildschirmgrößen: + +- **Desktop (>1200px):** Volle Features, 4 Statistik-Karten +- **Tablet (768-1199px):** 2 Statistik-Karten pro Zeile +- **Mobile (<768px):** 1 Statistik-Karte pro Zeile, vereinfachte Toolbar + +## Shortcuts + +Keine Keyboard-Shortcuts implementiert (noch). + +## Bekannte Einschränkungen + +1. **Sehr große Bäume (>10.000 Knoten):** + + - Kann zu langsamem Rendering führen + - Empfehlung: Filter verwenden + +2. **Suche:** + + - Nur client-seitig, keine Server-Suche + - Bei vielen Ergebnissen kann es unübersichtlich werden + +3. **Keine Bearbeitung:** + - Nur Anzeige, keine Inline-Bearbeitung + - Änderungen müssen über CMS erfolgen + +## Zukünftige Erweiterungen + +Mögliche Features für die Zukunft: + +- [ ] Drag & Drop zum Verschieben von Knoten +- [ ] Inline-Bearbeitung von Titeln +- [ ] Bulk-Operationen (Status ändern, löschen, etc.) +- [ ] Mehr Filter-Optionen (Template, Level, etc.) +- [ ] Keyboard-Shortcuts +- [ ] Pagination für sehr große Bäume +- [ ] Graphische Visualisierung (D3.js Tree) +- [ ] Breadcrumb-Anzeige für selektierten Knoten +- [ ] Export in andere Formate (CSV, XML) + +## Troubleshooting + +### Problem: Baum lädt nicht + +**Lösung:** + +1. Browser-Konsole öffnen (F12) +2. Fehler prüfen +3. Netzwerk-Tab prüfen: Status-Code der API-Calls +4. Backend-Logs prüfen + +### Problem: Statistiken zeigen "-" + +**Lösung:** + +1. API-Endpunkt `/navigation-api/stats` prüfen +2. Browser-Konsole auf Fehler prüfen +3. Permission `crm-tp-na` prüfen + +### Problem: Cache wird nicht geleert + +**Lösung:** + +1. CSRF-Token prüfen +2. POST-Request erfolgreich? (Netzwerk-Tab) +3. Server-Logs prüfen +4. Cache-System aktiv? (config/cache.php) + +### Problem: Suche funktioniert nicht + +**Lösung:** + +1. JavaScript-Fehler in Konsole? +2. jQuery geladen? +3. Suchbegriff korrekt eingegeben? + +## Support + +Bei Problemen oder Fragen: + +1. Dokumentation lesen: `dev/frontend-navigation/README.md` +2. API-Dokumentation: `dev/frontend-navigation/navigation-api.md` +3. Test-Tools verwenden: `dev/frontend-navigation/test-api.html` + +## Changelog + +### Version 1.0 (Initial Release) + +- ✅ Navigationsbaum-Visualisierung +- ✅ Live-Statistiken +- ✅ Suche +- ✅ Filter (Alle/Aktive) +- ✅ Export (JSON) +- ✅ Cache-Verwaltung +- ✅ Responsive Design +- ✅ Icon-basierte Typerkennung +- ✅ Badge-System für Status diff --git a/dev/frontend-navigation/KernelControllerListener.php b/dev/frontend-navigation/KernelControllerListener.php new file mode 100644 index 0000000..fd7e0d1 --- /dev/null +++ b/dev/frontend-navigation/KernelControllerListener.php @@ -0,0 +1,256 @@ + + * @date 12/02/2016 + */ + +namespace AppBundle\Listener; + + +use AppBundle\AppBundle; +use AppBundle\Controller\DefaultController; +use AppBundle\Entity\Page; +use AppBundle\Util; +use Doctrine\ORM\EntityManager; +use Doctrine\ORM\PersistentCollection; +use Symfony\Bundle\FrameworkBundle\Routing\Router; +use Symfony\Component\HttpFoundation\RedirectResponse; +use Symfony\Component\HttpFoundation\Session\Session; +use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface; +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\Exception\HttpException; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; + +class KernelControllerListener +{ + private $em; + private $controllerResolver; + + public function __construct(EntityManager $entityManager, ControllerResolverInterface $controllerResolver) + { + $this->em = $entityManager; + $this->controllerResolver = $controllerResolver; + } + + private function setSessionAttributeByTime($request, $key) + { + + $session = $request->getSession(); + $session->set('_open_side_about', ''); + $session->set('_open_side_search', ''); + + if ($key === 'default') { //is default visit + if (!$session->get('default_visit')) { //first visit + $session->set('default_visit', true); + $session->set('_open_side_about', 'open'); + $session->set('_open_side_search', 'open'); + } + } + + if ($key === 'api') { //is api = Reiseführer + if (!$session->get('api_visit')) { //first visit + $session->set('api_visit', true); + $session->set('_open_side_about', 'open'); + } + } + } + public function onKernelController(FilterControllerEvent $event) + { + $request = $event->getRequest(); + + $session = $request->getSession(); + Util::setMySession('search_request_b', $session->get('search_request_b')); + Util::setMySession('search_request_e', $session->get('search_request_e')); + Util::setMySession('search_request_c', $session->get('search_request_c')); + + if ($request->get('_controller') === 'AppBundle\Controller\DefaultController::homeAction') { + $this->setSessionAttributeByTime($request, "default"); + } + if ($request->get('_controller') == 'AppBundle\Controller\DefaultController::defaultAction') { + + $repo = $this->em->getRepository('AppBundle:Page'); + $path = preg_replace('/^\/?(.*?)\/?$/', '$1', $request->getPathInfo()); + /** @var Page $node */ + $node = null; + + // Try to find by url path. It's possible that the path consists of two parts: + // - the beginning part represents a node + // - the ending part represents a handler + // e.g. /path/to/travel/program/buchen ("buchen" is the handler part) + $pathArray = explode('/', $path); + $restOfPath = ''; + $curPath = $path; + //search for entry in new tree objects + $api = Util::loadFromApi('cms/search', ['url' => $curPath]); + while (!empty($pathArray)) { + if (!$api) { + $node = $repo->findOneBy(['realUrlPath' => '/' . $curPath]); + if ($node) { + break; + } + } + $restOfPath = '/' . array_pop($pathArray) . $restOfPath; + $curPath = implode('/', $pathArray); + } + //find and try 301 + //find => to + $redirects = [ + '/reisefuehrer/tuerkei' => 'tuerkei-reisen/reisefuehrer', + '/reisefuehrer/jordanien' => 'jordanien-reisen/reisefuehrer', + '/reisefuehrer/oman' => 'oman-reisen/reisefuehrer', + '/reisefuehrer/israel' => 'israel-reisen/israel-reisefuehrer', + '/reisefuehrer/aegypten' => 'aegypten-reisen/aegypten-reisefuehrer', + '/reisemagazin/tuerkei-reisemagazin' => 'tuerkei-reisen/tuerkei-reisemagazin', + '/reisemagazin/aegypten' => 'aegypten-reisen/aegypten-reisemagazin', + '/reisemagazin/israel' => 'israel-reisen/israel-reisemagazin', + '/reisemagazin/jordanien' => 'jordanien-reisen/jordanien-reisemagazin', + '/reisemagazin/marokko' => 'marokko-urlaub/marokko-reisemagazin' + + ]; + //301 + foreach ($redirects as $find => $to) { + if (strpos($restOfPath, $find) !== false) { + $restOfPath = str_replace($find, $to, $restOfPath); + $protocol = 'https'; + if (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] === "off") { + $protocol = 'http'; + } + header("Location: " . $protocol . "://" . $_SERVER["HTTP_HOST"] . "/" . $restOfPath, true, 301); + exit(); + } + } + //load content from API, is found by cms/search + + if ($api) { + $this->setSessionAttributeByTime($request, "api"); + $request->attributes->set('_controller', 'AppBundle:Cms:iqTravelGuide'); + $request->attributes->set('api', $api); + $request->attributes->set('template', 'TravelGuide'); + try { + $controller = $this->controllerResolver->getController($request); + } catch (\LogicException $e) { + // If there is no controller action, call the default action and pass the template name + $request->attributes->set('_controller', 'AppBundle:Cms:Default'); + $request->attributes->set('template', "Default"); + } + $event->setController($controller ?? $this->controllerResolver->getController($request)); + return; + } + $this->setSessionAttributeByTime($request, "default"); + + if (!$node) { + // Now try to find a page by tracing a page node path using the page nodes' slugs + + $pathArray = explode('/', $path); + + while (!empty($pathArray)) { + $restOfPath = '/' . implode('/', $pathArray); + $slug = array_shift($pathArray); + + $qb = $repo->createQueryBuilder('p'); + + $qb->where($qb->expr()->eq('p.slug', ':slug')); + $qb->setParameter('slug', $slug); + + if ($node != null) { + $qb->andWhere($qb->expr()->eq('p.parent', ':parentId')); + $qb->setParameter('parentId', $node->getId()); + } else { + $qb->andWhere($qb->expr()->isNull('p.parent')); + } + + $qb->setMaxResults(1); + $childNode = $qb->getQuery()->getOneOrNullResult(); + if (!$childNode) { + $whitelist = [ + 'buchen', + 'berechne-gesamtpreis', + 'show_nationality_country_text', + 'pdf', + ]; + if (!in_array($slug, $whitelist)) { + throw new HttpException(404, 'Seite nicht gefunden: ' . $slug); + } + break; + } + if ($node) { + + // Avoid database calls to parent later + $childNode->setParent($node); + } + $node = $childNode; + } + if ($node && $node->getRealUrlPath() && $node->getRealUrlPath() != '/' . $path) { + // If there realUrlPath is set and the slug path differs from realUrlPath, then the slug path is + // not a valid URL. Otherwise, there would be two different URLs representing the same page. + $event->setController(function () { + throw new NotFoundHttpException('Invalid URL'); + }); + return; + } + } + if (!$node) { + // Search for a redirect entry + $redirect = $this->em->getRepository('AppBundle:Redirect')->findOneBy(['sourceUrlPath' => '/' . $path]); + if ($redirect) { + $redirectUrl = $redirect->getPage()->getUrlPath(); + $event->setController(function () use ($redirectUrl) { + return new RedirectResponse($redirectUrl, 301); + }); + return; + } + } + if ($node) { + + if ($node->getStatus() == 0) { + throw new NotFoundHttpException('Inactive page'); + } + + $request->attributes->set('page', $node); + + if ($node->getTravelProgram() != null && ( + $restOfPath == '/buchen' || $restOfPath == '/berechne-gesamtpreis' || $restOfPath == '/show_nationality_country_text')) { + // Special case: Booking actions + $request->attributes->set('travelProgramPage', $node); + $request->attributes->set('action', $restOfPath); + $request->attributes->set('_controller', 'AppBundle:Booking:index'); + } elseif ($restOfPath && $node->getTravelProgram() !== null && ( + $restOfPath === '/pdf')) { + $request->attributes->set('_controller', 'AppBundle:Cms:pdf'); + } elseif ($node->getTravelProgram() !== null) { + if ($node->getTravelProgram()->getStatus() == 0) { + throw new \NotFoundHttpException('Inactive travel program'); + } + $request->attributes->set('_controller', 'AppBundle:Cms:travelProgram'); + } elseif ( + $node->getFewoLodging() != null && + ($restOfPath === '/buchen' || $restOfPath === '/berechne-gesamtpreis') + ) { + $request->attributes->set('fewoTravelProgramPage', $node); + $request->attributes->set('action', $restOfPath); + $request->attributes->set('_controller', 'AppBundle:FewoBooking:index'); + } elseif ($node->getFewoLodging() !== null) { + $request->attributes->set('fewoLodgingPage', $node); + $request->attributes->set('action', $restOfPath); + $request->attributes->set('_controller', 'AppBundle:Cms:fewoLodging'); + } else { + $handler = $node->getTemplate() ? ucfirst($node->getTemplate()) : 'Default'; + $request->attributes->set('_controller', 'AppBundle:Cms:' . $handler); + if ($node->getTemplate()) { + try { + $controller = $this->controllerResolver->getController($request); + } catch (\LogicException $e) { + // If there is no controller action, call the default action and pass the template name + $request->attributes->set('_controller', 'AppBundle:Cms:Default'); + $request->attributes->set('template', $node->getTemplate()); + } + } + } + } else { + return; + } + $event->setController($controller ?? $this->controllerResolver->getController($request)); + } + } +} diff --git a/dev/frontend-navigation/PageRepository.php b/dev/frontend-navigation/PageRepository.php new file mode 100644 index 0000000..47e0156 --- /dev/null +++ b/dev/frontend-navigation/PageRepository.php @@ -0,0 +1,180 @@ +getChildrenQueryBuilder($page) + ->leftJoin('node.travelProgram', 'tp') + ->addSelect('tp') + ->andWhere('tp.status > 0') + ->andWhere('node.status > 0') + ->orderBy('node.order') + ->addOrderBy('tp.position') + ->addOrderBy('node.title') + ->getQuery() + ->execute(); + /** @var Page $childPage */ + foreach ($pages as &$childPage) { + if ($childPage->getTravelProgram()) { + $this->getEntityManager()->getRepository('AppBundle:TravelPeriod')->getTrueTravelPeriods( + $childPage->getTravelProgram() + ); + } + } + return $pages; + } + + public function findWithTravelProgramsOfCountry(TravelCountry $country) + { + return $this->createQueryBuilder('node') + ->innerJoin('node.travelProgram', 'tp') + ->innerJoin('tp.countries', 'c') + ->where('c.id = ' . $country->getId()) + ->andWhere('node.status = 1') + ->andWhere('tp.status = 1') + ->getQuery() + ->execute() + ; + } + + /** + * @return Page[] + */ + public function findOffers() + { + $ret = []; + $countries = $this->getEntityManager()->getRepository('AppBundle:TravelCountry')->findAll(); + foreach ($countries as $country) { + $ret = array_merge( + $ret, + $this->createQueryBuilder('node') + ->innerJoin('node.travelProgram', 'tp') + ->addSelect('tp') + ->innerJoin('tp.countries', 'c') + ->where('c.id = ' . $country->getId()) + ->andWhere('node.status = 1') + ->andWhere('tp.status = 1') + ->orderBy('node.order') + ->addOrderBy('tp.position') + ->addOrderBy('node.title') + ->setMaxResults(3) + ->getQuery() + ->execute() + ); + } + shuffle($ret); + return $ret; + } + + public function findCountryPages() + { + return $this->createQueryBuilder('node') + ->innerJoin('node.country', 'country') + ->where('node.status > 0') + ->andWhere('node.template = \'overview\'') + ->andWhere('node.lvl = 0') + ->andWhere('node.order > 0') + ->orderBy('node.order,node.title') + ->getQuery() + ->execute() + ; + } + + public function findTopCountryNavPages() + { + return $this->createQueryBuilder('node') + ->innerJoin('node.country', 'country') + ->leftJoin('node.children', 'childPage', Expr\Join::WITH, 'childPage.status > 0') + ->addSelect('childPage') + ->where('node.status > 0') + ->andWhere('node.template = \'overview\'') + ->andWhere('node.lvl = 0') + ->andWhere('node.order > 0') + ->orderBy('node.order,node.title, childPage.order, childPage.title') + ->getQuery() + ->execute() + ; + } + + public function findFeedbacks($rootPageId) + { + $qb = $this->createQueryBuilder('node'); + return $qb + ->where($qb->expr()->eq('node.parent', $rootPageId)) + ->andWhere('node.showInNavi = 1') + ->andWhere('node.status = 1') + ->orderBy('node.order') + ->getQuery() + ->execute() + ; + } + + public function findParentsWithShowNav($rootPageId) + { + + $qb = $this->createQueryBuilder('node'); + $pages = $qb->innerJoin('node.travelProgram', 'tp') + ->addSelect('tp') + ->where($qb->expr()->eq('node.parent', $rootPageId)) + ->andWhere('node.showInNavi = 1') + ->andWhere('node.status = 1') + ->andWhere('tp.status > 0') + ->orderBy('node.order') + ->getQuery() + ->execute(); + + foreach ($pages as &$childPage) { + if ($childPage->getTravelProgram()) { + // var_dump($childPage->getTravelProgram()->getId()); + // $this->getEntityManager()->getRepository('AppBundle:TravelPeriod')->getTrueTravelPeriods($childPage->getTravelProgram()); + } + } + return $pages; + } + + /** + * @param Page $page + * + * @return Page[]|\Doctrine\Common\Collections\Collection + */ + public function getSiblings(Page $page) + { + $parent = $page->getParent(); + if (!$parent) { + // On purpose, we don't treat root pages as if they were siblings + return []; + } + $siblings = $parent->getChildren(); + foreach ($siblings as &$sibling) { + $sibling->setParent($parent); + } + + // Da diese Methode nur für die Navigation verwendet wird, kann man hier vorfiltern + $filteredSiblings = []; + foreach ($siblings as &$sibling) { + if ($sibling->getStatus() == 1 && $sibling->getShowInNavi() == 1) { + $filteredSiblings[] = $sibling; + } + } + + return $filteredSiblings; + } +} diff --git a/dev/frontend-navigation/README.md b/dev/frontend-navigation/README.md new file mode 100644 index 0000000..eae68a6 --- /dev/null +++ b/dev/frontend-navigation/README.md @@ -0,0 +1,197 @@ +# Frontend Navigation - Backend API + +Dieses Verzeichnis enthält die Dokumentation und Referenzimplementierungen für die Frontend-Navigation. + +## Übersicht + +Die Navigation-API stellt die komplette Seitenstruktur des CMS als hierarchischen Baum oder flache Liste zur Verfügung. + +## Schnellstart + +### Backend-UI (Admin-Interface) + +Zugriff über: **Navigation API** im Seitenmenü (Permission: `crm-nav-api`) + +Die Backend-UI zeigt die **komplette Frontend-Navigation**: + +- 📊 Live-Statistiken (Gesamt, Aktiv, Programme, Länder) +- 🌍 **Länder-Navigation** mit Children (gruppiert nach Haupt/Infos) +- 🏠 **USEDOM Ferienwohnungen** mit allen FeWos +- 📑 **Mehr-Menü Seiten** (Über uns, Reiseversicherung, Reiseführer, Reisemagazin, Reisenews) +- 🔍 Volltext-Suche über Titel, Slug und URL +- 🌳 Interaktiver Nested Tree mit Auf-/Zuklappen +- 🎯 Filter (Mit ausgeblendeten/Nur sichtbare) +- 📥 JSON-Export +- 🔄 Cache-Verwaltung + +### API-Endpunkte + +``` +GET /api/navigation/tree - Kompletter Navigationsbaum +GET /api/navigation/tree/active - Nur aktive Navigationspunkte +GET /api/navigation/tree/{rootId} - Teilbaum ab einer bestimmten Page +GET /api/navigation/flat - Flache Liste aller Pages +GET /api/navigation/breadcrumb/{pageId} - Breadcrumb-Pfad +``` + +### Beispiel-Verwendung + +```javascript +// Kompletten Navigationsbaum abrufen +fetch("/api/navigation/tree") + .then((response) => response.json()) + .then((data) => { + console.log(data.data); // Navigationsbaum + }); +``` + +## Dateien + +- **README.md** - Diese Datei (Übersicht) +- **BACKEND-UI.md** - Dokumentation der Backend-UI (Admin-Interface) +- **navigation.md** - Dokumentation der Frontend-Routing-Logik (Symfony-basiert) +- **navigation-api.md** - Vollständige API-Dokumentation mit Beispielen +- **test-api.php** - CLI-Test-Script für alle API-Endpunkte +- **test-api.html** - Browser-basierte interaktive Test-Oberfläche +- **KernelControllerListener.php** - Referenz: Symfony KernelControllerListener +- **PageRepository.php** - Referenz: Doctrine Page Repository + +## Implementierung + +Die API wurde im Laravel-Backend implementiert: + +### Backend-Komponenten + +**API-Layer:** + +1. **API Controller:** `app/Http/Controllers/API/NavigationController.php` + + - REST API-Endpunkte + - JSON-Responses + +2. **Web Controller:** `app/Http/Controllers/NavigationTreeController.php` + + - Backend-UI (Admin-Interface) + - Daten-Export und Cache-Management + +3. **Service:** `app/Services/NavigationTreeService.php` + + - Business-Logik + - Rekursiver Baum-Aufbau + - Caching (60 Min.) + - Helper-Methoden (Breadcrumb, Node-Suche, etc.) + +4. **Model:** `app/Models/Page.php` + + - Eloquent Model für die Page-Entität + - Relationships (parent, children, travel_program, etc.) + +5. **Views:** `resources/views/navigation/index.blade.php` + + - Interaktive Baum-Visualisierung + - Suche und Filter + - Statistiken + +6. **Routes:** + - API: `routes/api.php` + - Web: `routes/web.php` (Permission: `crm-tp-na`) + +## Features + +### Navigationsbaum + +- ✅ Hierarchische Struktur mit unbegrenzter Tiefe +- ✅ Alle Page-Eigenschaften enthalten (SEO, Template, Status, etc.) +- ✅ Beziehungen zu TravelProgram, FewoLodging, Country +- ✅ Filterung nach Status und Sichtbarkeit +- ✅ Sortierung nach Order und Title + +### Zusätzliche Funktionen + +- ✅ Breadcrumb-Generierung +- ✅ Teilbaum-Abfrage +- ✅ Flache Listen-Ansicht +- ✅ Node-Zählung +- ✅ URL-Pfad-Generierung + +### Performance + +- Effiziente Queries mit Eager Loading +- Rekursive Baum-Konstruktion +- Unterstützung für Nested Set Tree (lft/rgt) +- Caching-ready + +## Datenstruktur + +Jeder Navigationspunkt enthält: + +```json +{ + "id": 1, + "title": "Seitentitel", + "slug": "seitentitel", + "url": "/seitentitel", + "status": 1, + "show_in_navi": 1, + "order": 1, + "template": "default", + "lvl": 0, + "parent_id": null, + "is_travel_program": false, + "is_fewo_lodging": false, + "is_country_page": false, + "children": [], + "has_children": false +} +``` + +Siehe `navigation-api.md` für eine vollständige Feldbeschreibung. + +## Routing-Logik (Frontend) + +Das Frontend verwendet einen `KernelControllerListener` (Symfony), der: + +1. **API-Lookup** prüft (externe Reiseführer) +2. **Datenbank-Suche** durchführt (Page-Entität) +3. **Redirects** verarbeitet (301-Weiterleitungen) +4. **Controller zuweist** basierend auf Content-Type + +Siehe `navigation.md` für Details zur Routing-Logik. + +## Unterschiede Frontend/Backend + +| Aspekt | Frontend (Symfony) | Backend (Laravel) | +| ---------- | ----------------------------- | -------------------------- | +| Framework | Symfony 2.x | Laravel 5.x | +| ORM | Doctrine | Eloquent | +| Routing | KernelControllerListener | API Routes | +| Tree-Logik | Nested Set + Parent Traversal | Parent-Child Relationships | +| API | External (IQ API) | Internal (Laravel) | + +## Wartung + +### Neue Felder hinzufügen + +1. Füge das Feld in `NavigationTreeService::buildNodeData()` hinzu +2. Aktualisiere die Dokumentation in `navigation-api.md` + +### Performance optimieren + +1. Füge Caching in `NavigationTreeService` hinzu +2. Verwende Eager Loading für Relations +3. Implementiere Pagination für große Bäume + +### Tests + +Empfohlene Tests: + +- Unit Tests für `NavigationTreeService` +- API Tests für alle Endpunkte +- Performance Tests für große Navigationsbäume + +## Support + +Bei Fragen zur API siehe: + +- `navigation-api.md` - Vollständige API-Dokumentation +- `navigation.md` - Frontend Routing-Dokumentation diff --git a/dev/frontend-navigation/header.html.twig b/dev/frontend-navigation/header.html.twig new file mode 100644 index 0000000..c4c3675 --- /dev/null +++ b/dev/frontend-navigation/header.html.twig @@ -0,0 +1,325 @@ +
+
+ {% if content.info.office_important_note_active == 1 %} + + {% endif %} + +
+
+ diff --git a/dev/frontend-navigation/navigation-api.md b/dev/frontend-navigation/navigation-api.md new file mode 100644 index 0000000..8d08449 --- /dev/null +++ b/dev/frontend-navigation/navigation-api.md @@ -0,0 +1,414 @@ +# Navigation API Dokumentation + +Die Navigation-API stellt Endpunkte bereit, um die Frontend-Navigationsstruktur im Backend abzurufen. + +## Basis-URL + +Alle Endpunkte sind unter `/api/navigation/` verfügbar. + +## Endpunkte + +### 1. Kompletter Navigationsbaum + +**GET** `/api/navigation/tree` + +Gibt den kompletten hierarchischen Navigationsbaum mit allen Seiten zurück. + +**Response:** + +```json +{ + "success": true, + "data": [ + { + "id": 1, + "title": "Startseite", + "title_short": null, + "before_title": null, + "slug": "startseite", + "real_url_path": "/", + "url": "/", + "status": 1, + "show_in_navi": 1, + "order": 1, + "template": "home", + "lvl": 0, + "parent_id": null, + "pagetitle": "Willkommen", + "description": "Startseite", + "keywords": "start, home", + "canonical_url": null, + "lft": 1, + "rgt": 10, + "tree_root": 1, + "box_body": null, + "box_image_url": null, + "box_star": null, + "box_discount": null, + "is_travel_program": false, + "is_fewo_lodging": false, + "is_country_page": false, + "cms_settings": null, + "children": [ + { + "id": 2, + "title": "Über uns", + "slug": "ueber-uns", + "url": "/ueber-uns", + "children": [], + "has_children": false + } + ], + "has_children": true + } + ], + "meta": { + "total_nodes": 42, + "generated_at": "2024-01-15T10:30:00+00:00" + } +} +``` + +--- + +### 2. Nur aktive Navigationspunkte + +**GET** `/api/navigation/tree/active` + +Gibt nur aktive Seiten zurück (`status = 1` und `show_in_navi = 1`). + +**Response:** Gleiche Struktur wie oben, aber gefiltert. + +--- + +### 3. Teilbaum ab einem bestimmten Knoten + +**GET** `/api/navigation/tree/{rootId}` + +Gibt einen Teilbaum zurück, beginnend mit der angegebenen Page-ID. + +**Parameter:** + +- `rootId` (integer): Die ID der Seite, ab der der Baum aufgebaut werden soll + +**Beispiel:** `/api/navigation/tree/5` + +**Response:** + +```json +{ + "success": true, + "data": { + "id": 5, + "title": "Reisen", + "slug": "reisen", + "url": "/reisen", + "children": [ + { + "id": 6, + "title": "Türkei", + "slug": "tuerkei", + "url": "/reisen/tuerkei", + "children": [], + "has_children": false + } + ], + "has_children": true + }, + "meta": { + "total_nodes": 15, + "generated_at": "2024-01-15T10:30:00+00:00" + } +} +``` + +--- + +### 4. Flache Liste (ohne Hierarchie) + +**GET** `/api/navigation/flat` + +Gibt alle Navigationspunkte als flache Liste zurück (ohne parent-child Beziehung). + +**Response:** + +```json +{ + "success": true, + "data": [ + { + "id": 1, + "title": "Startseite", + "slug": "startseite", + "url": "/", + "status": 1, + "show_in_navi": 1, + "order": 1, + "template": "home", + "lvl": 0, + "parent_id": null, + "is_travel_program": false, + "is_fewo_lodging": false, + "is_country_page": false + }, + { + "id": 2, + "title": "Über uns", + "slug": "ueber-uns", + "url": "/ueber-uns", + "status": 1, + "show_in_navi": 1, + "order": 2, + "template": "default", + "lvl": 0, + "parent_id": null, + "is_travel_program": false, + "is_fewo_lodging": false, + "is_country_page": false + } + ], + "meta": { + "total_nodes": 42, + "generated_at": "2024-01-15T10:30:00+00:00" + } +} +``` + +--- + +### 5. Breadcrumb-Pfad + +**GET** `/api/navigation/breadcrumb/{pageId}` + +Gibt den Breadcrumb-Pfad für eine bestimmte Seite zurück (von der Wurzel bis zur Zielseite). + +**Parameter:** + +- `pageId` (integer): Die ID der Seite, für die der Breadcrumb erstellt werden soll + +**Beispiel:** `/api/navigation/breadcrumb/15` + +**Response:** + +```json +{ + "success": true, + "data": [ + { + "id": 1, + "title": "Startseite", + "title_short": null, + "url": "/", + "slug": "startseite" + }, + { + "id": 5, + "title": "Reisen", + "title_short": null, + "url": "/reisen", + "slug": "reisen" + }, + { + "id": 10, + "title": "Türkei", + "title_short": null, + "url": "/reisen/tuerkei", + "slug": "tuerkei" + }, + { + "id": 15, + "title": "Istanbul", + "title_short": null, + "url": "/reisen/tuerkei/istanbul", + "slug": "istanbul" + } + ], + "meta": { + "depth": 4, + "generated_at": "2024-01-15T10:30:00+00:00" + } +} +``` + +--- + +## Felder-Beschreibung + +Jeder Navigationspunkt enthält folgende Informationen: + +### Basis-Informationen + +- `id`: Eindeutige ID der Seite +- `title`: Vollständiger Titel +- `title_short`: Kurzer Titel (optional) +- `before_title`: Text vor dem Titel (optional) +- `slug`: URL-freundlicher Name +- `real_url_path`: Der definierte URL-Pfad aus der Datenbank +- `url`: Der vollständige URL-Pfad (entweder `real_url_path` oder automatisch generiert) + +### Navigationsinformationen + +- `status`: Status der Seite (0 = inaktiv, 1 = aktiv) +- `show_in_navi`: Soll in Navigation angezeigt werden (0 = nein, 1 = ja) +- `order`: Sortierreihenfolge +- `lvl`: Hierarchie-Ebene (0 = Root) +- `parent_id`: ID der Eltern-Seite (null = Root) + +### SEO-Informationen + +- `pagetitle`: SEO-Titel +- `description`: Meta-Beschreibung +- `keywords`: Meta-Keywords +- `canonical_url`: Kanonische URL + +### Template & Layout + +- `template`: Template-Name (z.B. "home", "overview", "default") +- `box_body`: Inhalt für Box-Darstellung +- `box_image_url`: Bild-URL für Box +- `box_star`: Sternebewertung +- `box_discount`: Rabatt-Information + +### Tree-Struktur + +- `lft`, `rgt`: Nested Set Tree Werte +- `tree_root`: ID der Baumwurzel + +### Content-Type Flags + +- `is_travel_program`: Ist ein Reiseprogramm +- `is_fewo_lodging`: Ist eine Ferienwohnung +- `is_country_page`: Ist eine Länderseite + +### Beziehungen (wenn vorhanden) + +**Travel Program:** + +```json +"travel_program": { + "id": 123, + "title": "7 Tage Istanbul", + "subtitle": "Die schönsten Orte", + "status": 1, + "position": 1, + "duration": 7, + "price_from": 899.00 +} +``` + +**Fewo Lodging:** + +```json +"fewo_lodging": { + "id": 45, + "name": "Villa am Meer", + "status": 1 +} +``` + +**Country:** + +```json +"country": { + "id": 10, + "name": "Türkei", + "title": "Türkei Reisen", + "slug": "tuerkei" +} +``` + +### Hierarchie-Informationen + +- `children`: Array von Child-Knoten (gleiche Struktur) +- `has_children`: Boolean, ob Kinder vorhanden sind + +--- + +## Fehlerbehandlung + +Bei Fehlern wird ein JSON-Response mit folgendem Format zurückgegeben: + +```json +{ + "success": false, + "error": "Fehlerbeschreibung" +} +``` + +**HTTP Status Codes:** + +- `200`: Erfolgreiche Anfrage +- `404`: Seite/Ressource nicht gefunden +- `500`: Serverfehler + +--- + +## Verwendungsbeispiele + +### JavaScript/Fetch + +```javascript +// Kompletten Navigationsbaum abrufen +fetch("/api/navigation/tree") + .then((response) => response.json()) + .then((data) => { + console.log("Navigation Tree:", data.data); + console.log("Total Nodes:", data.meta.total_nodes); + }); + +// Breadcrumb für eine Seite abrufen +fetch("/api/navigation/breadcrumb/15") + .then((response) => response.json()) + .then((data) => { + console.log("Breadcrumb:", data.data); + }); +``` + +### PHP/Laravel + +```php +use Illuminate\Support\Facades\Http; + +// Kompletten Navigationsbaum abrufen +$response = Http::get('http://yourdomain.com/api/navigation/tree'); +$navigationTree = $response->json()['data']; + +// Teilbaum abrufen +$response = Http::get('http://yourdomain.com/api/navigation/tree/5'); +$subTree = $response->json()['data']; +``` + +### cURL + +```bash +# Kompletten Baum +curl -X GET http://yourdomain.com/api/navigation/tree + +# Nur aktive Navigationspunkte +curl -X GET http://yourdomain.com/api/navigation/tree/active + +# Breadcrumb +curl -X GET http://yourdomain.com/api/navigation/breadcrumb/15 +``` + +--- + +## Performance-Hinweise + +- Der komplette Navigationsbaum kann bei großen Websites viele Knoten enthalten +- Verwenden Sie `/api/navigation/tree/active` für Frontend-Navigationen +- Verwenden Sie `/api/navigation/tree/{rootId}` um nur relevante Teilbäume zu laden +- Erwägen Sie Caching für häufig abgerufene Navigationsstrukturen + +--- + +## Implementierung + +Die Navigation-API basiert auf folgenden Komponenten: + +1. **Controller:** `App\Http\Controllers\API\NavigationController` +2. **Service:** `App\Services\NavigationTreeService` +3. **Model:** `App\Models\Page` +4. **Routen:** Definiert in `routes/api.php` + +Der Service verwendet rekursive Methoden, um den hierarchischen Baum aufzubauen und kann einfach erweitert werden. diff --git a/dev/frontend-navigation/navigation.md b/dev/frontend-navigation/navigation.md new file mode 100644 index 0000000..f68dac7 --- /dev/null +++ b/dev/frontend-navigation/navigation.md @@ -0,0 +1,47 @@ +# Routing & Navigations-Logik (KernelControllerListener) + +Die Klasse `src/AppBundle/Listener/KernelControllerListener.php` implementiert die zentrale Routing-Logik für das CMS. Sie greift ein, wenn der Symfony-Router den Request an `AppBundle\Controller\DefaultController::defaultAction` leitet. + +## Funktionsweise + +Der Listener analysiert den Request-Pfad (`pathInfo`) und entscheidet, welcher Controller tatsächlich ausgeführt werden soll. + +### 1. API-Lookup (Priorität 1) + +Zuerst wird geprüft, ob der Pfad über einen externen API-Call (`Util::loadFromApi('cms/search', ...)`) aufgelöst werden kann. + +- **Ziel-Controller:** `AppBundle:Cms:iqTravelGuide` +- **Template:** `TravelGuide` + +### 2. Datenbank-Suche (Page Entity) + +Wenn die API nichts zurückgibt, wird in der lokalen Datenbank (`AppBundle:Page`) gesucht. + +- **Methode A (Direkt):** Suche nach Übereinstimmung im Feld `realUrlPath`. +- **Methode B (Tree-Traversierung):** Der Pfad wird anhand der Slashes (`/`) zerlegt. Es wird versucht, den Pfad hierarchisch über `slug` und die Eltern-Kind-Beziehung (`parent`) aufzulösen. Die anfällige Nested-Set-Logik (`lft`/`rgt`, `lvl`) wird hier bewusst umgangen, um 404-Fehler bei inkonsistenten Trees zu vermeiden. + +### 3. Redirects + +- **Hardcoded:** Es gibt eine Liste fester 301-Weiterleitungen (z.B. alte Reiseführer-URLs). +- **Datenbank:** Tabelle `AppBundle:Redirect`. Wenn keine Page gefunden wird, wird hier geprüft. + +### 4. Controller-Zuweisung + +Sobald eine `Page`-Entität (`$node`) gefunden wurde, wird der Controller basierend auf dem Inhaltstyp bestimmt: + +| Inhaltstyp | URL-Suffix | Controller | Action | +| ----------------- | ------------------------- | ----------------------- | ------------------------- | +| **TravelProgram** | `/buchen`, `/berechne...` | `AppBundle:Booking` | `index` | +| **TravelProgram** | `/pdf` | `AppBundle:Cms` | `pdf` | +| **TravelProgram** | _(keins)_ | `AppBundle:Cms` | `travelProgram` | +| **FewoLodging** | `/buchen` | `AppBundle:FewoBooking` | `index` | +| **FewoLodging** | _(keins)_ | `AppBundle:Cms` | `fewoLodging` | +| **Standard Page** | _(keins)_ | `AppBundle:Cms` | _Dyn. nach Template-Name_ | + +**Fallback für Standard Pages:** +Wenn die Page ein Template (z.B. "About") definiert hat, versucht das System `AppBundle:Cms:About` aufzurufen. Existiert diese Action nicht, wird `AppBundle:Cms:Default` verwendet und der Template-Name als Parameter übergeben. + +### 5. Fehlerbehandlung + +- **404:** Wenn Pfad nicht gefunden und nicht in der Whitelist (`buchen`, `pdf` etc.) -> `HttpException(404)`. +- **Inaktiv:** Wenn Page-Status `0` ist -> `NotFoundHttpException`. diff --git a/dev/frontend-navigation/test-api.html b/dev/frontend-navigation/test-api.html new file mode 100644 index 0000000..c5b4088 --- /dev/null +++ b/dev/frontend-navigation/test-api.html @@ -0,0 +1,496 @@ + + + + + + Navigation API Tester + + + +
+

🗺️ Navigation API Tester

+ +
+

Dieses Tool testet alle verfügbaren Endpunkte der Navigation API und zeigt die Ergebnisse in einer strukturierten Form.

+
+ +
+ + +
+ + + + +
+
+
Kompletter Navigationsbaum
+ GET +
+
/tree
+
+ Gibt den kompletten hierarchischen Navigationsbaum mit allen Seiten zurück. +
+ +
+
+ + +
+
+
Nur aktive Navigationspunkte
+ GET +
+
/tree/active
+
+ Gibt nur aktive Seiten zurück (status = 1 und show_in_navi = 1). +
+ +
+
+ + +
+
+
Teilbaum ab Root-ID
+ GET +
+
/tree/{rootId}
+
+ Gibt einen Teilbaum zurück, beginnend mit der angegebenen Page-ID.
+ +
+ +
+
+ + +
+
+
Flache Liste
+ GET +
+
/flat
+
+ Gibt alle Navigationspunkte als flache Liste zurück (ohne parent-child Beziehung). +
+ +
+
+ + +
+
+
Breadcrumb-Pfad
+ GET +
+
/breadcrumb/{pageId}
+
+ Gibt den Breadcrumb-Pfad für eine bestimmte Seite zurück.
+ +
+ +
+
+ + +
+
+
Cache leeren
+ POST +
+
/cache/clear
+
+ Löscht den kompletten Navigation-Cache. +
+ +
+
+ + +
+

Test-Zusammenfassung

+
+
+
0
+
Gesamt
+
+
+
0
+
Erfolgreich
+
+
+
0
+
Fehlgeschlagen
+
+
+
+
+ + + + + diff --git a/dev/frontend-navigation/test-api.php b/dev/frontend-navigation/test-api.php new file mode 100644 index 0000000..d5560e5 --- /dev/null +++ b/dev/frontend-navigation/test-api.php @@ -0,0 +1,249 @@ + false, + 'error' => $error, + 'duration' => $duration + ]; + } + + return [ + 'success' => true, + 'http_code' => $httpCode, + 'data' => json_decode($response, true), + 'duration' => $duration + ]; +} + +/** + * Ausgabe-Helfer + */ +function printHeader($text) +{ + echo "\n" . COLOR_BLUE . str_repeat('=', 80) . COLOR_RESET . "\n"; + echo COLOR_BLUE . $text . COLOR_RESET . "\n"; + echo COLOR_BLUE . str_repeat('=', 80) . COLOR_RESET . "\n\n"; +} + +function printSuccess($text) +{ + echo COLOR_GREEN . "✓ " . $text . COLOR_RESET . "\n"; +} + +function printError($text) +{ + echo COLOR_RED . "✗ " . $text . COLOR_RESET . "\n"; +} + +function printInfo($text) +{ + echo COLOR_YELLOW . "ℹ " . $text . COLOR_RESET . "\n"; +} + +function printJson($data, $maxDepth = 3, $currentDepth = 0) +{ + if ($currentDepth >= $maxDepth) { + echo "[... gekürzt nach Tiefe $maxDepth]\n"; + return; + } + + echo json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "\n"; +} + +/** + * Testet einen einzelnen Endpunkt + */ +function testEndpoint($name, $endpoint, $method = 'GET', $showFullData = false) +{ + printInfo("Teste: $name"); + echo " Endpunkt: $endpoint\n"; + echo " Methode: $method\n"; + + $result = apiRequest($endpoint, $method); + + if (!$result['success']) { + printError("Request fehlgeschlagen: " . $result['error']); + return false; + } + + $httpCode = $result['http_code']; + $data = $result['data']; + $duration = $result['duration']; + + echo " HTTP Status: $httpCode\n"; + echo " Dauer: {$duration}ms\n"; + + if ($httpCode === 200) { + printSuccess("Erfolgreich"); + + if (isset($data['success']) && $data['success']) { + if (isset($data['meta'])) { + echo "\n Metadaten:\n"; + foreach ($data['meta'] as $key => $value) { + echo " $key: $value\n"; + } + } + + if ($showFullData && isset($data['data'])) { + echo "\n Daten (gekürzt):\n"; + $preview = $data['data']; + if (is_array($preview) && count($preview) > 2) { + $preview = array_slice($preview, 0, 2); + echo " " . json_encode($preview, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . "\n"; + echo " ... und " . (count($data['data']) - 2) . " weitere Einträge\n"; + } else { + printJson($preview, 2); + } + } + } + } else { + printError("HTTP-Fehler $httpCode"); + if (isset($data['error'])) { + echo " Fehlermeldung: " . $data['error'] . "\n"; + } + } + + echo "\n"; + return $httpCode === 200; +} + +// Hauptprogramm +printHeader("Navigation API Test Suite"); + +echo "Base URL: " . BASE_URL . "\n"; +echo "API Prefix: " . API_PREFIX . "\n\n"; + +$results = []; + +// Test 1: Kompletter Navigationsbaum +printHeader("Test 1: Kompletter Navigationsbaum"); +$results['tree'] = testEndpoint( + "Kompletter Navigationsbaum", + "/tree", + "GET", + true +); + +// Test 2: Nur aktive Navigationspunkte +printHeader("Test 2: Nur aktive Navigationspunkte"); +$results['tree_active'] = testEndpoint( + "Aktive Navigationspunkte", + "/tree/active", + "GET", + true +); + +// Test 3: Teilbaum (ersetze 1 mit einer existierenden Page-ID) +printHeader("Test 3: Teilbaum ab Root-ID 1"); +$results['subtree'] = testEndpoint( + "Teilbaum ab Root-ID 1", + "/tree/1", + "GET", + true +); + +// Test 4: Flache Liste +printHeader("Test 4: Flache Liste aller Navigationspunkte"); +$results['flat'] = testEndpoint( + "Flache Liste", + "/flat", + "GET", + true +); + +// Test 5: Breadcrumb (ersetze 1 mit einer existierenden Page-ID) +printHeader("Test 5: Breadcrumb für Page-ID 1"); +$results['breadcrumb'] = testEndpoint( + "Breadcrumb für Page-ID 1", + "/breadcrumb/1", + "GET", + true +); + +// Test 6: Cache leeren +printHeader("Test 6: Cache leeren"); +$results['cache_clear'] = testEndpoint( + "Cache leeren", + "/cache/clear", + "POST", + false +); + +// Zusammenfassung +printHeader("Test-Zusammenfassung"); + +$total = count($results); +$passed = count(array_filter($results)); +$failed = $total - $passed; + +echo "Gesamt: $total Tests\n"; +printSuccess("Erfolgreich: $passed"); +if ($failed > 0) { + printError("Fehlgeschlagen: $failed"); +} + +$percentage = round(($passed / $total) * 100, 1); +echo "\nErfolgsrate: $percentage%\n"; + +if ($percentage === 100.0) { + printSuccess("\nAlle Tests bestanden! 🎉"); +} else { + printError("\nEinige Tests sind fehlgeschlagen. Bitte überprüfen Sie die Ausgabe oben."); +} + +echo "\n"; + +// Weitere Hinweise +printHeader("Weitere Informationen"); +echo "Vollständige API-Dokumentation: dev/frontend-navigation/navigation-api.md\n"; +echo "README: dev/frontend-navigation/README.md\n\n"; +echo "Hinweis: Wenn Tests fehlschlagen, überprüfen Sie:\n"; +echo " 1. Ist die BASE_URL korrekt?\n"; +echo " 2. Läuft der Server?\n"; +echo " 3. Sind Page-Einträge in der Datenbank vorhanden?\n"; +echo " 4. Sind die Routen korrekt registriert?\n\n"; diff --git a/dev/offers/umsetzung.md b/dev/offers/umsetzung.md new file mode 100644 index 0000000..08dec78 --- /dev/null +++ b/dev/offers/umsetzung.md @@ -0,0 +1,942 @@ +# Modul 6 — Angebote: Implementierungs-Tickets + +**Status:** Entwurf, bereit zur Umsetzung +**Erstellt:** April 2026 +**Konzept:** [../entwicklungsplan.md §6](../entwicklungsplan.md) +**Abhängigkeiten-Check vor Start:** +- Modul 3 (Customer/Lead/Booking) Phase 2 produktiv → `contacts` + `inquiries` existieren. +- Modul 3 Phase 4 (`attachments`, `communications`) ideal — sonst Fallback mit eigener `offer_files`-Tabelle, später Migration in `attachments`. +- Modul 4 (Backend-Direktbuchung) Service `BookingService::createManual(...)` verfügbar (für Konvertierung Angebot → Buchung ohne Copy-Code). Kann parallel entwickelt werden, muss vor Ticket B8 stehen. +- Modul 1 (UI-Baseline) definiert: Blade-Components `ui.toolbar`, `ui.card`, `ui.tabs`, `ui.modal`, `ui.form-row` verfügbar. + +--- + +## 0. Übersicht + +Insgesamt **6 Phasen** mit **32 Tickets**. Geschätzter Gesamtaufwand: **7–9 Wochen** (1 Entwickler). Aufsplittung erlaubt Parallelisierung von Phasen C + D + E nach Abschluss von B5. + +| Phase | Inhalt | Tickets | Aufwand | +|-------|--------|---------|---------| +| A | Fundament (DB / Models / Repositories / Services / Routing / Permissions) | A1–A7 | ~10 Tage | +| B | Admin-UI (Mitarbeiter-Backend) | B1–B9 | ~18 Tage | +| C | Vorlagen (Offer-Templates) | C1–C3 | ~3 Tage | +| D | Kundenseitiger Freigabe-Link (öffentliches Frontend) | D1–D5 | ~5 Tage | +| E | Versionierung & Archivierung | E1–E3 | ~3 Tage | +| F | Polish, Automatik, Tests | F1–F6 | ~5 Tage | + +Nach Abschluss von Phase B5 kann D parallel zu C + E gebaut werden. + +--- + +## 1. Reihenfolge und kritischer Pfad + +``` +A1 → A2 → A3 → A4 → A5 → A6 → A7 ─────────┐ + │ + ┌─── B1 → B2 → B3 → B4 → B5 ──────┼──► B6 → B7 ─┐ + │ │ │ + │ ┌── C1 → C2 ─┤ ├─► B8 → B9 + │ │ │ │ + │ ├── D1 → D2 → D3 → D4 → D5─┤ + │ │ │ + │ └── E1 → E2 → E3 ──────────┘ + │ + └──► F1 … F6 (laufend) +``` + +--- + +## Phase A — Fundament + +### Ticket A1 — Datenbank-Migrationen anlegen + +**Typ:** Migration +**Aufwand:** 1 Tag +**Abhängigkeiten:** Modul 3 Phase 2 (`contacts`, `inquiries`) + +**Dateien (neu):** +- `database/migrations/2026_05_01_100001_create_offers_table.php` +- `database/migrations/2026_05_01_100002_create_offer_versions_table.php` +- `database/migrations/2026_05_01_100003_create_offer_items_table.php` +- `database/migrations/2026_05_01_100004_create_offer_templates_table.php` +- `database/migrations/2026_05_01_100005_create_offer_files_table.php` +- `database/migrations/2026_05_01_100006_create_offer_access_tokens_table.php` +- `database/migrations/2026_05_01_100007_add_offer_id_to_bookings_table.php` + +**Schema `offers`:** +```php +Schema::create('offers', function (Blueprint $t) { + $t->id(); + $t->string('offer_number', 32)->unique(); // z. B. "2026-00123" + $t->foreignId('contact_id')->constrained('contacts')->restrictOnDelete(); + $t->foreignId('inquiry_id')->nullable()->constrained('inquiries')->nullOnDelete(); + $t->foreignId('booking_id')->nullable()->constrained('bookings')->nullOnDelete(); + $t->enum('status', ['draft', 'sent', 'accepted', 'declined', 'expired', 'withdrawn']) + ->default('draft'); + $t->unsignedBigInteger('current_version_id')->nullable(); // FK wird nachträglich gesetzt + $t->foreignId('created_by')->constrained('users'); + $t->timestamps(); + $t->softDeletes(); + + $t->index(['status', 'contact_id']); + $t->index('inquiry_id'); +}); +``` + +**Schema `offer_versions`:** +```php +Schema::create('offer_versions', function (Blueprint $t) { + $t->id(); + $t->foreignId('offer_id')->constrained('offers')->cascadeOnDelete(); + $t->unsignedInteger('version_no'); + $t->enum('status', ['draft', 'sent', 'accepted', 'declined', 'expired', 'superseded']) + ->default('draft'); + $t->date('valid_until')->nullable(); + $t->decimal('total_price', 10, 2)->default(0); + $t->string('headline')->nullable(); + $t->text('intro_text')->nullable(); + $t->longText('itinerary_text')->nullable(); + $t->text('closing_text')->nullable(); + $t->foreignId('template_id')->nullable()->constrained('offer_templates')->nullOnDelete(); + $t->string('pdf_path')->nullable(); + $t->boolean('pdf_archived')->default(false); + $t->dateTime('sent_at')->nullable(); + $t->dateTime('accepted_at')->nullable(); + $t->enum('accepted_via', ['customer_link', 'admin', 'email'])->nullable(); + $t->foreignId('created_by')->constrained('users'); + $t->timestamps(); + + $t->unique(['offer_id', 'version_no']); +}); +``` + +Danach nachträglicher FK auf `offers.current_version_id → offer_versions.id`. + +**Schema `offer_items`:** +```php +Schema::create('offer_items', function (Blueprint $t) { + $t->id(); + $t->foreignId('offer_version_id')->constrained('offer_versions')->cascadeOnDelete(); + $t->unsignedInteger('position')->default(0); + $t->enum('type', ['travel','service','option','discount','insurance','custom']); + $t->string('title'); + $t->text('description')->nullable(); + $t->unsignedInteger('quantity')->default(1); + $t->decimal('price_per_unit', 10, 2)->default(0); + $t->decimal('total_price', 10, 2)->default(0); + $t->foreignId('travel_program_id')->nullable(); // kein FK solange v2 nicht migriert + $t->foreignId('fewo_lodging_id')->nullable(); + $t->json('metadata')->nullable(); + $t->timestamps(); + + $t->index(['offer_version_id', 'position']); +}); +``` + +**Schema `offer_templates`:** +```php +Schema::create('offer_templates', function (Blueprint $t) { + $t->id(); + $t->string('name'); + $t->string('description')->nullable(); + $t->string('organization')->nullable(); // "Reise-Organisation", aus Briefing + $t->string('headline')->nullable(); + $t->text('intro_text')->nullable(); + $t->longText('itinerary_text')->nullable(); + $t->text('closing_text')->nullable(); + $t->json('items_json')->nullable(); // serialisierte Default-Positionen + $t->json('default_document_ids')->nullable(); // IDs der zentral hinterlegten Dokumente + $t->boolean('active')->default(true); + $t->foreignId('created_by')->constrained('users'); + $t->timestamps(); + $t->softDeletes(); +}); +``` + +**Schema `offer_files`** (bewusst analog zu `booking_files`, später Migration in `attachments`): +```php +Schema::create('offer_files', function (Blueprint $t) { + $t->id(); + $t->foreignId('offer_version_id')->constrained('offer_versions')->cascadeOnDelete(); + $t->string('identifier')->nullable(); // z. B. "letterhead" für feste Typen + $t->string('disk')->default('offers'); + $t->string('dir'); + $t->string('filename'); + $t->string('original_name'); + $t->string('ext', 10); + $t->string('mine', 100); // Schreibweise übernommen aus BookingFile + $t->unsignedBigInteger('size'); + $t->boolean('frozen')->default(false); // true ab Versand, um Anhang „einzufrieren" + $t->timestamps(); +}); +``` + +**Schema `offer_access_tokens`:** +```php +Schema::create('offer_access_tokens', function (Blueprint $t) { + $t->id(); + $t->foreignId('offer_version_id')->constrained('offer_versions')->cascadeOnDelete(); + $t->string('token', 64)->unique(); + $t->dateTime('expires_at')->nullable(); + $t->dateTime('opened_at')->nullable(); + $t->dateTime('accepted_at')->nullable(); + $t->dateTime('declined_at')->nullable(); + $t->string('ip_address', 45)->nullable(); + $t->string('user_agent', 255)->nullable(); + $t->timestamps(); +}); +``` + +**`add_offer_id_to_bookings_table`:** Spalte `bookings.offer_id` als nullable FK (Rückverweis bei Konvertierung). + +**Akzeptanzkriterien:** +- [ ] Alle 7 Migrationen laufen sauber durch (`artisan migrate`) und `migrate:rollback` invertiert sie. +- [ ] FKs sind konsistent; kein Drop einer Tabelle bricht andere. +- [ ] Mit `migrate:fresh --seed` reproduzierbar. + +**Risiken:** +- `travel_program_id` / `fewo_lodging_id` haben aktuell keine Laravel-Tabelle (v2). FK vorerst nicht setzen, Werte nur als Referenz speichern. Ticket beim v2-Modul: FK nachreichen. + +--- + +### Ticket A2 — Eloquent-Models + +**Typ:** Code +**Aufwand:** 1 Tag +**Abhängigkeiten:** A1 + +**Dateien (neu):** +- `app/Models/Offer.php` +- `app/Models/OfferVersion.php` +- `app/Models/OfferItem.php` +- `app/Models/OfferTemplate.php` +- `app/Models/OfferFile.php` +- `app/Models/OfferAccessToken.php` + +**`Offer.php`:** +- `$fillable`, `$casts` (status als Enum, Timestamps). +- Relationen: `contact()`, `inquiry()`, `booking()`, `versions()`, `currentVersion()`, `createdBy()`. +- Scopes: `scopeOpen()`, `scopeForContact($q, $id)`, `scopeWithStatus($q, array $stati)`. +- Factories: `HasFactory`. + +**`OfferVersion.php`:** +- Relationen: `offer()`, `items()`, `files()`, `tokens()`, `template()`, `createdBy()`. +- Helper: `isEditable()` (true wenn status=draft), `latestToken()`, `totalPriceFormatted()`. +- Dateipfad-Helper: `getPdfUrl()` analog zu `BookingFile::getURL()`. + +**`OfferFile.php`:** +- Gleiche Methoden wie `BookingFile::getURL()`, `::getIconExt()`, `::formatBytes()` — Interface-kompatibel, damit derselbe Frontend-Code verwendbar bleibt. + +**`OfferAccessToken.php`:** +- `::generate(OfferVersion $v, ?Carbon $expiresAt = null): self` — erzeugt kryptografisch sicheren Token (`Str::random(64)`), speichert, gibt zurück. +- `scopeActive()` — nicht expired, nicht declined. + +**Akzeptanzkriterien:** +- [ ] `Offer::factory()->create()` funktioniert. +- [ ] `$offer->currentVersion->items` liefert korrekte Collection. +- [ ] `OfferAccessToken::generate()` erzeugt unique Token, Kollisionsschutz per `unique`-Constraint. + +--- + +### Ticket A3 — Repositories + +**Typ:** Code +**Aufwand:** 1 Tag +**Abhängigkeiten:** A2 + +**Dateien (neu):** +- `app/Repositories/OfferRepository.php` extends `BaseRepository` +- `app/Repositories/OfferVersionRepository.php` extends `BaseRepository` +- `app/Repositories/OfferFileRepository.php` extends `FileRepository` (analog `BookingFileRepository`) +- `app/Repositories/OfferTemplateRepository.php` extends `BaseRepository` + +**`OfferRepository`:** +- `create(array $data, int $contactId, ?int $inquiryId = null): Offer` — legt `Offer` + `OfferVersion#1` (status=draft) an, setzt `current_version_id`. +- `generateOfferNumber(): string` — Format `{YYYY}-{5-stellig laufend}`, nutzt `DB::transaction` mit `SELECT … FOR UPDATE` auf einer Zähler-Tabelle ODER nimmt `MAX(offer_number)` mit Transaktion. +- `findByNumber(string $no): ?Offer` + +**`OfferVersionRepository`:** +- `updateDraft(OfferVersion $v, array $data): OfferVersion` — nur wenn `status=draft`; Items werden aus `$data['items']` synchronisiert. +- `createNewVersion(Offer $offer): OfferVersion` — dupliziert aktuelle Version inkl. items + files (als neue Zeilen), `version_no = max+1`, vorherige wird `superseded`, `offer.current_version_id` wird aktualisiert. Atomar in Transaktion. +- `markSent(OfferVersion $v): OfferVersion` — setzt status, `sent_at`, `frozen` auf allen `offer_files`. + +**`OfferFileRepository` (analog `BookingFileRepository`):** +- `__construct(OfferFile $model)` +- `save()` schreibt mit `$this->offer_version_id`, `$this->identifier`, `$this->dir = /files/YYYY/MM/`. +- `response()` identische JSON-Struktur wie `BookingFileRepository::response()`, damit Frontend-Code geteilt werden kann. + +**Akzeptanzkriterien:** +- [ ] `OfferRepository::create()` erzeugt Offer + initiale Version atomar; Rollback bei Fehler. +- [ ] `generateOfferNumber()` ist race-safe (parallele Tests erzeugen keine Duplikate). +- [ ] `createNewVersion()` kopiert Items + Files, Preise bleiben gleich, alte Version `superseded`. + +--- + +### Ticket A4 — OfferService (Business-Logik) + +**Typ:** Code +**Aufwand:** 2 Tage +**Abhängigkeiten:** A3 + +**Dateien (neu):** +- `app/Services/OfferService.php` + +**Methoden:** +```php +public function createFromInquiry(int $inquiryId, ?int $templateId = null): Offer; +public function createBlank(int $contactId, ?int $templateId = null): Offer; +public function applyTemplate(OfferVersion $v, OfferTemplate $template): OfferVersion; +public function updateVersion(OfferVersion $v, array $data): OfferVersion; +public function send(OfferVersion $v, array $mailData): void; // erzeugt Token, versendet Mail, wechselt Status +public function markAccepted(OfferVersion $v, string $via, ?string $ip = null, ?string $ua = null): void; +public function markDeclined(OfferVersion $v, string $via, ?string $reason = null): void; +public function supersede(OfferVersion $v): OfferVersion; // erzeugt neue Version +public function withdraw(Offer $offer, string $reason): void; +public function convertToBooking(Offer $offer): Booking; // delegiert an BookingService::createManual() +``` + +**Logikregeln:** +- `send()` nur möglich, wenn Version `status=draft` und `current_version` der Offer ist. +- `markAccepted()` nur möglich bei `status=sent`; Offer.status wechselt ebenfalls auf `accepted`; ältere noch aktive Versionen werden `superseded`. +- `supersede()` deaktiviert bestehenden Token, erzeugt aber beim nächsten `send()` einen neuen. +- `convertToBooking()` nur bei Offer.status=accepted; nutzt `BookingService::createManual($offer->currentVersion->toBookingData())`; setzt `offer.booking_id`, kopiert `offer_files` als `booking_files`. + +**Akzeptanzkriterien:** +- [ ] Unit-Tests für jede öffentliche Methode (happy path + Statusguard-Fehler). +- [ ] `convertToBooking()` arbeitet idempotent — zweiter Aufruf wirft DomainException. +- [ ] Service wirft sprechende, eigene Exceptions (`OfferNotEditableException`, `InvalidOfferStatusException`). + +--- + +### Ticket A5 — FormRequests + +**Typ:** Code +**Aufwand:** 0.5 Tage +**Abhängigkeiten:** A3 + +**Dateien (neu):** +- `app/Http/Requests/Offer/StoreOfferRequest.php` +- `app/Http/Requests/Offer/UpdateVersionRequest.php` +- `app/Http/Requests/Offer/SendOfferRequest.php` +- `app/Http/Requests/Offer/OfferTemplateRequest.php` + +Validierungen pro Feld (Preise ≥ 0, `valid_until` in Zukunft, HTML-Sanitizing für `itinerary_text`, Dateiuploads MIME-Typen wie bei `BookingFile`). + +--- + +### Ticket A6 — Routing + Permissions + +**Typ:** Code +**Aufwand:** 0.5 Tage +**Abhängigkeiten:** A4 + +**Dateien (geändert):** +- `routes/web.php` — neuer Block analog zu `bookings`/`leads`: + +```php +Route::group(['middleware' => ['auth.2fa']], function () { + Route::get('data/table/offers', 'OfferController@getOffers')->name('data_table_offers'); + Route::get('/offers/{step?}', 'OfferController@index')->name('offers'); + Route::get('/offer/detail/{id}', 'OfferController@detail')->name('offer_detail'); + Route::post('/offer/detail/{id}', 'OfferController@store')->name('offer_detail_store'); + Route::post('/offer/modal/load', 'OfferController@loadModal')->name('offer_modal_load'); + Route::get('/offer/action/{action}/{id?}', 'OfferController@action')->name('offer_action'); + Route::post('/offer/action/{action}/{id?}', 'OfferController@action')->name('offer_action_store'); + Route::get('/offer/delete/{id}/{del?}', 'OfferController@delete')->name('offer_delete'); + Route::get('/offer/pdf/{versionId}', 'OfferController@pdf')->name('offer_pdf'); + + // Templates + Route::get('/offer-templates', 'OfferTemplateController@index')->name('offer_templates'); + Route::get('/offer-template/detail/{id}', 'OfferTemplateController@detail')->name('offer_template_detail'); + Route::post('/offer-template/detail/{id?}', 'OfferTemplateController@store')->name('offer_template_detail_store'); + Route::get('/offer-template/delete/{id}', 'OfferTemplateController@delete')->name('offer_template_delete'); + + // Files (analog zu BookingController action-upload-booking-file) + Route::post('/offer/upload/{versionId}', 'OfferFileController@upload')->name('offer_file_upload'); + Route::get('/offer/file/delete/{id}', 'OfferFileController@delete')->name('offer_file_delete'); +}); +``` + +**Permissions** (in Seeder `database/seeds/PermissionSeeder.php` oder via Config): +- `offers-r`, `offers-w`, `offers-send`, `offers-accept`, `offer-templates-w` + +**Menü-Eintrag** in `resources/views/layouts/_sidenav.blade.php` (analog zu bestehendem „Anfragen" und „Buchungen"). + +**Akzeptanzkriterien:** +- [ ] Routen erreichbar nur mit Permission. +- [ ] Menüpunkt „Angebote" erscheint zwischen „Anfragen" und „Buchungen". + +--- + +### Ticket A7 — Factories + Seeder (für Tests) + +**Typ:** Code +**Aufwand:** 0.5 Tage +**Abhängigkeiten:** A2 + +**Dateien (neu):** +- `database/factories/OfferFactory.php` +- `database/factories/OfferVersionFactory.php` +- `database/factories/OfferItemFactory.php` +- `database/factories/OfferTemplateFactory.php` + +Factories decken alle Status ab (States: `draft()`, `sent()`, `accepted()`). Seeder legt 5 Test-Templates an. + +--- + +## Phase B — Admin-UI + +### Ticket B1 — Offer-Liste `/offers` + +**Typ:** UI + Controller +**Aufwand:** 2 Tage +**Abhängigkeiten:** A6 + +**Dateien (neu):** +- `app/Http/Controllers/OfferController.php` — Methode `index()`, `getOffers()`. +- `resources/views/offer/index.blade.php` +- `resources/views/offer/_list_row.blade.php` (optional, wenn DataTable serverseitig gerendert) + +**Ablauf:** +- DataTable (Server-side via `DataTableController`-Pattern, siehe `data/table/bookings`-Route). +- Spalten: Angebots-Nr. | Kontakt | Reise/Organisation | Version | Status-Badge | Gültig bis | Gesamtpreis | Mitarbeiter | Erstellt am | Aktionen. +- Filter: Status (Multi-Select), Mitarbeiter, Datumsrange (erstellt/gültig bis), Volltext (Kontakt/Nummer). +- Status-Badges (wiederverwendbar via ``): + - `draft` grau, `sent` blau, `accepted` grün, `declined` rot, `expired` gelb, `withdrawn` schwarz. +- Aktionen pro Zeile: Öffnen, PDF, Senden, Duplizieren als neues Angebot, Löschen. +- Toolbar: Button „Neues Angebot" (→ öffnet Modal aus Ticket B2). + +**Akzeptanzkriterien:** +- [ ] Pagination, Sortierung, Filter wie in `/bookings`. +- [ ] Performance: bei 10.000 Angeboten Ladezeit <1s (Index-Check). + +--- + +### Ticket B2 — „Neues Angebot" Modal + Wizard-Einstieg + +**Typ:** UI + Controller +**Aufwand:** 1.5 Tage +**Abhängigkeiten:** B1 + +**Dateien (neu):** +- `resources/views/offer/modal-new-offer.blade.php` +- `resources/views/offer/create.blade.php` (leiterer Wizard-Einstieg) + +**UI-Fluss:** +1. Modal öffnet aus zwei Kontexten: + - Global: `/offers` → Toolbar „Neues Angebot". + - Aus Anfrage: `/inquiry/detail/{id}` → Button „Angebot erstellen" (neu) — pre-fillt Kontakt + Anfrage. +2. Modal-Felder: Kontakt (Autocomplete `/data/table/contacts`), optional Anfrage (Autocomplete Inquiries des Kontakts), Vorlage (Dropdown `offer_templates`). +3. Bei Submit: `POST /offer/action/create` → legt via `OfferService::createFromInquiry()` oder `::createBlank()` an, Redirect auf `/offer/detail/{id}`. + +**Akzeptanzkriterien:** +- [ ] Kontakt-Autocomplete greift auf `ContactController::getContacts`. +- [ ] Vorlage optional (leere Auswahl = leeres Angebot). +- [ ] Nach Submit landet der User direkt im Editor der neuen Version. + +--- + +### Ticket B3 — Offer-Editor (Detail + Versionsansicht) + +**Typ:** UI + Controller +**Aufwand:** 5 Tage (größtes UI-Ticket) +**Abhängigkeiten:** B2 + +**Dateien (neu):** +- `resources/views/offer/detail.blade.php` (Haupt-View, analog zu `booking/detail.blade.php`) +- `resources/views/offer/_detail_header.blade.php` — Status-Leiste, Buttons (Versenden, Kopie als neue Version, In Buchung umwandeln, Löschen) +- `resources/views/offer/_detail_contact.blade.php` — Kontakt-Card (read-only, Link zu `/contact/detail/{id}`) +- `resources/views/offer/_detail_content.blade.php` — Headline + Intro + Itinerary (WYSIWYG) + Closing +- `resources/views/offer/_detail_items.blade.php` — Positions-Liste (Drag&Drop via SortableJS) +- `resources/views/offer/_detail_items_row.blade.php` — einzelne Position +- `resources/views/offer/_detail_versions.blade.php` — History-Tab: V1, V2 … mit PDF-Download je Version + +**Layout (Inspiriert an `booking/detail`):** +``` +┌─ Header: "Angebot 2026-00123 · V2 · Status: GESENDET" ──┐ +│ [PDF] [Erneut senden] [Neue Version] [In Buchung] [...] │ +└─────────────────────────────────────────────────────────┘ +┌─ Linke Spalte (Stammdaten) ──┬─ Rechte Spalte (Tabs) ──┐ +│ • Kontakt │ [Inhalt][Positionen] │ +│ • Anfrage (verknüpft) │ [Dokumente][Versionen] │ +│ • Gültig bis │ [E-Mails][Log] │ +│ • Mitarbeiter │ │ +│ • Summe │ (aktiver Tab-Inhalt) │ +└──────────────────────────────┴─────────────────────────┘ +``` + +**Inhalts-Tab:** +- Felder `headline`, `intro_text`, `itinerary_text` (TinyMCE oder TipTap — gleicher WYSIWYG wie CMS-Modul), `closing_text`. +- Inline-Edit mit Auto-Save (Debounce 3s, `POST /offer/detail/{id}` mit Action-Flag `autosave-content`). + +**Positionen-Tab:** +- Drag&Drop-Sortierung (SortableJS). +- Pro Zeile: Typ-Icon, Titel, Menge, Einzelpreis, Gesamtpreis, Löschen, „Aus Reiseprogramm füllen" (Dropdown aus v2-Programmen, solange v2 läuft: über Lesemodell). +- Summe live unten. +- Button „Position hinzufügen" öffnet kleines Modal (Typ wählen). + +**Bearbeitbarkeitsregel:** +- Wenn `OfferVersion::isEditable()` = false → alle Felder read-only, Hinweis „Diese Version ist versendet. Erstelle eine neue Version, um Änderungen vorzunehmen." mit Button „Neue Version". + +**Akzeptanzkriterien:** +- [ ] Autosave für Content + Items (kein manuelles Speichern nötig). +- [ ] Positionen lassen sich drag&drop verschieben, `position` wird gespeichert. +- [ ] Summe stimmt mit `total_price` in DB überein (Server rechnet nach). +- [ ] Bei gesendeter Version: keine Edit-Möglichkeit, klarer CTA „Neue Version". + +--- + +### Ticket B4 — Dokumente am Angebot (zentral + frei) + +**Typ:** UI + Controller +**Aufwand:** 2 Tage +**Abhängigkeiten:** B3 + +**Entscheidung 17.3:** Dual-Modell wie bei Buchungen. + +**Dateien (neu/geändert):** +- `app/Http/Controllers/OfferFileController.php` (Upload/Delete, analog zu `BookingController::action()` „upload-booking-file") +- `resources/views/offer/_detail_documents.blade.php` +- `resources/views/offer/modal-new-offer-files.blade.php` (Dropzone, nutzt gleiche Blade-Partials wie `booking/modal-new-booking-files`) + +**UI:** +Zwei Bereiche: +1. **Zentral hinterlegte Dokumente** (Checkboxen): + - Liste kommt aus einem neuen Mini-Modell `OfferDocumentTemplate` **oder** aus einer Konfig-Datei (`config/offer_documents.php`). Empfehlung: Konfig-Datei für den Start. + - Beispiele: AGB, Reisebedingungen, Briefbogen Organisation X, Prospekt Reise Y. + - Ausgewählte IDs liegen in `offer_versions.template_document_ids` (JSON). +2. **Freie Uploads pro Version:** + - Dropzone → `OfferFileController::upload($versionId)` → `OfferFileRepository`. + - Liste der hochgeladenen Files mit Löschen-Button. + - Nach Versand: `frozen=true` → Löschen-Button weg. + +**Akzeptanzkriterien:** +- [ ] Upload funktioniert wie Booking-Upload (gleicher Dropzone-Partial wiederverwendet, falls machbar). +- [ ] Gewählte zentrale Dokumente + freie Uploads werden zusammen mit PDF im Versand-Mail-Anhang kombiniert (Ticket B6). +- [ ] Nach Versand: Dokumente read-only, markiert mit „Eingefroren". + +**Nach Phase 4 Modul 3:** Migration `offer_files` → `attachments`-Tabelle, in diesem Ticket aber bewusst auf eigener Tabelle. + +--- + +### Ticket B5 — PDF-Generierung + +**Typ:** Code + Template +**Aufwand:** 2.5 Tage +**Abhängigkeiten:** B3, B4 + +**Dateien (neu):** +- `app/Libraries/CreateOfferPDF.php` (analog zu `CreatePDF.php`) +- `resources/views/pdf/offer.blade.php` (Haupt-Template) +- `resources/views/pdf/offer/header.blade.php`, `footer.blade.php`, `items.blade.php` + +**Logik:** +- PDF wird für eine `OfferVersion` erzeugt (nicht für das übergeordnete `offer`). +- Header: Logo, „Angebot 2026-00123 · Version 2", Kundenadresse, Mitarbeiter, Datum, Gültig bis. +- Sektion „Headline" (falls gesetzt) — fett, groß. +- Sektion „Einführungstext" — `{!! $version->intro_text !!}` (aus WYSIWYG). +- Sektion „Leistungen" — Tabelle der `offer_items`, gruppiert nach Typ, Summe unten. +- Sektion „Reiseverlauf" — nur wenn `itinerary_text` gefüllt. +- Sektion „Abschlusstext". +- Footer: Firmenadresse, Seite X/Y, Angebots-Nr. + +**PDF-Mergen mit Anhängen:** +- `MyPDFMerger` (existiert bereits) mergt erzeugtes PDF mit ausgewählten zentralen Dokumenten (die auf Disk liegen). +- Endergebnis: ein einziges PDF-File, Pfad in `offer_versions.pdf_path`. + +**Route:** `GET /offer/pdf/{versionId}` streamt das erzeugte PDF (Download oder Inline via Query `?inline=1`). + +**Akzeptanzkriterien:** +- [ ] PDF für eine Beispiel-Version erzeugt sich korrekt, sieht wie Buchungsauftrag aus, nur mit „Angebot". +- [ ] Merger funktioniert: Angebots-PDF + 2 zentrale Dokumente = 1 PDF. +- [ ] Nach erfolgreicher Erzeugung wird `pdf_path` gespeichert; erneutes Abrufen nutzt Cache. +- [ ] Bei Status-Wechsel (neue Version) wird altes PDF nicht überschrieben. + +--- + +### Ticket B6 — Versand via E-Mail + +**Typ:** Code + UI +**Aufwand:** 2 Tage +**Abhängigkeiten:** B5, Modul 7 (idealerweise Draft-Mail-Modal vorhanden, sonst eigenes Modal) + +**Dateien (neu/geändert):** +- `app/Mail/OfferMail.php` (Laravel Mailable) +- `resources/views/emails/offer/sent.blade.php` (HTML-Template) +- `resources/views/offer/modal-send-offer.blade.php` — Vorschau-Modal vor Versand (Empfänger, Betreff, Body bearbeitbar, Anhänge-Liste). +- `OfferController::action('send', $id)` → delegiert an `OfferService::send()`. + +**Logik:** +1. User klickt „Versenden" → Modal mit vorbefülltem Betreff (`"Ihr persönliches Angebot von Sterntours — {offer_number}"`) und Body (aus CMS-Textvorlage, Platzhalter `{name}`, `{offer_number}`, `{link}`). +2. User kann Betreff/Body anpassen. +3. `OfferService::send()`: + - Erzeugt neuen `OfferAccessToken`. + - Ersetzt Platzhalter `{link}` durch die öffentliche URL aus Ticket D1. + - Baut Mail mit PDF (aus B5) + freien Anhängen (aus B4) + zentralen Dokumenten. + - Versendet per Queue (`Mail::to($contact->email)->queue(new OfferMail(...))`). + - Erzeugt Eintrag in `communications` (nach Modul 3 Phase 4) bzw. `customer_mails` (Fallback solange Phase 4 offen). + - Setzt `offer_versions.status=sent`, `sent_at`, `pdf_archived=false`. + - Setzt `offers.status=sent`. + - Setzt `frozen=true` auf `offer_files` der Version. + +**Akzeptanzkriterien:** +- [ ] Mail landet bei Empfänger mit PDF + Link. +- [ ] Token im Link ist einzigartig und nicht erratbar (≥ 48 Zeichen Entropie). +- [ ] Versand wird im Kommunikations-Verlauf des Kontakts sichtbar. +- [ ] Bei Queue-Fehler → Status bleibt `draft`, Fehler im Dashboard anzeigbar. + +--- + +### Ticket B7 — Admin-Annahme/Ablehnung/Zurücknahme + +**Typ:** UI + Controller +**Aufwand:** 1 Tag +**Abhängigkeiten:** B6 + +**Dateien (neu):** +- `resources/views/offer/modal-admin-accept.blade.php` +- `resources/views/offer/modal-admin-decline.blade.php` + +**UI:** +- Im Detail-Header (Ticket B3) Buttons „Zusage markieren", „Absage markieren", „Angebot zurückziehen". +- Bei Zusage: Modal fragt nach Notiz (optional), ruft `OfferService::markAccepted($v, 'admin')` auf. +- Bei Absage: Modal fragt nach Grund (optional), ruft `markDeclined($v, 'admin')`. +- Zurückziehen: `OfferService::withdraw()`; invalidiert Token, setzt Offer.status=withdrawn. + +**Akzeptanzkriterien:** +- [ ] Zusage/Absage-Events werden in `notices`/Audit-Log festgehalten. +- [ ] Button „In Buchung übernehmen" wird erst nach Zusage aktiv. + +--- + +### Ticket B8 — Angebot → Buchung konvertieren + +**Typ:** Code + UI +**Aufwand:** 2 Tage +**Abhängigkeiten:** B7, **Modul 4 (BookingService::createManual)** + +**Dateien (neu/geändert):** +- `app/Services/OfferService.php` — `convertToBooking()` fertigstellen. +- `resources/views/offer/modal-convert-to-booking.blade.php` — Bestätigungs-Modal mit Vorschau der Buchungsdaten. + +**Logik:** +- `convertToBooking(Offer $offer): Booking`: + 1. Guard: Offer.status=accepted, Offer.booking_id IS NULL. + 2. Baut `$bookingData` aus aktueller OfferVersion (Items → BookingServiceItems, Summe → BookingPrice, Kontakt → Customer, Reisedatum → aus Items oder aus Offer-Meta). + 3. Ruft `BookingService::createManual($bookingData, $offer->inquiry)` auf (Modul 4). + 4. Kopiert `offer_files` (frozen) als `booking_files`. + 5. Setzt `offer.booking_id`, persistiert. + 6. Legt Notiz an: „Erzeugt aus Angebot 2026-00123 V2". + +**Akzeptanzkriterien:** +- [ ] Nach Konvertierung ist in der Buchung alles sichtbar: Kontakt, Positionen, Dokumente. +- [ ] Angebot bleibt erhalten, verlinkt auf neue Buchung; Status bleibt `accepted`. +- [ ] Idempotent: zweiter Aufruf schlägt mit klarer Fehlermeldung fehl. + +--- + +### Ticket B9 — Offer-Löschen + Soft Delete + +**Typ:** Code + UI +**Aufwand:** 0.5 Tage +**Abhängigkeiten:** B1 + +**Dateien (geändert):** +- `OfferController::delete()`, Confirm-Modal `offer/modal-delete.blade.php`. + +**Regeln:** +- Soft-Delete nur möglich, wenn Offer.booking_id IS NULL. +- Sonst Error-Toast „Dieses Angebot ist mit Buchung {id} verknüpft und kann nicht gelöscht werden. Bitte zuerst Buchung entfernen." +- Alternativ Status `withdrawn` wählen. + +--- + +## Phase C — Vorlagen (Offer-Templates) + +### Ticket C1 — Template-Liste + Editor + +**Typ:** UI + Controller +**Aufwand:** 1.5 Tage +**Abhängigkeiten:** A3, A6 + +**Dateien (neu):** +- `app/Http/Controllers/OfferTemplateController.php` +- `resources/views/offer_template/index.blade.php` +- `resources/views/offer_template/detail.blade.php` + +**Felder identisch zu OfferVersion (ohne Kontakt/Summe)**. Positionen werden in `items_json` gespeichert. + +### Ticket C2 — „Als Vorlage speichern" aus Angebot + +**Typ:** Code + UI +**Aufwand:** 0.5 Tage +**Abhängigkeiten:** C1, B3 + +- Button im Offer-Header „Als Vorlage speichern" → öffnet Modal (Name, Organisation-Auswahl) → `OfferTemplateRepository::createFromVersion($v, $name, $org)`. + +### Ticket C3 — Gruppierung nach Reise-Organisation + +**Typ:** UI +**Aufwand:** 0.5 Tage +**Abhängigkeiten:** C1 + +- Dropdown im B2-Modal gruppiert Vorlagen nach `organization`. + +--- + +## Phase D — Kundenseitiger Freigabe-Link + +### Ticket D1 — Öffentliche Route auf sterntours.de + +**Typ:** Code (Symfony oder Laravel — Entscheidung unten) +**Aufwand:** 1 Tag +**Abhängigkeiten:** B6 + +**Entscheidung:** Die öffentliche Seite läuft auf **`mein.sterntours.de/angebot/{token}`** (Laravel), nicht im Symfony-Frontend. Begründung: Token-Handling und Laravel-Auth-Scaffolding liegen ohnehin in Laravel, doppelter Frontend-Bau im Legacy-System wäre Mehraufwand. URL kann per Subdomain `angebote.sterntours.de` gebrandet werden (Traefik-Route). + +**Dateien (neu):** +- `routes/web.php` — neuer Block ohne `auth.2fa`-Middleware: +```php +Route::group(['middleware' => ['web']], function () { + Route::get('/angebot/{token}', 'Public\OfferAccessController@show')->name('public_offer_show'); + Route::post('/angebot/{token}/accept', 'Public\OfferAccessController@accept')->name('public_offer_accept'); + Route::post('/angebot/{token}/decline','Public\OfferAccessController@decline')->name('public_offer_decline'); +}); +``` +- `app/Http/Controllers/Public/OfferAccessController.php` +- `app/Http/Middleware/ValidOfferToken.php` (prüft Existenz, expiry; 404 sonst; setzt `$request->attributes->set('offerVersion', …)`) + +**Akzeptanzkriterien:** +- [ ] Ungültiger/abgelaufener Token → 404 mit freundlicher Fehlerseite. +- [ ] Gültiger Token → `opened_at` wird beim ersten Aufruf gesetzt. + +### Ticket D2 — Kunden-Ansichtsseite + +**Typ:** UI +**Aufwand:** 1.5 Tage +**Abhängigkeiten:** D1 + +**Dateien (neu):** +- `resources/views/public/offer/show.blade.php` — eigenes, schlankes Layout (nicht Admin-Sidebar). +- `resources/views/public/offer/_summary.blade.php` +- `resources/views/public/offer/_actions.blade.php` +- `resources/views/public/offer/accepted.blade.php` (Danke-Seite nach Annahme) +- `resources/views/public/offer/declined.blade.php` + +**Inhalt:** +- Begrüßung („Guten Tag Frau Musterfrau"). +- PDF-Embed (iframe oder viewer.js). +- Download-Button PDF. +- Anhänge-Liste zum Download. +- Buttons „Angebot annehmen" / „Angebot ablehnen" / „Ich habe Fragen". +- Bei Annahme: Bestätigungs-Dialog („Sind Sie sicher? Mit Ihrer Bestätigung erfolgt die verbindliche Annahme."), dann POST. + +### Ticket D3 — Annahme-/Ablehnungs-Flow + +**Typ:** Code +**Aufwand:** 1 Tag +**Abhängigkeiten:** D2 + +- `OfferAccessController::accept()`: prüft Token, ruft `OfferService::markAccepted($v, 'customer_link', $ip, $ua)`, sendet interne Benachrichtigung an zuständigen Mitarbeiter (Mail + Dashboard-Notice). +- `OfferAccessController::decline()`: optionales Grund-Feld, `markDeclined()`. +- Token wird nach Annahme/Ablehnung invalidiert (`accepted_at`/`declined_at` gesetzt, erneuter Aufruf zeigt Danke-Seite mit Historie). + +**Akzeptanzkriterien:** +- [ ] Nach Annahme erhält Mitarbeiter eine Mail + Dashboard-Notiz. +- [ ] Kunde kann bei wiederholtem Öffnen des Links die Danke-Seite sehen, aber nicht erneut annehmen. +- [ ] IP/User-Agent werden protokolliert. + +### Ticket D4 — „Ich habe Fragen"-Kanal + +**Typ:** Code + UI +**Aufwand:** 0.5 Tage +**Abhängigkeiten:** D2 + +- Button öffnet Modal mit Textarea. +- Submit legt neue `communication` an (oder bis Modul 3 Phase 4 fertig: `lead_mail`/`customer_mail`) mit Richtung „eingehend", `from=contact.email`, verknüpft mit Offer. + +### Ticket D5 — Rate-Limiting + CSRF-Tokens + +**Typ:** Code +**Aufwand:** 0.5 Tage +**Abhängigkeiten:** D1 + +- `RateLimiter::for('offer-access', …)` — max 30 Requests/Minute pro IP. +- CSRF bleibt an (public Route in `web`-Group). +- Token-Rate-Limit: max 5 falsche Token-Versuche/IP/Minute (schützt vor Brute-Force). + +--- + +## Phase E — Versionierung & Archivierung + +### Ticket E1 — „Neue Version" Flow + +**Typ:** Code + UI +**Aufwand:** 1 Tag +**Abhängigkeiten:** B6, A4 + +- Button „Neue Version" im Detail-Header einer gesendeten Version. +- `OfferService::supersede()` → `OfferVersionRepository::createNewVersion()` (A3). +- UI lädt direkt die neue Version zum Editieren. +- Alte Version bleibt sichtbar im Versions-Tab (Ticket B3 `_detail_versions.blade.php`), als Read-only, mit Badge „Überholt". + +### Ticket E2 — Versions-Historie im Detail + +**Typ:** UI +**Aufwand:** 0.5 Tage +**Abhängigkeiten:** B3, E1 + +- Versions-Tab zeigt chronologische Liste aller `OfferVersion`s mit: + - Version-Nr., Status-Badge, Erstellt am, Versendet am, Summe, PDF-Link. + - Link „Diese Version ansehen" (read-only). + +### Ticket E3 — PDF-Archivierung Cron + +**Typ:** Code +**Aufwand:** 1 Tag +**Abhängigkeiten:** B5 + +**Dateien (neu):** +- `app/Console/Commands/OfferArchiveOldPdfs.php` + +**Logik:** +- Läuft nächtlich via `Console\Kernel::schedule()`. +- Für jede Offer: PDFs aller Versionen außer der aktuellen + der zuletzt akzeptierten werden auf kalten Storage (`disk('offers-cold')`) verschoben, `pdf_archived=true`. +- Konfigurierbar via `config/offers.php` (Retention-Limit, Disk-Name). + +**Akzeptanzkriterien:** +- [ ] PDF-Abruf (Ticket B5 Route) generiert das PDF bei Bedarf neu, wenn `pdf_archived=true` und Datei nicht auf Hot-Disk. +- [ ] Konfiguration über `config/offers.php` steuerbar. + +--- + +## Phase F — Polish, Automatik, Tests + +### Ticket F1 — Zähler/Badges in Contacts und Inquiries + +**Typ:** UI + Code +**Aufwand:** 0.5 Tage +**Abhängigkeiten:** B1 + +- In `resources/views/contact/index.blade.php` neue Spalte „Angebote" mit Zähler-Badge (analog Anfragen/Buchungen aus Phase 1 Contacts). +- Klick öffnet History-Modal (analog `_detail_history.blade.php`, Scope auf Offers). +- Dito in `resources/views/lead/detail.blade.php` / `inquiry/detail.blade.php`: neue Sektion „Angebote zu dieser Anfrage". + +### Ticket F2 — Ablauf-Automatik (expired-Cron) + +**Typ:** Code +**Aufwand:** 0.5 Tage +**Abhängigkeiten:** A4 + +**Dateien (neu):** +- `app/Console/Commands/OfferExpireVersions.php` + +**Logik:** +- Täglich um 03:00: setzt alle `OfferVersion` mit `valid_until < today` und `status=sent` auf `expired`. +- Wenn Offer keine aktiven Versionen mehr hat → Offer.status=expired. +- Optional: Erinnerung 3 Tage vor Ablauf an zuständigen Mitarbeiter (Feature-Flag). + +### Ticket F3 — Communications-Integration + +**Typ:** Code +**Aufwand:** 1 Tag +**Abhängigkeiten:** Modul 3 Phase 4 (nach Abschluss), B6, D4 + +- Offer-bezogene E-Mails werden mit `offer_id` (und `offer_version_id`) in `communications` hinterlegt. +- Detail-View Ticket B3 bekommt eigenen Tab „E-Mails" mit den zugehörigen Nachrichten. +- Wenn Kunde über Freigabe-Link antwortet (D4): Notification landet ebenfalls im gleichen Verlauf. + +### Ticket F4 — Feature-Tests + +**Typ:** Tests +**Aufwand:** 2 Tage +**Abhängigkeiten:** alle + +**Dateien (neu):** +- `tests/Feature/Offer/OfferCrudTest.php` +- `tests/Feature/Offer/OfferWorkflowTest.php` (draft → sent → accepted → converted) +- `tests/Feature/Offer/OfferVersioningTest.php` (supersede, history) +- `tests/Feature/Offer/OfferPublicAccessTest.php` (Token-Flow) +- `tests/Feature/Offer/OfferPdfTest.php` (PDF wird erzeugt, enthält Angebots-Nr.) +- `tests/Unit/Services/OfferServiceTest.php` + +**Coverage-Ziel:** ≥ 80 % für `OfferService` + `OfferRepository`. + +### Ticket F5 — Dokumentation + +**Typ:** Doku +**Aufwand:** 0.5 Tage +**Abhängigkeiten:** alle + +- `dev/offers/README.md` mit Funktionsübersicht. +- `dev/offers/user-guide.md` — Anleitung für Mitarbeiter (mit Screenshots). +- Eintrag in `CLAUDE.md` / `mein.sterntours.de/CLAUDE.md` für künftige AI-Assistenz. + +### Ticket F6 — Permissions-Review + Seeder-Update + +**Typ:** Code +**Aufwand:** 0.5 Tage +**Abhängigkeiten:** A6 + +- Seeder legt Permissions `offers-r`, `offers-w`, `offers-send`, `offers-accept`, `offer-templates-w` an. +- Bestehende Rollen (Admin, Mitarbeiter, Buchhaltung) werden mit sinnvoller Default-Zuweisung versehen. + +--- + +## 2. Umsetzungs-Reihenfolge (Sprint-Vorschlag, 2-Wochen-Sprints) + +| Sprint | Tickets | Ziel | +|--------|---------|------| +| S1 | A1–A7 | Fundament steht, leere Offer-Liste im Backend erreichbar | +| S2 | B1–B3 | Angebot anlegen & bearbeiten (ohne Versand) | +| S3 | B4–B6 | Dokumente + PDF + Versand funktionieren | +| S4 | B7–B9, E1, E2 | Annahme/Ablehnung, Versionierung | +| S5 | C1–C3, D1–D5 | Vorlagen-Verwaltung + Kundenseite (Parallel möglich) | +| S6 | E3, F1–F6, B8 | Archivierung, Integration in Contacts/Inquiries, Angebot→Buchung, Tests, Doku | + +**Meilenstein „MVP verwendbar" nach S3**: Mitarbeiter können ein Angebot anlegen, PDF erzeugen und versenden — Annahme zunächst nur per Admin-Statuswechsel. + +**Meilenstein „Vollversion" nach S6**: Inklusive Kundenportal-Link, Versionierung, Archivierung, Konvertierung in Buchung, Tests. + +--- + +## 3. Risiken und Gegenmaßnahmen + +| # | Risiko | Wahrscheinlichkeit | Wirkung | Gegenmaßnahme | +|---|--------|--------------------|---------|----------------| +| R1 | `BookingService::createManual()` aus Modul 4 noch nicht fertig, wenn B8 dran ist | Mittel | B8 blockiert | Mocking in S4, echte Integration in S6 | +| R2 | PDF-Generierung performance-kritisch bei vielen Anhängen (PDFMerger) | Niedrig | PDF-Erstellung dauert > 10 s | Queue-basierte Erzeugung (async Job), UI zeigt „Wird erstellt …" | +| R3 | Token-URLs werden öffentlich geteilt (Social Media etc.) | Mittel | Unerwünschter Einblick | Token-Expiry 14 Tage Standard, Viewer-Log zeigt auffälliges Öffnen | +| R4 | `travel_program_id` in `offer_items` zeigt auf v2-Daten, die wegmigrieren | Hoch | Datenbezüge brechen nach v2-Migration | Metadata speichert Titel/Preis zum Zeitpunkt der Erstellung — funktioniert auch bei fehlendem FK | +| R5 | Mitarbeiter bearbeiten ein gesendetes Angebot unbewusst (Auto-Save) | Mittel | Inkonsistente Versionen | Auto-Save nur bei `isEditable()==true`, sonst Felder disabled | +| R6 | Konflikt mit Modul 3 Phase 4 (attachments) | Hoch | Doppelte Speicherorte | Eigene `offer_files`-Tabelle jetzt, Migration in `attachments` ist eigenes Ticket nach Phase 4 — **bewusst so geplant** | + +--- + +## 4. Offene Detail-Entscheidungen (können während Umsetzung geklärt werden) + +1. **Angebots-Nummernkreis:** `{YYYY}-{5-stellig}` oder durchlaufend ohne Jahr? → Vorschlag: mit Jahr (leichter zu sortieren, klassisches Format). +2. **Subdomain für Kundenseite:** `/angebot/{token}` auf `mein.sterntours.de` (einfacher) oder `angebote.sterntours.de` (professioneller für Kunden)? → Vorschlag: Subdomain, da Kunden nicht den Admin-Hostnamen sehen sollten. Technisch ist es dieselbe Laravel-App. +3. **WYSIWYG-Editor:** TinyMCE (bereits im System für CMS) oder TipTap (moderner, lizenzfrei)? → Vorschlag: TinyMCE, da schon integriert. +4. **PDF-Engine:** TCPDF / DomPDF (beide im System, siehe `app/Libraries/`) oder weiterer Kandidat (wkhtmltopdf)? → Vorschlag: DomPDF, da bereits für Booking-PDFs genutzt; konsistente Optik. +5. **Token-Gültigkeit Default:** 14 Tage, 30 Tage, bis `valid_until`? → Vorschlag: bis `valid_until + 7 Tage` (Kunde soll nach Ablaufdatum noch die Ablehnungs-Bestätigung sehen können). + +Diese 5 Punkte würde ich Ende S1 (nach Fundament) kurz final abstimmen, damit S2 sauber losfahren kann. + +--- + +## 5. Abnahmeliste (Gesamt-Abschluss Modul 6) + +- [ ] Mitarbeiter kann aus Anfrage heraus in < 2 Minuten ein Angebot mit Vorlage erstellen. +- [ ] Mitarbeiter kann PDF generieren und ansehen. +- [ ] Mitarbeiter kann Angebot per E-Mail versenden; Kunde erhält PDF + Link. +- [ ] Kunde kann über Link das Angebot ansehen und mit einem Klick annehmen oder ablehnen. +- [ ] Mitarbeiter sieht Annahme im Dashboard und bekommt Benachrichtigung. +- [ ] Aus angenommenem Angebot kann mit einem Klick eine Buchung erzeugt werden. +- [ ] Nach Versand ist das Angebot read-only; Änderungen erzeugen eine neue Version. +- [ ] Alte Versionen bleiben auffindbar und ihr PDF weiterhin downloadbar. +- [ ] In Kontakt- und Anfrage-Ansicht ist die Anzahl der Angebote sichtbar und klickbar. +- [ ] Abgelaufene Angebote werden automatisch auf `expired` gesetzt. +- [ ] Alle neuen Routen haben Permission-Checks. +- [ ] Feature-Tests grün, Unit-Test-Coverage ≥ 80 % im Service/Repository. +- [ ] Dokumentation für Entwickler (`dev/offers/README.md`) und für Mitarbeiter (`user-guide.md`) vorhanden. diff --git a/dev/projekt-empfehlungen-2026-04.md b/dev/projekt-empfehlungen-2026-04.md new file mode 100644 index 0000000..31ae141 --- /dev/null +++ b/dev/projekt-empfehlungen-2026-04.md @@ -0,0 +1,138 @@ +# Projekt-Analyse: sinnvolle Erweiterungen und Optimierungen (mein.sterntours.de) + +Stand: April 2026. Dieses Dokument ergänzt und aktualisiert die frühere Übersicht in [`audit-april-2025.md`](./audit-april-2025.md) und fasst zusätzliche Beobachtungen aus Code-Struktur, Abhängigkeiten und typischen Laravel-Betriebsmustern zusammen. + +--- + +## Kurzfassung + +Das CRM ist ein ausgereiftes **Laravel-10**-Monolith mit klarer Schichtung (Controller → Request/Repository → Services/Models), **Zwei-Datenbank-Setup** (CRM + read-only Legacy) und **Passport** für API-Bereiche. Die größten Hebel für die nächsten Monate sind: **Wartbarkeit** (Duplikate reduzieren, moderne Laravel-Konventionen), **Sicherheit** (öffentliche API-Endpunkte härten), **Qualität** (Tests, statische Analyse), **Frontend-Tooling** (langfristig von Laravel Mix 2 weg) und **Betrieb** (Scheduler, Monitoring, asynchrone Mail). + +--- + +## Abgleich mit dem Audit April 2025 + +| Thema | Früher (Audit) | Aktueller Stand (Code-Review) | +|--------|------------------|-------------------------------| +| API-Key Booking-Import | Hardcoded im Controller | **Erledigt im Sinne von Konfiguration:** `API/BookingController` nutzt `config('app.success_key')` → `env('SUCCESS_KEY')` in `config/app.php`. Sicherstellen, dass `.env`/`SUCCESS_KEY` in allen Umgebungen gesetzt und **nicht** ins Repo gelangt. | +| PHPUnit / SQLite zweite DB | `mysql_stern` fehlt in Tests | **Weiterhin relevant:** In `phpunit.xml` sind keine `DB_*`-Variablen für die Stern-Verbindung gesetzt; Tests mit Legacy-Models bleiben erschwert. | +| Frontend (Mix 2, node-sass) | Veraltet | **Unverändert:** `package.json` mit Laravel Mix **2.1** und sehr altem Ökosystem – größeres Migrationsprojekt. | +| Code-Duplizierung Booking/Lead (Mail-Verzeichnisse) | Offen | **Weiterhin sinnvoll:** Gemeinsamen Service/Trait extrahieren. | + +--- + +## 1. Architektur und Wartbarkeit + +### 1.1 Gemeinsame Logik zusammenführen + +- **Mail-Verzeichnis-Logik** in `Services/Booking.php` und `Services/Lead.php` (siehe Audit): Ziel sollte ein klar benannter **`MailDirService`** (oder Trait nur, wenn wirklich nur technische Wiederholung) sein, inklusive Tests. +- **Parallele Mail-Repositories** (`CustomerMailRepository`, `LeadMailRepository`, `CustomerFewoMailRepository`): `sendMail`/`prepareMessageFull` sind sich sehr ähnlich – mittelfristig Basis-Klasse oder gemeinsames **„Mail senden mit Anhängen/Fehlerstatus“**-Modul prüfen (ohne Big-Bang-Refactoring). + +### 1.2 Laravel-Konventionen und Typisierung + +- Controller-Methoden mit **`Illuminate\Http\Request` injizieren** statt `\Request::all()` (globale Facade), wo möglich – verbessert Testbarkeit und IDE-Unterstützung. +- **`BaseRepository` und ältere Services** schrittweise mit **Return-Types** und strengeren Parametertypen versehen (Audit erwähnt das bereits). +- API-Routen nutzen noch **String-Controller-Referenzen** (`'API\BookingController@import'`). Migration auf **Klassen-Syntax** (`[BookingController::class, 'import']`) erleichtert spätere Laravel-11/12-Upgrades und Refactoring-Tools. + +### 1.3 Offene TODOs gezielt abarbeiten + +Im Projekt existieren zahlreiche `//TODO`-Marker (u. a. CMS, Settings „linked“-Prüfungen, Mail-Modals „load subdirs by pos id“, IQ-ContentTree). Sinnvoll ist ein **kleines Backlog** nach Kategorie (Bug, UX-Schuld, Sicherheit) – nicht alles auf einmal, aber sichtbar machen, damit keine stillen Lücken bleiben. + +--- + +## 2. Sicherheit + +### 2.1 Öffentliche API-Endpunkte + +- **`POST /api/navigation/cache/clear`** ist ohne `auth:api` definiert. Jeder kann damit theoretisch den Navigations-Cache leeren (DoS/Cache-Störung). **Empfehlung:** Secret-Header, IP-Allowlist, oder **nur authentifizierte** Aufrufer (je nach Aufrufer-Architektur). +- **`booking/import`** akzeptiert laut Routen **GET und POST**. GET-Requests mit Seiteneffekten (Import) sind problematisch (Logs, Proxies, prefetch). **Empfehlung:** nur **POST**, dokumentieren; Legacy-GET nur temporär mit Deprecation-Header/Log. +- Booking-Import: Neben dem Shared Secret **Rate-Limiting** prüfen (eigener `RateLimiter::for('booking-import', …)`), falls der Endpunkt von wenigen festen IPs kommt: zusätzlich **IP-Bindung** in Middleware. + +### 2.2 API allgemein + +- Öffentliche Routen (`cms/*`, `passolution`, `navigation/*`) sollten einmal **inventarisiert** werden: Welche liefern personenbezogene oder interne Daten? Braucht es **API-Versionierung** (`/api/v1/...`) für externe Konsumenten? + +### 2.3 Abhängigkeiten + +- In `composer.json` stehen mehrere Pakete mit **`"*"`** (z. B. `iqcontent/laravel-filemanager`, `jenssegers/date`, …). **Empfehlung:** auf **konkrete Versionen** pinnen, um reproduzierbare Builds und Sicherheits-Updates zu gewährleisten. + +--- + +## 3. Performance und Skalierung + +### 3.1 E-Mail synchron im Request + +Versand erfolgt in Repositories per `Mail::…->send()` im gleichen Prozess wie der HTTP-Request. Unter Last verlängert das Antwortzeiten. + +- **Kurz:** `Mail::queue()` bzw. **Queued Mailables** / **`ShouldQueue`** für nicht-kritische Benachrichtigungen. +- **Voraussetzung:** zuverlässiger **Queue-Worker** (Supervisor/Docker) und Monitoring fehlgeschlagener Jobs. + +### 3.2 Scheduler + +`app/Console/Kernel.php` enthält einen **leeren** `schedule()`-Block. Wenn Cron-Jobs extern oder in anderer Form laufen, **dokumentieren**; sonst wiederkehrende Tasks (Newsletter-Sync, Bereinigungen, Cache-Warmup) **hier** oder als dokumentierte `artisan`-Crons abbilden – sonst droht „vergessene“ Automatisierung bei Serverwechsel. + +### 3.3 Caching + +- Navigation nutzt bereits Caching im Service – gut. **Strategie:** TTLs, Cache-Tags (falls Redis/Memcached), und Invalidierung nur über vertrauenswürdige Wege (siehe 2.1). + +--- + +## 4. Qualität, Tests und Entwicklererfahrung + +### 4.1 Testabdeckung + +Aktuell ein **kleines Set** Feature/Unit-Tests (siehe Audit-Liste). Sinnvolle nächste Schritte: + +- **Factories** für zentrale Domänenobjekte (`Customer`, `Booking`, `Lead`) – Audit nennt das bereits. +- **Zweite DB in PHPUnit** konfigurieren (Audit-Vorschlag mit SQLite zweiter Connection), damit Legacy-Models überhaupt testbar werden. +- Kritische **API-Verträge** (Booking-Import, Fewo-API) mit **Contract-Tests** absichern. + +### 4.2 Statische Analyse und Formatierung + +- **Laravel Pint** (oder PHP-CS-Fixer) für einheitlichen Style – aktuell keine `pint.json` im Projektroot sichtbar. +- **PHPStan/Larastan** (Level schrittweise erhöhen) für frühe Fehler in Repositories und Services. + +### 4.3 Observability + +- Zentral **strukturiertes Logging** für API-Fehler (ohne Secrets), optional eigener Log-Channel für `booking/import`. +- Langfristig: **Laravel Pulse** oder APM (wenn nicht schon vorhanden) für langsame Requests und Queue-Latenzen. + +--- + +## 5. Frontend und Assets + +Unverändert zur Einschätzung im Audit: + +- **Laravel Mix 2**, **Bootstrap 4**, **node-sass** – technisch am Ende der Fahnenstange. +- **Sinnvolle Richtung:** Migration auf **Vite** + **sass (dart-sass)** + schrittweise **Bootstrap 5** oder gezieltes Design-System – als **eigenes Projekt** mit Pilot-View und Build-Pipeline in CI. + +--- + +## 6. Framework- und PHP-Roadmap + +- **Laravel 10** ist LTS-fähig; mittelfristig **Upgrade-Pfad zu Laravel 11** planen (Routing, `bootstrap/app.php`, strukturelle Änderungen). +- **`jenssegers/date`** ist überflüssig, wenn überall **Carbon** genutzt wird – Dependency reduzieren. +- **PHP:** `composer.json` erlaubt 8.1–8.3; einheitliche **8.2/8.3**-Zielversion in CI und Docker festlegen. + +--- + +## 7. Priorisierte Maßnahmen (Vorschlag) + +| Priorität | Maßnahme | Aufwand | +|-----------|----------|---------| +| Hoch | `navigation/cache/clear` absichern (Auth/Secret/IP) | Klein–mittel | +| Hoch | `booking/import`: nur POST, Rate-Limit; Aufrufer-Doku | Klein | +| Hoch | Composer-`**`-Versionen durch feste Versionen ersetzen | Mittel | +| Mittel | `MailDirService` / Duplikate Booking–Lead | Mittel | +| Mittel | Mail-Versand für geeignete Fälle über Queue | Mittel–groß | +| Mittel | PHPUnit: zweite DB + mehr Factories | Mittel | +| Mittel | Pint + Larastan einführen (CI) | Mittel | +| Niedrig | API auf Klassen-Routen, Request-Injection ausbreiten | Laufend | +| Strategisch | Frontend: Vite + Tooling-Modernisierung | Groß | + +--- + +## Referenz + +- Bestehende Detail-Audits und Test-Kommandos: [`audit-april-2025.md`](./audit-april-2025.md) +- UI-/Navigations-Kontext: [`frontend-navigation/BACKEND-UI.md`](./frontend-navigation/BACKEND-UI.md) diff --git a/docs/NEWSLETTER.md b/docs/NEWSLETTER.md new file mode 100644 index 0000000..6ea548d --- /dev/null +++ b/docs/NEWSLETTER.md @@ -0,0 +1,324 @@ +# Newsletter-Modul Dokumentation + +## Übersicht + +Das Newsletter-Modul ermöglicht die zentrale Verwaltung von Newsletter-Kontakten aus beiden Buchungssystemen (Kulturreisen und Ferienwohnungen). Es synchronisiert automatisch Kundendaten aus Buchungen und bietet Export-Funktionen für Newsletter-Kampagnen. + +## Features + +- ✅ Zentrale Kontaktverwaltung für beide Newsletter-Gruppen +- ✅ Automatische Synchronisation aus Buchungssystemen +- ✅ Duplikat-Erkennung über E-Mail-Adressen +- ✅ Tracking von Buchungsstatistiken +- ✅ Status-Verwaltung (Aktiv, Inaktiv, Abgemeldet, Bounced) +- ✅ Herkunfts-Tracking (Buchung, Newsletter-Anmeldung, etc.) +- ✅ Export-Funktion (CSV) +- ✅ Aktivitäts-Log für jeden Kontakt +- ✅ Filter- und Suchfunktionen + +## Installation + +### 1. Migrationen ausführen + +```bash +./vendor/bin/sail artisan migrate +``` + +Dies erstellt folgende Tabellen: +- `newsletter_contacts` - Haupt-Kontakte-Tabelle +- `newsletter_logs` - Aktivitäts-Log + +### 2. Berechtigung hinzufügen + +In der Datenbank muss die Berechtigung `cms-newsletter` für Benutzer aktiviert werden, die Zugriff auf das Newsletter-Modul haben sollen. + +```sql +-- Beispiel: Berechtigung für einen User aktivieren +-- Dies muss über das bestehende Berechtigungssystem erfolgen +``` + +### 3. Erste Synchronisation + +Nach der Installation sollte eine vollständige Synchronisation durchgeführt werden: + +```bash +# Alle Buchungen synchronisieren +./vendor/bin/sail artisan newsletter:sync-kulturreisen --force +./vendor/bin/sail artisan newsletter:sync-ferienwohnungen --force +``` + +## Verwendung + +### Admin-Panel + +Das Newsletter-Modul ist im Admin-Panel unter **CMS > Inhalte > Newsletter** erreichbar. + +#### Hauptfunktionen: + +1. **Kontaktliste** + - Übersicht aller Newsletter-Kontakte + - Filter nach Gruppe, Status, Herkunft + - Suchfunktion nach E-Mail und Name + - DataTables mit Sortierung und Pagination + +2. **Kontakt-Detail** + - Vollständige Kontaktinformationen + - Buchungsstatistiken + - Aktivitäts-Log + - Verlinkung zu Original-Kundendaten + +3. **Kontakt bearbeiten** + - Manuelles Erstellen von Kontakten + - Bearbeiten von Kontaktdaten + - Status-Änderung + - Gruppen-Zuweisung + +4. **Synchronisation** + - Manuelle Synchronisation über UI + - Incremental Sync (letzte 30 Tage) + - Full Sync (alle Buchungen) + +5. **Export** + - Export nach Gruppe + - Export nach Status + - CSV-Format + - Vorkonfigurierte Export-Optionen + +### Artisan-Befehle + +#### Synchronisation Kulturreisen + +```bash +# Incremental Sync (letzte 30 Tage) +./vendor/bin/sail artisan newsletter:sync-kulturreisen + +# Full Sync (alle Buchungen) +./vendor/bin/sail artisan newsletter:sync-kulturreisen --force +``` + +Dieser Befehl: +- Liest alle Buchungen aus der `booking` Tabelle +- Verknüpft mit `customer` Daten +- Erstellt oder aktualisiert Newsletter-Kontakte +- Zählt Buchungen pro Kunde +- Trackt letzte Buchung + +#### Synchronisation Ferienwohnungen + +```bash +# Incremental Sync (letzte 30 Tage) +./vendor/bin/sail artisan newsletter:sync-ferienwohnungen + +# Full Sync (alle Buchungen) +./vendor/bin/sail artisan newsletter:sync-ferienwohnungen --force +``` + +Dieser Befehl: +- Liest Buchungen aus `travel_user_booking_fewos` mit `invoice_number` +- Nur Buchungen mit reiner Nummer (keine Storno etc.) +- Verknüpft mit `travel_users` Daten +- Erstellt oder aktualisiert Newsletter-Kontakte +- Zählt Buchungen pro Kunde + +### Automatische Synchronisation + +Für regelmäßige Synchronisation empfiehlt sich ein Cron-Job: + +```bash +# In der crontab +# Täglich um 2 Uhr morgens +0 2 * * * cd /var/www/html && ./vendor/bin/sail artisan newsletter:sync-kulturreisen +0 2 * * * cd /var/www/html && ./vendor/bin/sail artisan newsletter:sync-ferienwohnungen +``` + +Oder im Laravel Scheduler (`app/Console/Kernel.php`): + +```php +protected function schedule(Schedule $schedule) +{ + // Täglich um 2 Uhr + $schedule->command('newsletter:sync-kulturreisen')->dailyAt('02:00'); + $schedule->command('newsletter:sync-ferienwohnungen')->dailyAt('02:15'); +} +``` + +## Datenmodell + +### Newsletter Contact + +| Feld | Typ | Beschreibung | +|------|-----|--------------| +| `id` | bigint | Primary Key | +| `email` | string | E-Mail-Adresse (unique) | +| `firstname` | string | Vorname | +| `lastname` | string | Nachname | +| `group_kulturreisen` | boolean | Zugehörigkeit zur Gruppe Kulturreisen | +| `group_ferienwohnungen` | boolean | Zugehörigkeit zur Gruppe Ferienwohnungen | +| `source` | enum | Herkunft des Kontakts | +| `status` | enum | Status (active, inactive, unsubscribed, bounced) | +| `subscribed_at` | timestamp | Zeitpunkt der Anmeldung | +| `unsubscribed_at` | timestamp | Zeitpunkt der Abmeldung | +| `last_booking_at` | timestamp | Zeitpunkt der letzten Buchung | +| `total_bookings_kulturreisen` | int | Anzahl Buchungen Kulturreisen | +| `total_bookings_ferienwohnungen` | int | Anzahl Buchungen Ferienwohnungen | +| `customer_id` | int | Referenz zu `customer` (Kulturreisen) | +| `travel_user_id` | int | Referenz zu `travel_users` (Ferienwohnungen) | +| `last_synced_at` | timestamp | Letzte Synchronisation | +| `sync_hash` | string | Hash für Duplikat-Erkennung | +| `notes` | text | Notizen | + +### Newsletter Log + +| Feld | Typ | Beschreibung | +|------|-----|--------------| +| `id` | bigint | Primary Key | +| `newsletter_contact_id` | bigint | Foreign Key zu newsletter_contacts | +| `action` | enum | Aktion (subscribed, unsubscribed, etc.) | +| `description` | string | Beschreibung der Aktion | +| `metadata` | json | Zusätzliche Daten | +| `user_id` | int | Admin-User der die Aktion ausgeführt hat | + +## Status-Typen + +- **active**: Aktiver Newsletter-Empfänger +- **inactive**: Inaktiv (z.B. temporär deaktiviert) +- **unsubscribed**: Abgemeldet vom Newsletter +- **bounced**: E-Mail nicht zustellbar (Bounced) + +## Herkunfts-Typen + +- **booking_kulturreisen**: Aus Kulturreisen-Buchung +- **booking_ferienwohnungen**: Aus Ferienwohnungs-Buchung +- **newsletter_signup**: Newsletter-Anmeldung über Formular +- **manual**: Manuell erstellt +- **import**: Über Import hinzugefügt + +## Export-Formate + +### CSV-Export + +Der CSV-Export enthält folgende Spalten: + +1. ID +2. E-Mail +3. Vorname +4. Nachname +5. Gruppe Kulturreisen (Ja/Nein) +6. Gruppe Ferienwohnungen (Ja/Nein) +7. Status +8. Herkunft +9. Buchungen Kulturreisen +10. Buchungen Ferienwohnungen +11. Letzte Buchung +12. Angemeldet am +13. Abgemeldet am +14. Erstellt am + +## Best Practices + +### Duplikat-Vermeidung + +Das System verwendet einen Hash basierend auf E-Mail und Quelle zur Duplikat-Erkennung. Kontakte werden automatisch zusammengeführt, wenn: +- Dieselbe E-Mail-Adresse in beiden Systemen vorkommt +- Der neuere Datensatz wird bevorzugt +- Gruppenzugehörigkeiten werden kombiniert + +### Datenschutz + +- Soft-Delete: Gelöschte Kontakte werden nicht permanent entfernt +- Log-Tracking: Alle Änderungen werden protokolliert +- Abmelde-Funktion: Kontakte können sich jederzeit abmelden +- Export-Kontrolle: Nur autorisierte Benutzer können exportieren + +### Performance + +- Incremental Sync: Standardmäßig werden nur die letzten 30 Tage synchronisiert +- Indexierung: E-Mail, Status und Gruppen sind indexiert +- DataTables: Server-Side Processing für große Datenmengen +- Batch-Processing: Synchronisation verarbeitet Datensätze effizient + +## Troubleshooting + +### Problem: Synchronisation schlägt fehl + +**Lösung:** +1. Prüfe Datenbankverbindungen (beide Datenbanken müssen erreichbar sein) +2. Prüfe Logs: `storage/logs/laravel.log` +3. Führe Sync mit `--force` aus für vollständige Synchronisation + +### Problem: Duplikate in der Liste + +**Lösung:** +1. Prüfe `sync_hash` Spalte +2. Führe manuelle Bereinigung durch +3. Kontakte können manuell zusammengeführt werden + +### Problem: Export enthält keine Daten + +**Lösung:** +1. Prüfe Filter-Einstellungen +2. Prüfe Status der Kontakte +3. Prüfe Berechtigungen + +## API-Endpunkte + +Alle Routen sind unter dem Middleware-Schutz `['admin', '2fa', 'auth.permission:cms-newsletter']`. + +| Methode | Route | Beschreibung | +|---------|-------|--------------| +| GET | `/newsletter` | Liste aller Kontakte | +| GET | `/newsletter/datatable` | DataTables AJAX | +| GET | `/newsletter/{id}` | Detail eines Kontakts | +| GET | `/newsletter/{id}/edit` | Bearbeitungsformular | +| POST | `/newsletter/{id}/store` | Speichern | +| DELETE | `/newsletter/{id}` | Löschen (soft delete) | +| POST | `/newsletter/{id}/unsubscribe` | Abmelden | +| POST | `/newsletter/{id}/resubscribe` | Wieder aktivieren | +| POST | `/newsletter/sync` | Synchronisation starten | +| GET | `/newsletter/export` | Export | + +## Erweiterungen + +### Integration mit Newsletter-Diensten + +Das Modul kann einfach mit externen Newsletter-Diensten (Mailchimp, SendGrid, etc.) integriert werden: + +```php +// Beispiel: Export für Mailchimp +$contacts = NewsletterContact::active()->kulturreisen()->get(); +foreach ($contacts as $contact) { + // Mailchimp API Call +} +``` + +### Webhook für Abmeldungen + +Eine öffentliche Abmelde-Route kann hinzugefügt werden: + +```php +// routes/web.php +Route::get('/newsletter/unsubscribe/{token}', 'NewsletterPublicController@unsubscribe'); +``` + +### Double-Opt-In + +Für Newsletter-Anmeldungen kann ein Double-Opt-In Prozess implementiert werden. + +## Support + +Bei Fragen oder Problemen: +1. Prüfe diese Dokumentation +2. Prüfe Laravel Logs +3. Prüfe Artisan Command Output +4. Kontaktiere das Entwickler-Team + +## Changelog + +### Version 1.0.0 (2025-11-07) +- ✅ Initiales Release +- ✅ Kontaktverwaltung +- ✅ Synchronisation Kulturreisen +- ✅ Synchronisation Ferienwohnungen +- ✅ Export-Funktion +- ✅ Admin-Panel Integration + diff --git a/init.sh b/init.sh new file mode 100644 index 0000000..e03efe0 --- /dev/null +++ b/init.sh @@ -0,0 +1,151 @@ +#!/bin/bash + +# Sterntours Laravel Projekt - Initialisierungsskript +# Dieses Script führt alle notwendigen Schritte zur Initialisierung des Projekts aus + +set -e # Beendet das Script bei Fehlern + +echo "================================================" +echo "Sterntours Laravel Projekt - Initialisierung" +echo "================================================" +echo "" + +# Farben für Ausgabe +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +RED='\033[0;31m' +NC='\033[0m' # No Color + +# Funktion für Erfolgsmeldungen +success() { + echo -e "${GREEN}✓ $1${NC}" +} + +# Funktion für Info-Meldungen +info() { + echo -e "${YELLOW}➜ $1${NC}" +} + +# Funktion für Fehler +error() { + echo -e "${RED}✗ $1${NC}" +} + +# 1. Prüfe ob Docker läuft +info "Prüfe Docker Installation..." +if ! command -v docker &> /dev/null; then + error "Docker ist nicht installiert!" + exit 1 +fi + +if ! docker info &> /dev/null; then + error "Docker läuft nicht! Bitte starte Docker." + exit 1 +fi +success "Docker ist bereit" + +# 2. Prüfe ob Composer installiert ist +info "Prüfe Composer Installation..." +if ! command -v composer &> /dev/null; then + error "Composer ist nicht installiert!" + exit 1 +fi +success "Composer ist installiert" + +# 3. .env Datei erstellen falls nicht vorhanden +info "Prüfe .env Datei..." +if [ ! -f .env ]; then + if [ -f .env.example ]; then + cp .env.example .env + success ".env Datei erstellt" + else + error ".env.example nicht gefunden!" + exit 1 + fi +else + success ".env Datei existiert bereits" +fi + +# 4. Composer Dependencies installieren +info "Installiere Composer Dependencies..." +composer install --no-interaction --prefer-dist --optimize-autoloader +success "Composer Dependencies installiert" + +# 5. NPM Dependencies installieren +info "Prüfe Node.js Installation..." +if command -v npm &> /dev/null; then + info "Installiere NPM Dependencies..." + npm install + success "NPM Dependencies installiert" +else + error "Node.js/NPM nicht gefunden - überspringe NPM Installation" +fi + +# 6. Application Key generieren +info "Generiere Application Key..." +php artisan key:generate --force +success "Application Key generiert" + +# 7. Erstelle proxy Netzwerk falls nicht vorhanden +info "Erstelle Docker Proxy Netzwerk..." +if ! docker network inspect proxy &> /dev/null; then + docker network create proxy + success "Proxy Netzwerk erstellt" +else + success "Proxy Netzwerk existiert bereits" +fi + +# 8. Docker Container starten +info "Starte Docker Container (Laravel Sail)..." +./vendor/bin/sail up -d +success "Docker Container gestartet" + +# 9. Warte bis Datenbank bereit ist +info "Warte auf Datenbank..." +sleep 10 +success "Datenbank sollte bereit sein" + +# 10. Datenbank Migrationen ausführen +info "Führe Datenbank Migrationen aus..." +./vendor/bin/sail artisan migrate --force +success "Datenbank Migrationen ausgeführt" + +# 11. Storage Links erstellen +info "Erstelle Storage Links..." +./vendor/bin/sail artisan storage:link +success "Storage Links erstellt" + +# 12. Cache leeren +info "Leere Application Cache..." +./vendor/bin/sail artisan config:clear +./vendor/bin/sail artisan cache:clear +./vendor/bin/sail artisan view:clear +./vendor/bin/sail artisan route:clear +success "Cache geleert" + +# 13. Optimierung (optional) +info "Optimiere Application..." +./vendor/bin/sail artisan config:cache +./vendor/bin/sail artisan route:cache +./vendor/bin/sail artisan view:cache +success "Application optimiert" + +echo "" +echo "================================================" +echo -e "${GREEN}✓ Initialisierung erfolgreich abgeschlossen!${NC}" +echo "================================================" +echo "" +echo "Dein Projekt ist nun bereit:" +echo " - Haupt-URL: https://mein.sterntours.test" +echo " - Alternative URL: https://sterntours.test" +echo " - Mailpit Dashboard: https://sterntours-mail.test" +echo " - Vite Assets: https://assets.sterntours.test" +echo "" +echo "Nützliche Befehle:" +echo " - Container stoppen: ./vendor/bin/sail down" +echo " - Container starten: ./vendor/bin/sail up -d" +echo " - Logs anzeigen: ./vendor/bin/sail logs -f" +echo " - Artisan Befehle: ./vendor/bin/sail artisan " +echo " - Tests ausführen: ./vendor/bin/sail test" +echo "" + diff --git a/mein-sterntours.code-workspace b/mein-sterntours.code-workspace deleted file mode 100644 index 876a149..0000000 --- a/mein-sterntours.code-workspace +++ /dev/null @@ -1,8 +0,0 @@ -{ - "folders": [ - { - "path": "." - } - ], - "settings": {} -} \ No newline at end of file diff --git a/newsletter/assets/jordanien-1.jpg b/newsletter/assets/jordanien-1.jpg new file mode 100644 index 0000000..93a86d8 Binary files /dev/null and b/newsletter/assets/jordanien-1.jpg differ diff --git a/newsletter/assets/jordanien-1.png b/newsletter/assets/jordanien-1.png new file mode 100644 index 0000000..1362e81 Binary files /dev/null and b/newsletter/assets/jordanien-1.png differ diff --git a/newsletter/assets/jordanien-2.jpg b/newsletter/assets/jordanien-2.jpg new file mode 100644 index 0000000..5baf01b Binary files /dev/null and b/newsletter/assets/jordanien-2.jpg differ diff --git a/newsletter/assets/jordanien-2.png b/newsletter/assets/jordanien-2.png new file mode 100644 index 0000000..c3722b6 Binary files /dev/null and b/newsletter/assets/jordanien-2.png differ diff --git a/newsletter/assets/sterntours-logo.png b/newsletter/assets/sterntours-logo.png new file mode 100644 index 0000000..bb18b78 Binary files /dev/null and b/newsletter/assets/sterntours-logo.png differ diff --git a/newsletter/assets/usedom-1.jpg b/newsletter/assets/usedom-1.jpg new file mode 100644 index 0000000..e9cd617 Binary files /dev/null and b/newsletter/assets/usedom-1.jpg differ diff --git a/newsletter/assets/usedom-1.png b/newsletter/assets/usedom-1.png new file mode 100644 index 0000000..9b7f0aa Binary files /dev/null and b/newsletter/assets/usedom-1.png differ diff --git a/newsletter/assets/usedom-2.jpg b/newsletter/assets/usedom-2.jpg new file mode 100644 index 0000000..952b138 Binary files /dev/null and b/newsletter/assets/usedom-2.jpg differ diff --git a/newsletter/assets/usedom-2.png b/newsletter/assets/usedom-2.png new file mode 100644 index 0000000..ad73731 Binary files /dev/null and b/newsletter/assets/usedom-2.png differ diff --git a/newsletter/assets/wlogo.png b/newsletter/assets/wlogo.png new file mode 100644 index 0000000..bb18b78 Binary files /dev/null and b/newsletter/assets/wlogo.png differ diff --git a/newsletter/sterntours-nl1.html b/newsletter/sterntours-nl1.html new file mode 100644 index 0000000..f575929 --- /dev/null +++ b/newsletter/sterntours-nl1.html @@ -0,0 +1,376 @@ + + + + + + + STERN TOURS Newsletter + + + + + + + + + + + + + + + + + + + + diff --git a/newsletter/usedom-nl1.html b/newsletter/usedom-nl1.html new file mode 100644 index 0000000..7008d96 --- /dev/null +++ b/newsletter/usedom-nl1.html @@ -0,0 +1,378 @@ + + + + + + + STERN TOURS Newsletter - Usedom + + + + + + + + + + + + + + + + + + + + diff --git a/packages/digital-bird/shoppingcart/LICENSE b/packages/digital-bird/shoppingcart/LICENSE new file mode 100644 index 0000000..61c6afc --- /dev/null +++ b/packages/digital-bird/shoppingcart/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Rob Gloudemans + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/packages/digital-bird/shoppingcart/README.md b/packages/digital-bird/shoppingcart/README.md new file mode 100644 index 0000000..c03bb4c --- /dev/null +++ b/packages/digital-bird/shoppingcart/README.md @@ -0,0 +1,491 @@ +## LaravelShoppingcart +[![License](https://poser.pugx.org/gloudemans/shoppingcart/license)](https://packagist.org/packages/gloudemans/shoppingcart) + +A simple shoppingcart implementation for Laravel. + +## Installation + +Install the package through [Composer](http://getcomposer.org/). + +Run the Composer require command from the Terminal: + + composer require digital-bird/shoppingcart + +If you're using Laravel 5.5, this is all there is to do. + +Should you still be on version 5.4 of Laravel, the final steps for you are to add the service provider of the package and alias the package. To do this open your `config/app.php` file. + +Add a new line to the `providers` array: + + Gloudemans\Shoppingcart\ShoppingcartServiceProvider::class + +And optionally add a new line to the `aliases` array: + + 'Cart' => Gloudemans\Shoppingcart\Facades\Cart::class, + +Now you're ready to start using the shoppingcart in your application. + +**As of version 2 of this package it's possibly to use dependency injection to inject an instance of the Cart class into your controller or other class** + +## Overview +Look at one of the following topics to learn more about LaravelShoppingcart + +* [Usage](#usage) +* [Collections](#collections) +* [Instances](#instances) +* [Models](#models) +* [Database](#database) +* [Exceptions](#exceptions) +* [Events](#events) +* [Example](#example) + +## Usage + +The shoppingcart gives you the following methods to use: + +### Cart::add() + +Adding an item to the cart is really simple, you just use the `add()` method, which accepts a variety of parameters. + +In its most basic form you can specify the id, name, quantity, price, and tax rate of the product you'd like to add to the cart. + +```php +Cart::add('293ad', 'Product 1', 1, 9.99, 10); +``` + +As an optional sixth parameter you can pass it options, so you can add multiple items with the same id, but with (for instance) a different size. + +The fifth parameter is the tax rate. Eg 10 for 10%. + +```php +Cart::add('293ad', 'Product 1', 1, 9.99, 10, ['size' => 'large']); +``` + +**The `add()` method will return an CartItem instance of the item you just added to the cart.** + +Maybe you prefer to add the item using an array? As long as the array contains the required keys, you can pass it to the method. The options key is optional. + +```php +Cart::add(['id' => '293ad', 'name' => 'Product 1', 'qty' => 1, 'price' => 9.99, 'taxRate' => 10, 'options' => ['size' => 'large']]); +``` + +New in version 2 of the package is the possibility to work with the [Buyable](#buyable) interface. The way this works is that you have a model implement the `Buyable` interface, which will make you implement a few methods so the package knows how to get the id, name and price from your model. +This way you can just pass the `add()` method a model and the quantity and it will automatically add it to the cart. + +The path to the `Buyable` interface is: + + Gloudemans\Shoppingcart\Contracts\Buyable; + +**As an added bonus it will automatically associate the model with the CartItem** + +```php +Cart::add($product, 1, ['size' => 'large']); +``` +As an optional third parameter you can add options. +```php +Cart::add($product, 1, ['size' => 'large']); +``` + +Finally, you can also add multipe items to the cart at once. +You can just pass the `add()` method an array of arrays, or an array of Buyables and they will be added to the cart. + +**When adding multiple items to the cart, the `add()` method will return an array of CartItems.** + +```php +Cart::add([ + ['id' => '293ad', 'name' => 'Product 1', 'qty' => 1, 'price' => 10.00, 'taxRate' => 10], + ['id' => '4832k', 'name' => 'Product 2', 'qty' => 1, 'price' => 10.00, 'taxRate' => 10, 'options' => ['size' => 'large']] +]); + +Cart::add([$product1, $product2]); + +``` + +### Cart::update() + +To update an item in the cart, you'll first need the rowId of the item. +Next you can use the `update()` method to update it. + +If you simply want to update the quantity, you'll pass the update method the rowId and the new quantity: + +```php +$rowId = 'da39a3ee5e6b4b0d3255bfef95601890afd80709'; + +Cart::update($rowId, 2); // Will update the quantity +``` + +If you want to update more attributes of the item, you can either pass the update method an array or a `Buyable` as the second parameter. This way you can update all information of the item with the given rowId. + +```php +Cart::update($rowId, ['name' => 'Product 1']); // Will update the name + +Cart::update($rowId, $product); // Will update the id, name and price + +``` + +### Cart::remove() + +To remove an item for the cart, you'll again need the rowId. This rowId you simply pass to the `remove()` method and it will remove the item from the cart. + +```php +$rowId = 'da39a3ee5e6b4b0d3255bfef95601890afd80709'; + +Cart::remove($rowId); +``` + +### Cart::get() + +If you want to get an item from the cart using its rowId, you can simply call the `get()` method on the cart and pass it the rowId. + +```php +$rowId = 'da39a3ee5e6b4b0d3255bfef95601890afd80709'; + +Cart::get($rowId); +``` + +### Cart::content() + +Of course you also want to get the carts content. This is where you'll use the `content` method. This method will return a Collection of CartItems which you can iterate over and show the content to your customers. + +```php +Cart::content(); +``` + +This method will return the content of the current cart instance, if you want the content of another instance, simply chain the calls. + +```php +Cart::instance('wishlist')->content(); +``` + +### Cart::destroy() + +If you want to completely remove the content of a cart, you can call the destroy method on the cart. This will remove all CartItems from the cart for the current cart instance. + +```php +Cart::destroy(); +``` + +### Cart::total() + +The `total()` method can be used to get the calculated total of all items in the cart, given there price and quantity. + +```php +Cart::total(); +``` + +The method will automatically format the result, which you can tweak using the three optional parameters + +```php +Cart::total($decimals, $decimalSeperator, $thousandSeperator); +``` + +You can set the default number format in the config file. + +**If you're not using the Facade, but use dependency injection in your (for instance) Controller, you can also simply get the total property `$cart->total`** + +### Cart::tax() + +The `tax()` method can be used to get the calculated amount of tax for all items in the cart, given there price and quantity. + +```php +Cart::tax(); +``` + +The method will automatically format the result, which you can tweak using the three optional parameters + +```php +Cart::tax($decimals, $decimalSeperator, $thousandSeperator); +``` + +You can set the default number format in the config file. + +**If you're not using the Facade, but use dependency injection in your (for instance) Controller, you can also simply get the tax property `$cart->tax`** + +### Cart::subtotal() + +The `subtotal()` method can be used to get the total of all items in the cart, minus the total amount of tax. + +```php +Cart::subtotal(); +``` + +The method will automatically format the result, which you can tweak using the three optional parameters + +```php +Cart::subtotal($decimals, $decimalSeperator, $thousandSeperator); +``` + +You can set the default number format in the config file. + +**If you're not using the Facade, but use dependency injection in your (for instance) Controller, you can also simply get the subtotal property `$cart->subtotal`** + +### Cart::count() + +If you want to know how many items there are in your cart, you can use the `count()` method. This method will return the total number of items in the cart. So if you've added 2 books and 1 shirt, it will return 3 items. + +```php +Cart::count(); +``` + +### Cart::search() + +To find an item in the cart, you can use the `search()` method. + +**This method was changed on version 2** + +Behind the scenes, the method simply uses the filter method of the Laravel Collection class. This means you must pass it a Closure in which you'll specify you search terms. + +If you for instance want to find all items with an id of 1: + +```php +$cart->search(function ($cartItem, $rowId) { + return $cartItem->id === 1; +}); +``` + +As you can see the Closure will receive two parameters. The first is the CartItem to perform the check against. The second parameter is the rowId of this CartItem. + +**The method will return a Collection containing all CartItems that where found** + +This way of searching gives you total control over the search process and gives you the ability to create very precise and specific searches. + +## Collections + +On multiple instances the Cart will return to you a Collection. This is just a simple Laravel Collection, so all methods you can call on a Laravel Collection are also available on the result. + +As an example, you can quicky get the number of unique products in a cart: + +```php +Cart::content()->count(); +``` + +Or you can group the content by the id of the products: + +```php +Cart::content()->groupBy('id'); +``` + +## Instances + +The packages supports multiple instances of the cart. The way this works is like this: + +You can set the current instance of the cart by calling `Cart::instance('newInstance')`. From this moment, the active instance of the cart will be `newInstance`, so when you add, remove or get the content of the cart, you're work with the `newInstance` instance of the cart. +If you want to switch instances, you just call `Cart::instance('otherInstance')` again, and you're working with the `otherInstance` again. + +So a little example: + +```php +Cart::instance('shopping')->add('192ao12', 'Product 1', 1, 9.99); + +// Get the content of the 'shopping' cart +Cart::content(); + +Cart::instance('wishlist')->add('sdjk922', 'Product 2', 1, 19.95, ['size' => 'medium']); + +// Get the content of the 'wishlist' cart +Cart::content(); + +// If you want to get the content of the 'shopping' cart again +Cart::instance('shopping')->content(); + +// And the count of the 'wishlist' cart again +Cart::instance('wishlist')->count(); +``` + +**N.B. Keep in mind that the cart stays in the last set instance for as long as you don't set a different one during script execution.** + +**N.B.2 The default cart instance is called `default`, so when you're not using instances,`Cart::content();` is the same as `Cart::instance('default')->content()`.** + +## Models + +Because it can be very convenient to be able to directly access a model from a CartItem is it possible to associate a model with the items in the cart. Let's say you have a `Product` model in your application. With the `associate()` method, you can tell the cart that an item in the cart, is associated to the `Product` model. + +That way you can access your model right from the `CartItem`! + +The model can be accessed via the `model` property on the CartItem. + +**If your model implements the `Buyable` interface and you used your model to add the item to the cart, it will associate automatically.** + +Here is an example: + +```php + +// First we'll add the item to the cart. +$cartItem = Cart::add('293ad', 'Product 1', 1, 9.99, ['size' => 'large']); + +// Next we associate a model with the item. +Cart::associate($cartItem->rowId, 'Product'); + +// Or even easier, call the associate method on the CartItem! +$cartItem->associate('Product'); + +// You can even make it a one-liner +Cart::add('293ad', 'Product 1', 1, 9.99, ['size' => 'large'])->associate('Product'); + +// Now, when iterating over the content of the cart, you can access the model. +foreach(Cart::content() as $row) { + echo 'You have ' . $row->qty . ' items of ' . $row->model->name . ' with description: "' . $row->model->description . '" in your cart.'; +} +``` + +### Buyable + +For the convenience of faster adding items to cart and their automatic association, your model can implement `Buyable` interface. To do so, it must implement such functions: + +```php + public function getBuyableIdentifier(){ + return $this->id; + } + + public function getBuyableDescription(){ + return $this->name; + } + + public function getBuyablePrice(){ + return $this->price; + } +``` + +Example: + +```php +id; + } + + public function getBuyableDescription($options = null) { + return $this->name; + } + + public function getBuyablePrice($options = null) { + return $this->price; + } +} +``` + + +## Database + +- [Config](#configuration) +- [Storing the cart](#storing-the-cart) +- [Restoring the cart](#restoring-the-cart) + +### Configuration +To save cart into the database so you can retrieve it later, the package needs to know which database connection to use and what the name of the table is. +By default the package will use the default database connection and use a table named `shoppingcart`. +If you want to change these options, you'll have to publish the `config` file. + + php artisan vendor:publish --provider="Gloudemans\Shoppingcart\ShoppingcartServiceProvider" --tag="config" + +This will give you a `cart.php` config file in which you can make the changes. + +To make your life easy, the package also includes a ready to use `migration` which you can publish by running: + + php artisan vendor:publish --provider="Gloudemans\Shoppingcart\ShoppingcartServiceProvider" --tag="migrations" + +This will place a `shoppingcart` table's migration file into `database/migrations` directory. Now all you have to do is run `php artisan migrate` to migrate your database. + +### Storing the cart +To store your cart instance into the database, you have to call the `store($identifier) ` method. Where `$identifier` is a random key, for instance the id or username of the user. + + Cart::store('username'); + + // To store a cart instance named 'wishlist' + Cart::instance('wishlist')->store('username'); + +### Restoring the cart +If you want to retrieve the cart from the database and restore it, all you have to do is call the `restore($identifier)` where `$identifier` is the key you specified for the `store` method. + + Cart::restore('username'); + + // To restore a cart instance named 'wishlist' + Cart::instance('wishlist')->restore('username'); + +## Exceptions + +The Cart package will throw exceptions if something goes wrong. This way it's easier to debug your code using the Cart package or to handle the error based on the type of exceptions. The Cart packages can throw the following exceptions: + +| Exception | Reason | +| ---------------------------- | ---------------------------------------------------------------------------------- | +| *CartAlreadyStoredException* | When trying to store a cart that was already stored using the specified identifier | +| *InvalidRowIDException* | When the rowId that got passed doesn't exists in the current cart instance | +| *UnknownModelException* | When you try to associate an none existing model to a CartItem. | + +## Events + +The cart also has events build in. There are five events available for you to listen for. + +| Event | Fired | Parameter | +| ------------- | ---------------------------------------- | -------------------------------- | +| cart.added | When an item was added to the cart. | The `CartItem` that was added. | +| cart.updated | When an item in the cart was updated. | The `CartItem` that was updated. | +| cart.removed | When an item is removed from the cart. | The `CartItem` that was removed. | +| cart.stored | When the content of a cart was stored. | - | +| cart.restored | When the content of a cart was restored. | - | + +## Example + +Below is a little example of how to list the cart content in a table: + +```php + +// Add some items in your Controller. +Cart::add('192ao12', 'Product 1', 1, 9.99); +Cart::add('1239ad0', 'Product 2', 2, 5.95, ['size' => 'large']); + +// Display the content in a View. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ProductQtyPriceSubtotal
+

name; ?>

+

options->has('size') ? $row->options->size : ''); ?>

+
$price; ?>$total; ?>
 Subtotal
 Tax
 Total
+``` diff --git a/packages/digital-bird/shoppingcart/composer.json b/packages/digital-bird/shoppingcart/composer.json new file mode 100644 index 0000000..7e7d49b --- /dev/null +++ b/packages/digital-bird/shoppingcart/composer.json @@ -0,0 +1,50 @@ +{ + "name": "digital-bird/shoppingcart", + "version": "3.1.0", + "description": "Laravel Shoppingcart", + "keywords": [ + "laravel", + "shoppingcart" + ], + "license": "MIT", + "authors": [ + { + "name": "Rob Gloudemans", + "email": "info@robgloudemans.nl" + } + ], + "require": { + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/session": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/events": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0" + }, + "require-dev": { + "phpunit/phpunit": "~5.0|~6.0|~7.0|~8.0|~9,0", + "mockery/mockery": "~0.9.0", + "orchestra/testbench": "~3.1" + }, + "autoload": { + "psr-4": { + "Gloudemans\\Shoppingcart\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Gloudemans\\Tests\\Shoppingcart\\": "tests/" + } + }, + "suggest": { + "gloudemans/notify": "Simple flash notifications for Laravel" + }, + "minimum-stability": "stable", + "extra": { + "laravel": { + "providers": [ + "Gloudemans\\Shoppingcart\\ShoppingcartServiceProvider" + ], + "aliases": { + "Cart": "Gloudemans\\Shoppingcart\\Facades\\Cart" + } + } + } +} diff --git a/packages/digital-bird/shoppingcart/config/cart.php b/packages/digital-bird/shoppingcart/config/cart.php new file mode 100644 index 0000000..3546b0c --- /dev/null +++ b/packages/digital-bird/shoppingcart/config/cart.php @@ -0,0 +1,75 @@ + 10, + + /* + |-------------------------------------------------------------------------- + | Shoppingcart database settings + |-------------------------------------------------------------------------- + | + | Here you can set the connection that the shoppingcart should use when + | storing and restoring a cart. + | + */ + + 'database' => [ + + 'connection' => null, + + 'table' => 'shoppingcart', + + ], + + /* + |-------------------------------------------------------------------------- + | Destroy the cart on user logout + |-------------------------------------------------------------------------- + | + | When this option is set to 'true' the cart will automatically + | destroy all cart instances when the user logs out. + | + */ + + 'destroy_on_logout' => false, + + /* + |-------------------------------------------------------------------------- + | Default number format + |-------------------------------------------------------------------------- + | + | This defaults will be used for the formated numbers if you don't + | set them in the method call. + | + */ + + 'format' => [ + + 'decimals' => 2, + + 'decimal_point' => '.', + + 'thousand_seperator' => '' + + ], + + /* + |-------------------------------------------------------------------------- + | Allows you to choose if the discounts applied to fees + |-------------------------------------------------------------------------- + | + */ + 'discountOnFees' => false, + +]; diff --git a/packages/digital-bird/shoppingcart/database/migrations/0000_00_00_000000_create_shoppingcart_table.php b/packages/digital-bird/shoppingcart/database/migrations/0000_00_00_000000_create_shoppingcart_table.php new file mode 100644 index 0000000..fc5bb26 --- /dev/null +++ b/packages/digital-bird/shoppingcart/database/migrations/0000_00_00_000000_create_shoppingcart_table.php @@ -0,0 +1,30 @@ +string('identifier'); + $table->string('instance'); + $table->longText('content'); + $table->nullableTimestamps(); + + $table->primary(['identifier', 'instance']); + }); + } + /** + * Reverse the migrations. + */ + public function down() + { + Schema::drop(config('cart.database.table')); + } +} diff --git a/packages/digital-bird/shoppingcart/phpunit.xml b/packages/digital-bird/shoppingcart/phpunit.xml new file mode 100644 index 0000000..655d24e --- /dev/null +++ b/packages/digital-bird/shoppingcart/phpunit.xml @@ -0,0 +1,16 @@ + + + + + ./tests/ + + + \ No newline at end of file diff --git a/packages/digital-bird/shoppingcart/src/CanBeBought.php b/packages/digital-bird/shoppingcart/src/CanBeBought.php new file mode 100644 index 0000000..e122d1f --- /dev/null +++ b/packages/digital-bird/shoppingcart/src/CanBeBought.php @@ -0,0 +1,54 @@ +getKey() : + $this->id; + } + + /** + * Get the description or title of the Buyable item. + * + * @return string + */ + public function getBuyableDescription($options = null) + { + if (property_exists($this, 'name')) { + return $this->name; + } + + if (property_exists($this, 'title')) { + return $this->title; + } + + if (property_exists($this, 'description')) { + return $this->description; + } + + return null; + } + + /** + * Get the price of the Buyable item. + * + * @return float + */ + public function getBuyablePrice($options = null) + { + if (property_exists($this, 'price')) { + return $this->price; + } + + return null; + } +} diff --git a/packages/digital-bird/shoppingcart/src/Cart.php b/packages/digital-bird/shoppingcart/src/Cart.php new file mode 100644 index 0000000..0f7e3e3 --- /dev/null +++ b/packages/digital-bird/shoppingcart/src/Cart.php @@ -0,0 +1,799 @@ +items = new Collection; + $this->fees = new Collection; + $this->session = $session; + $this->events = $events; + + $this->instance(self::DEFAULT_INSTANCE); + } + + /** + * Set the current cart instance. + * + * @param string|null $instance + * @return \Gloudemans\Shoppingcart\Cart + */ + public function instance($instance = null) + { + $instance = $instance ?: self::DEFAULT_INSTANCE; + + $this->instance = sprintf('%s.%s', 'cart', $instance); + + return $this; + } + + /** + * Get the current cart instance. + * + * @return string + */ + public function currentInstance() + { + return str_replace('cart.', '', $this->instance); + } + + /** + * Add an item to the cart. + * + * @param mixed $id + * @param mixed $name + * @param int|float $qty + * @param float $price + * @param array $options + * @return \Gloudemans\Shoppingcart\CartItem + */ + public function add($id, $name = null, $qty = null, $price = null, $taxRate = null, array $options = []) + { + if ($this->isMulti($id)) { + return array_map(function ($item) { + return $this->add($item); + }, $id); + } + + if ($id instanceof CartItem) { + $cartItem = $id; + } else { + $cartItem = $this->createCartItem($id, $name, $qty, $price, $taxRate, $options); + } + + $content = $this->getContent(); + + if ($content->has($cartItem->rowId)) { + $cartItem->qty += $content->get($cartItem->rowId)->qty; + } + + $content->put($cartItem->rowId, $cartItem); + + $this->items = $content; + + $this->session->put($this->instance, $this->toArray()); + + $this->events->dispatch('cart.added', [ + [ + 'cartInstance' => $this->currentInstance(), + 'cartItem' => $cartItem, + ] + ]); + + return $cartItem; + } + + /** + * Update the cart item with the given rowId. + * + * @param string $rowId + * @param mixed $qty + * @return \Gloudemans\Shoppingcart\CartItem + */ + public function update($rowId, $qty) + { + $cartItem = $this->get($rowId); + + if ($qty instanceof Buyable) { + $cartItem->updateFromBuyable($qty); + } elseif (is_array($qty)) { + $cartItem->updateFromArray($qty); + } else { + $cartItem->qty = $qty; + } + + $content = $this->getContent(); + + if ($rowId !== $cartItem->rowId) { + if ($content->has($cartItem->rowId)) { + $existingCartItem = $this->get($cartItem->rowId); + $cartItem->setQuantity($existingCartItem->qty + $cartItem->qty); + } + + $content = $content->mapWithKeys(function ($val, $key) use ($rowId, $cartItem) { + if ($key === $rowId) { + return [ $cartItem->rowId => $cartItem ]; + } + + return [ $key => $val ]; + }); + + $this->items = $content; + } + + if ($cartItem->qty <= 0) { + $this->remove($cartItem->rowId); + return; + } + + $this->session->put($this->instance, $this->toArray()); + + $this->events->dispatch('cart.updated', [ + [ + 'cartInstance' => $this->currentInstance(), + 'cartItem' => $cartItem, + ] + ]); + + return $cartItem; + } + + /** + * Remove the cart item with the given rowId from the cart. + * + * @param string $rowId + * @return void + */ + public function remove($rowId) + { + $cartItem = $this->get($rowId); + + $content = $this->getContent(); + + $content->pull($cartItem->rowId); + + $this->items = $content; + + $this->session->put($this->instance, $this->toArray()); + + $this->events->dispatch('cart.removed', [ + [ + 'cartInstance' => $this->currentInstance(), + 'cartItem' => $cartItem, + ] + ]); + } + + /** + * Get a cart item from the cart by its rowId. + * + * @param string $rowId + * @return \Gloudemans\Shoppingcart\CartItem + */ + public function get($rowId) + { + $content = $this->getContent(); + + if ($content->has($rowId) === false) { + throw new InvalidRowIDException("The cart does not contain rowId {$rowId}."); + } + + return $content->get($rowId); + } + + /** + * Destroy the current cart instance. + * + * @return void + */ + public function destroy() + { + $this->session->remove($this->instance); + } + + /** + * Get the content of the cart. + * + * @return \Illuminate\Support\Collection + */ + public function content() + { + return $this->getContent(); + } + + /** + * Get the number of items in the cart. + * + * @return int|float + */ + public function count() + { + $content = $this->getContent(); + + return $content->sum('qty'); + } + + /** + * Get the total price of the items in the cart. + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return string + */ + public function total($decimals = null, $decimalPoint = null, $thousandSeperator = null, $withFees = true) + { + $content = $this->getContent(); + + $total = $content->reduce(function ($total, CartItem $cartItem) { + return $total + ($cartItem->qty * $cartItem->priceTax); + }, 0); + + if ($withFees === true) { + $fees = $this->feeTotal(null, null, null, true); + + $total = $total + $fees; + } + + return $this->numberFormat($total, $decimals, $decimalPoint, $thousandSeperator); + } + + /** + * Get the total tax of the items in the cart. + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return float + */ + public function tax($decimals = null, $decimalPoint = null, $thousandSeperator = null, $withFees = true) + { + $content = $this->getContent(); + + $tax = $content->reduce(function ($tax, CartItem $cartItem) { + return $tax + ($cartItem->qty * $cartItem->tax); + }, 0); + + if ($withFees === true) { + $fees = $this->feeTax(); + + $tax = $tax + floatval($fees); + } + + return $this->numberFormat($tax, $decimals, $decimalPoint, $thousandSeperator); + } + + /** + * Get the total tax of the items in the cart. + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return float + */ + public function feeTax($decimals = null, $decimalPoint = null, $thousandSeperator = null) + { + $content = $this->getContent(); + + $tax = 0; + + foreach ($this->getFees() as $fee) { + $tax += $fee->tax; + } + + return $this->numberFormat($tax, $decimals, $decimalPoint, $thousandSeperator); + } + + /** + * Get the subtotal (total - tax) of the items in the cart. + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return float + */ + public function subtotal($decimals = null, $decimalPoint = null, $thousandSeperator = null) + { + $content = $this->getContent(); + + $subTotal = $content->reduce(function ($subTotal, CartItem $cartItem) { + return $subTotal + ($cartItem->qty * $cartItem->price); + }, 0); + + return $this->numberFormat($subTotal, $decimals, $decimalPoint, $thousandSeperator); + } + + /** + * Get the subtotal (total - tax) of the items in the cart. + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return float + */ + public function subtotalTax($decimals = null, $decimalPoint = null, $thousandSeperator = null) + { + $content = $this->getContent(); + + $subTotal = $content->reduce(function ($subTotal, CartItem $cartItem) { + return $subTotal + ($cartItem->qty * $cartItem->priceTax); + }, 0); + + return $this->numberFormat($subTotal, $decimals, $decimalPoint, $thousandSeperator); + } + + /** + * Search the cart content for a cart item matching the given search closure. + * + * @param Closure $search + * @return \Illuminate\Support\Collection + */ + public function search(Closure $search) + { + $content = $this->getContent(); + + return $content->filter($search); + } + + /** + * Associate the cart item with the given rowId with the given model. + * + * @param string $rowId + * @param mixed $model + * @return void + */ + public function associate($rowId, $model) + { + if ( + is_string($model) === true && + class_exists($model) === false + ) { + throw new UnknownModelException("The supplied model {$model} does not exist."); + } + + $cartItem = $this->get($rowId); + + $cartItem->associate($model); + + $content = $this->getContent(); + + $content->put($cartItem->rowId, $cartItem); + + $this->session->put($this->instance, $this->toArray()); + } + + /** + * Set the tax rate for the cart item with the given rowId. + * + * @param string $rowId + * @param int|float $taxRate + * @return void + */ + public function setTax($rowId, $taxRate) + { + $cartItem = $this->get($rowId); + + $cartItem->setTaxRate($taxRate); + + $content = $this->getContent(); + + $content->put($cartItem->rowId, $cartItem); + + $this->items = $content; + + $this->session->put($this->instance, $this->toArray()); + } + + /** + * Store an the current instance of the cart. + * + * @param mixed $identifier + * @return void + */ + public function store($identifier) + { + // Remove any existing identifiers + // Although possibly first or update could work in future + $this + ->getConnection() + ->table($this->getTableName()) + ->where('identifier', $identifier) + ->delete(); + + // Insert into the database with the new cart + $this + ->getConnection() + ->table($this->getTableName()) + ->insert([ + 'identifier' => $identifier, + 'instance' => $this->currentInstance(), + 'content' => serialize($this->toArray()), + 'created_at'=> new DateTime(), + ]); + + $this->events->dispatch('cart.stored', $this->currentInstance()); + } + + /** + * Restore the cart with the given identifier. + * + * @param mixed $identifier + * @return void + */ + public function restore($identifier) + { + if ($this->storedCartWithIdentifierExists($identifier) === false) { + return; + } + + // Find any existing carts by identifier + $stored = $this + ->getConnection() + ->table($this->getTableName()) + ->where('identifier', $identifier) + ->first(); + + // Unserialize the content (either array if new, or collection if old) + $storedContent = unserialize($stored->content); + + $currentInstance = $this->currentInstance(); + + $this->instance($stored->instance); + + $content = $this->getContent(); + + // If the new approach and is array, set this class up. + // Note that it overrides any existing items in cart + // Does not add to existing. + if (is_array($storedContent)) { + $this->fromArray($storedContent); + } + + // If the old approach and is Collection, push into existing items + if ($storedContent instanceof Collection) { + foreach ($storedContent as $cartItem) { + $content->put($cartItem->rowId, $cartItem); + } + } + + $this->events->dispatch('cart.restored', $this->currentInstance()); + + $this->session->put($this->instance, $this->toArray()); + + $this->instance($currentInstance); + } + + /** + * Gets a specific fee from the fees array. + * + * @param $name + * + * @return mixed + */ + public function getFee($name) + { + return $this->fees->get($name, new CartFee(null, null)); + } + + /** + * Allows to charge for additional fees that may or may not be taxable + * ex - service fee , delivery fee, tips. + * + * Because it uses ->put, the name must be unique otherwise will be overwritten. + * + * @param $name + * @param $amount + * @param $taxRate + * @param array $options + */ + public function addFee($name, $amount, $taxRate = null, array $options = []) + { + $this->fees->put($name, new CartFee($amount, $taxRate, $options)); + + $this->session->put($this->instance, $this->toArray()); + } + + /** + * Removes a fee from the fee array. + * + * @todo test to see if i need to restore this + * + * @param $name + */ + public function removeFee($name) + { + $this->fees->forget($name); + + $this->session->put($this->instance, $this->toArray()); + } + + /** + * Removes all the fees set in the cart. + */ + public function removeFees() + { + $this->fees = new Collection; + + $this->session->put($this->instance, $this->toArray()); + } + + /** + * Gets all the fee totals. + * + * @param bool $format + * @param bool $withTax + * + * @return string + */ + public function feeTotal($decimals = null, $decimalPoint = null, $thousandSeperator = null, $withTax = true) + { + $feeTotal = 0; + + foreach ($this->getFees() as $fee) { + $feeTotal += $fee->amount; + + if ($withTax === true && $fee->taxRate > 0) { + $feeTotal += $fee->tax; + } + } + + return $this->numberFormat($feeTotal, null, null, null); + } + + /** + * Gets all the fees on the cart object. + * + * @return mixed + */ + public function getFees() + { + return $this->fees; + } + + /** + * Magic method to make accessing the total, tax and subtotal properties possible. + * + * @param string $attribute + * @return float|null + */ + public function __get($attribute) + { + if ($attribute === 'total') { + return $this->total(); + } + + if ($attribute === 'feeTotal') { + return $this->feeTotal(null, null, null, false); + } + + if ($attribute === 'feeTotalTax') { + return $this->feeTotal(null, null, null, true); + } + + if ($attribute === 'tax') { + return $this->tax(); + } + + if ($attribute === 'feeTax') { + return $this->feeTax(); + } + + if ($attribute === 'subtotal') { + return $this->subtotal(); + } + + if ($attribute === 'subtotalTax') { + return $this->subtotalTax(); + } + + return null; + } + + /** + * @return array + */ + public function toArray() + { + return [ + 'items' => $this->items, + 'fees' => $this->fees, + ]; + } + + /** + * @param $array + * @return $this + */ + public function fromArray($array) + { + $this->items = $array['items']; + $this->fees = $array['fees']; + + return $this; + } + + /** + * Deletes the stored cart with given identifier + * + * @param mixed $identifier + */ + protected function deleteStoredCart($identifier) + { + $this + ->getConnection() + ->table($this->getTableName()) + ->where('identifier', $identifier) + ->delete(); + } + + /** + * Get the carts content, if there is no cart content set yet, return a new empty Collection + * + * @return \Illuminate\Support\Collection + */ + protected function getContent(): Collection + { + $instanceExists = $this->session->has($this->instance); + + if ($instanceExists === false) { + $this->items = new Collection; + + return $this->items; + } + + $instance = $this->session->get($this->instance); + + // If new approach, set $this variables + if (is_array($instance) === true) { + $this->items = $instance['items']; + $this->fees = $instance['fees']; + } + + if ($instance instanceof Collection) { + $this->items = $instance; + } + + return $this->items; + } + + /** + * Create a new CartItem from the supplied attributes. + * + * @param mixed $id + * @param mixed $name + * @param int|float $qty + * @param float $price + * @param array $options + * @return \Gloudemans\Shoppingcart\CartItem + */ + private function createCartItem($id, $name, $qty, $price, $taxRate, array $options): CartItem + { + if ($id instanceof Buyable) { + $cartItem = CartItem::fromBuyable($id, $qty ?: []); + $cartItem->setQuantity($name ?: 1); + $cartItem->associate($id); + } elseif (is_array($id)) { + $cartItem = CartItem::fromArray($id); + $cartItem->setQuantity($id['qty']); + } else { + $cartItem = CartItem::fromAttributes($id, $name, $price, $options); + $cartItem->setQuantity($qty); + } + + $taxRate = is_int($taxRate) ? $taxRate : config('cart.tax'); + + $cartItem->setTaxRate($taxRate); + + return $cartItem; + } + + /** + * Check if the item is a multidimensional array or an array of Buyables. + * + * @param mixed $item + * @return bool + */ + private function isMulti($item): bool + { + if (is_array($item) === false) { + return false; + } + + return is_array(head($item)) || head($item) instanceof Buyable === true; + } + + /** + * @param $identifier + * @return bool + */ + protected function storedCartWithIdentifierExists($identifier): bool + { + return $this + ->getConnection() + ->table($this->getTableName()) + ->where('identifier', $identifier) + ->exists(); + } + + /** + * Get the database connection. + * + * @return \Illuminate\Database\Connection + */ + protected function getConnection() + { + $connectionName = $this->getConnectionName(); + + return app(DatabaseManager::class)->connection($connectionName); + } + + /** + * Get the database table name. + * + * @return string + */ + protected function getTableName() + { + return config('cart.database.table', 'shoppingcart'); + } + + /** + * Get the database connection name. + * + * @return string + */ + private function getConnectionName() + { + $connection = config('cart.database.connection'); + + return is_null($connection) ? config('database.default') : $connection; + } +} diff --git a/packages/digital-bird/shoppingcart/src/CartFee.php b/packages/digital-bird/shoppingcart/src/CartFee.php new file mode 100644 index 0000000..0aff34c --- /dev/null +++ b/packages/digital-bird/shoppingcart/src/CartFee.php @@ -0,0 +1,75 @@ +amount = floatval($amount); + $this->taxRate = is_null($taxRate) ? config('cart.tax') : $taxRate; + $this->options = new CartFeeOptions($options); + } + + /** + * Gets the formatted amount. + * + * @param bool $format + * @param bool $withTax + * + * @return string + */ + public function getAmount($format = true, $withTax = false) + { + $total = $this->amount; + + if ($withTax) { + $total += $this->taxRate * $total; + } + + return $this->numberFormat($total); + } + + /** + * @return string + */ + public function tax() + { + $tax = $this->amount * $this->taxRate / 100; + + return $this->numberFormat($tax); + } + + /** + * Magic method to make accessing the total, tax and subtotal properties possible. + * + * @param string $attribute + * @return float|null + */ + public function __get($attribute) + { + if ($attribute === 'tax') { + return $this->tax(); + } + + return null; + } +} diff --git a/packages/digital-bird/shoppingcart/src/CartFeeOptions.php b/packages/digital-bird/shoppingcart/src/CartFeeOptions.php new file mode 100644 index 0000000..dd91b92 --- /dev/null +++ b/packages/digital-bird/shoppingcart/src/CartFeeOptions.php @@ -0,0 +1,19 @@ +get($key); + } +} diff --git a/packages/digital-bird/shoppingcart/src/CartItem.php b/packages/digital-bird/shoppingcart/src/CartItem.php new file mode 100644 index 0000000..bb5e1a8 --- /dev/null +++ b/packages/digital-bird/shoppingcart/src/CartItem.php @@ -0,0 +1,422 @@ +id = $id; + $this->name = $name; + $this->price = floatval($price); + $this->options = new CartItemOptions($options); + $this->rowId = $this->generateRowId($id, $options); + } + + /** + * Returns the formatted price without TAX. + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return string + */ + public function price($decimals = null, $decimalPoint = null, $thousandSeperator = null) + { + return $this->numberFormat($this->price, $decimals, $decimalPoint, $thousandSeperator); + } + + /** + * Returns the formatted price with TAX. + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return string + */ + public function priceTax($decimals = null, $decimalPoint = null, $thousandSeperator = null) + { + $priceTax = number_format(($this->price + $this->tax), $decimals, '.', ''); + + return $this->numberFormat($priceTax, $decimals, $decimalPoint, $thousandSeperator); + } + + /** + * Returns the formatted subtotal. + * Subtotal is price for whole CartItem without TAX + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return string + */ + public function subtotal($decimals = null, $decimalPoint = null, $thousandSeperator = null) + { + $subtotal = number_format(($this->qty * $this->price), $decimals, '.', ''); + + return $this->numberFormat($subtotal, $decimals, $decimalPoint, $thousandSeperator); + } + + /** + * Returns the formatted subtotal. + * Subtotal is price for whole CartItem with TAX + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return string + */ + public function subtotalTax($decimals = null, $decimalPoint = null, $thousandSeperator = null) + { + $subtotal = number_format(($this->qty * $this->priceTax), $decimals, '.', ''); + + return $this->numberFormat($subtotal, $decimals, $decimalPoint, $thousandSeperator); + } + + /** + * Returns the formatted total. + * Total is price for whole CartItem with tax + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return string + */ + public function total($decimals = null, $decimalPoint = null, $thousandSeperator = null) + { + $total = number_format(($this->qty * priceTax), $decimals, '.', ''); + + return $this->numberFormat($total, $decimals, $decimalPoint, $thousandSeperator); + } + + /** + * Returns the formatted tax. + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return string + */ + public function tax($decimals = null, $decimalPoint = null, $thousandSeperator = null) + { + $tax = number_format(($this->price * ($this->taxRate / 100)), $decimals, '.', ''); + + return $this->numberFormat($tax, $decimals, $decimalPoint, $thousandSeperator); + } + + /** + * Returns the formatted tax. + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + * @return string + */ + public function taxTotal($decimals = null, $decimalPoint = null, $thousandSeperator = null) + { + $taxTotal = number_format(($this->tax * $this->qty), $decimals, '.', ''); + + return $this->numberFormat($taxTotal, $decimals, $decimalPoint, $thousandSeperator); + } + + /** + * Set the quantity for this cart item. + * + * @param int|float $qty + */ + public function setQuantity($qty) + { + if(empty($qty) || ! is_numeric($qty)) + throw new \InvalidArgumentException('Please supply a valid quantity.'); + + $this->qty = $qty; + } + + /** + * Update the cart item from a Buyable. + * + * @param \Gloudemans\Shoppingcart\Contracts\Buyable $item + * @return void + */ + public function updateFromBuyable(Buyable $item) + { + $this->id = $item->getBuyableIdentifier($this->options); + $this->name = $item->getBuyableDescription($this->options); + $this->price = $item->getBuyablePrice($this->options); + $this->priceTax = $this->price + $this->tax; + } + + /** + * Update the cart item from an array. + * + * @param array $attributes + * @return void + */ + public function updateFromArray(array $attributes) + { + $this->id = array_get($attributes, 'id', $this->id); + $this->qty = array_get($attributes, 'qty', $this->qty); + $this->name = array_get($attributes, 'name', $this->name); + $this->price = array_get($attributes, 'price', $this->price); + $this->priceTax = $this->price + $this->tax; + $this->options = new CartItemOptions(array_get($attributes, 'options', $this->options)); + + $this->rowId = $this->generateRowId($this->id, $this->options->all()); + } + + /** + * Associate the cart item with the given model. + * + * @param mixed $model + * @return \Gloudemans\Shoppingcart\CartItem + */ + public function associate($model) + { + $this->associatedModel = is_string($model) ? $model : get_class($model); + + return $this; + } + + /** + * Set the tax rate. + * + * @param int|float $taxRate + * @return \Gloudemans\Shoppingcart\CartItem + */ + public function setTaxRate($taxRate) + { + $this->taxRate = $taxRate; + + return $this; + } + + /** + * Set saved state. + * + * @param bool $bool + * @return \Gloudemans\Shoppingcart\CartItem + */ + public function setSaved($bool) + { + $this->isSaved = $bool; + + return $this; + } + + /** + * Get an attribute from the cart item or get the associated model. + * + * @param string $attribute + * @return mixed + */ + public function __get($attribute) + { + if(property_exists($this, $attribute)) { + return $this->{$attribute}; + } + + $decimals = config('cart.format.decimals') ?? 2; + + if ($attribute === 'priceTax') { + return $this->priceTax($decimals); + } + + if ($attribute === 'subtotal') { + return $this->subtotal($decimals); + } + + if ($attribute === 'subtotalTax') { + return $this->subtotalTax($decimals); + } + + if ($attribute === 'total') { + return $this->total($decimals); + } + + if ($attribute === 'tax') { + return $this->tax($decimals); + } + + if ($attribute === 'taxTotal') { + return $this->taxTotal($decimals); + } + + if($attribute === 'model' && isset($this->associatedModel)) { + return with(new $this->associatedModel)->find($this->id); + } + + return null; + } + + /** + * Create a new instance from a Buyable. + * + * @param \Gloudemans\Shoppingcart\Contracts\Buyable $item + * @param array $options + * @return \Gloudemans\Shoppingcart\CartItem + */ + public static function fromBuyable(Buyable $item, array $options = []) + { + return new self($item->getBuyableIdentifier($options), $item->getBuyableDescription($options), $item->getBuyablePrice($options), $options); + } + + /** + * Create a new instance from the given array. + * + * @param array $attributes + * @return \Gloudemans\Shoppingcart\CartItem + */ + public static function fromArray(array $attributes) + { + $options = array_get($attributes, 'options', []); + + return new self($attributes['id'], $attributes['name'], $attributes['price'], $options); + } + + /** + * Create a new instance from the given attributes. + * + * @param int|string $id + * @param string $name + * @param float $price + * @param array $options + * @return \Gloudemans\Shoppingcart\CartItem + */ + public static function fromAttributes($id, $name, $price, array $options = []) + { + return new self($id, $name, $price, $options); + } + + /** + * Generate a unique id for the cart item. + * + * @param string $id + * @param array $options + * @return string + */ + protected function generateRowId($id, array $options) + { + ksort($options); + + return md5($id . serialize($options)); + } + + /** + * Get the instance as an array. + * + * @return array + */ + public function toArray() + { + return [ + 'rowId' => $this->rowId, + 'id' => $this->id, + 'name' => $this->name, + 'qty' => $this->qty, + 'price' => $this->price, + 'options' => $this->options->toArray(), + 'tax' => $this->tax, + 'isSaved' => $this->isSaved, + 'subtotal' => $this->subtotal + ]; + } + + /** + * Convert the object to its JSON representation. + * + * @param int $options + * @return string + */ + public function toJson($options = 0) + { + return json_encode($this->toArray(), $options); + } +} diff --git a/packages/digital-bird/shoppingcart/src/CartItemOptions.php b/packages/digital-bird/shoppingcart/src/CartItemOptions.php new file mode 100644 index 0000000..1b80205 --- /dev/null +++ b/packages/digital-bird/shoppingcart/src/CartItemOptions.php @@ -0,0 +1,19 @@ +get($key); + } +} diff --git a/packages/digital-bird/shoppingcart/src/Contracts/Buyable.php b/packages/digital-bird/shoppingcart/src/Contracts/Buyable.php new file mode 100644 index 0000000..f5bfeb7 --- /dev/null +++ b/packages/digital-bird/shoppingcart/src/Contracts/Buyable.php @@ -0,0 +1,27 @@ +app->bind('cart', 'Gloudemans\Shoppingcart\Cart'); + + $config = __DIR__ . '/../config/cart.php'; + $this->mergeConfigFrom($config, 'cart'); + + $this->publishes([__DIR__ . '/../config/cart.php' => config_path('cart.php')], 'config'); + + $this->app['events']->listen(Logout::class, function () { + if ($this->app['config']->get('cart.destroy_on_logout')) { + $this->app->make(SessionManager::class)->forget('cart'); + } + }); + + if ( ! class_exists('CreateShoppingcartTable')) { + // Publish the migration + $timestamp = date('Y_m_d_His', time()); + + $this->publishes([ + __DIR__.'/../database/migrations/0000_00_00_000000_create_shoppingcart_table.php' => database_path('migrations/'.$timestamp.'_create_shoppingcart_table.php'), + ], 'migrations'); + } + } +} diff --git a/packages/digital-bird/shoppingcart/src/Traits/CartHelper.php b/packages/digital-bird/shoppingcart/src/Traits/CartHelper.php new file mode 100644 index 0000000..cb7968c --- /dev/null +++ b/packages/digital-bird/shoppingcart/src/Traits/CartHelper.php @@ -0,0 +1,35 @@ +count(); + + PHPUnit::assertEquals($items, $cart->count(), "Expected the cart to contain {$items} items, but got {$actual}."); + } + + /** + * Assert that the cart contains the given number of rows. + * + * @param int $rows + * @param \Gloudemans\Shoppingcart\Cart $cart + */ + public function assertRowsInCart($rows, Cart $cart) + { + $actual = $cart->content()->count(); + + PHPUnit::assertCount($rows, $cart->content(), "Expected the cart to contain {$rows} rows, but got {$actual}."); + } +} diff --git a/packages/digital-bird/shoppingcart/tests/CartItemTest.php b/packages/digital-bird/shoppingcart/tests/CartItemTest.php new file mode 100644 index 0000000..2a01714 --- /dev/null +++ b/packages/digital-bird/shoppingcart/tests/CartItemTest.php @@ -0,0 +1,56 @@ + 'XL', 'color' => 'red']); + $cartItem->setQuantity(2); + + $this->assertEquals([ + 'id' => 1, + 'name' => 'Some item', + 'price' => 10.00, + 'rowId' => '07d5da5550494c62daf9993cf954303f', + 'qty' => 2, + 'options' => [ + 'size' => 'XL', + 'color' => 'red' + ], + 'tax' => 0.0, + 'subtotal' => 20.00, + 'isSaved' => false + ], $cartItem->toArray()); + } + + /** @test */ + public function it_can_be_cast_to_json() + { + $cartItem = new CartItem(1, 'Some item', 10.00, ['size' => 'XL', 'color' => 'red']); + $cartItem->setQuantity(2); + + $this->assertJson($cartItem->toJson()); + + $json = '{"rowId":"07d5da5550494c62daf9993cf954303f","id":1,"name":"Some item","qty":2,"price":10,"options":{"size":"XL","color":"red"},"tax":"0.00","isSaved":false,"subtotal":"20.00"}'; + + $this->assertEquals($json, $cartItem->toJson()); + } +} diff --git a/packages/digital-bird/shoppingcart/tests/CartTest.php b/packages/digital-bird/shoppingcart/tests/CartTest.php new file mode 100644 index 0000000..4df29f0 --- /dev/null +++ b/packages/digital-bird/shoppingcart/tests/CartTest.php @@ -0,0 +1,945 @@ +set('cart.database.connection', 'testing'); + + $app['config']->set('session.driver', 'array'); + + $app['config']->set('database.default', 'testing'); + $app['config']->set('database.connections.testing', [ + 'driver' => 'sqlite', + 'database' => ':memory:', + 'prefix' => '', + ]); + } + + /** + * Setup the test environment. + * + * @return void + */ + protected function setUp() + { + parent::setUp(); + + $this->app->afterResolving('migrator', function ($migrator) { + $migrator->path(realpath(__DIR__.'/../database/migrations')); + }); + } + + /** @test */ + public function it_has_a_default_instance() + { + $cart = $this->getCart(); + + $this->assertEquals(Cart::DEFAULT_INSTANCE, $cart->currentInstance()); + } + + /** @test */ + public function it_can_have_multiple_instances() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'First item')); + + $cart->instance('wishlist')->add(new BuyableProduct(2, 'Second item')); + + $this->assertItemsInCart(1, $cart->instance(Cart::DEFAULT_INSTANCE)); + $this->assertItemsInCart(1, $cart->instance('wishlist')); + } + + /** @test */ + public function it_can_add_an_item() + { + Event::fake(); + + $cart = $this->getCart(); + + $cart->add(new BuyableProduct); + + $this->assertEquals(1, $cart->count()); + + Event::assertDispatched('cart.added'); + } + + /** @test */ + public function it_will_return_the_cartitem_of_the_added_item() + { + Event::fake(); + + $cart = $this->getCart(); + + $cartItem = $cart->add(new BuyableProduct); + + $this->assertInstanceOf(CartItem::class, $cartItem); + $this->assertEquals('027c91341fd5cf4d2579b49c4b6a90da', $cartItem->rowId); + + Event::assertDispatched('cart.added'); + } + + /** @test */ + public function it_can_add_multiple_buyable_items_at_once() + { + Event::fake(); + + $cart = $this->getCart(); + + $cart->add([new BuyableProduct(1), new BuyableProduct(2)]); + + $this->assertEquals(2, $cart->count()); + + Event::assertDispatched('cart.added'); + } + + /** @test */ + public function it_will_return_an_array_of_cartitems_when_you_add_multiple_items_at_once() + { + Event::fake(); + + $cart = $this->getCart(); + + $cartItems = $cart->add([new BuyableProduct(1), new BuyableProduct(2)]); + + $this->assertTrue(is_array($cartItems)); + $this->assertCount(2, $cartItems); + $this->assertContainsOnlyInstancesOf(CartItem::class, $cartItems); + + Event::assertDispatched('cart.added'); + } + + /** @test */ + public function it_can_add_an_item_from_attributes() + { + Event::fake(); + + $cart = $this->getCart(); + + $cart->add(1, 'Test item', 1, 10.00); + + $this->assertEquals(1, $cart->count()); + + Event::assertDispatched('cart.added'); + } + + /** @test */ + public function it_can_add_an_item_from_an_array() + { + Event::fake(); + + $cart = $this->getCart(); + + $cart->add(['id' => 1, 'name' => 'Test item', 'qty' => 1, 'price' => 10.00]); + + $this->assertEquals(1, $cart->count()); + + Event::assertDispatched('cart.added'); + } + + /** @test */ + public function it_can_add_multiple_array_items_at_once() + { + Event::fake(); + + $cart = $this->getCart(); + + $cart->add([ + ['id' => 1, 'name' => 'Test item 1', 'qty' => 1, 'price' => 10.00], + ['id' => 2, 'name' => 'Test item 2', 'qty' => 1, 'price' => 10.00] + ]); + + $this->assertEquals(2, $cart->count()); + + Event::assertDispatched('cart.added'); + } + + /** @test */ + public function it_can_add_an_item_with_options() + { + Event::fake(); + + $cart = $this->getCart(); + + $options = ['size' => 'XL', 'color' => 'red']; + + $cart->add(new BuyableProduct, 1, $options); + + $cartItem = $cart->get('07d5da5550494c62daf9993cf954303f'); + + $this->assertInstanceOf(CartItem::class, $cartItem); + $this->assertEquals('XL', $cartItem->options->size); + $this->assertEquals('red', $cartItem->options->color); + + Event::assertDispatched('cart.added'); + } + + /** + * @test + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage Please supply a valid identifier. + */ + public function it_will_validate_the_identifier() + { + $cart = $this->getCart(); + + $cart->add(null, 'Some title', 1, 10.00); + } + + /** + * @test + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage Please supply a valid name. + */ + public function it_will_validate_the_name() + { + $cart = $this->getCart(); + + $cart->add(1, null, 1, 10.00); + } + + /** + * @test + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage Please supply a valid quantity. + */ + public function it_will_validate_the_quantity() + { + $cart = $this->getCart(); + + $cart->add(1, 'Some title', 'invalid', 10.00); + } + + /** + * @test + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage Please supply a valid price. + */ + public function it_will_validate_the_price() + { + $cart = $this->getCart(); + + $cart->add(1, 'Some title', 1, 'invalid'); + } + + /** @test */ + public function it_will_update_the_cart_if_the_item_already_exists_in_the_cart() + { + $cart = $this->getCart(); + + $item = new BuyableProduct; + + $cart->add($item); + $cart->add($item); + + $this->assertItemsInCart(2, $cart); + $this->assertRowsInCart(1, $cart); + } + + /** @test */ + public function it_will_keep_updating_the_quantity_when_an_item_is_added_multiple_times() + { + $cart = $this->getCart(); + + $item = new BuyableProduct; + + $cart->add($item); + $cart->add($item); + $cart->add($item); + + $this->assertItemsInCart(3, $cart); + $this->assertRowsInCart(1, $cart); + } + + /** @test */ + public function it_can_update_the_quantity_of_an_existing_item_in_the_cart() + { + Event::fake(); + + $cart = $this->getCart(); + + $cart->add(new BuyableProduct); + + $cart->update('027c91341fd5cf4d2579b49c4b6a90da', 2); + + $this->assertItemsInCart(2, $cart); + $this->assertRowsInCart(1, $cart); + + Event::assertDispatched('cart.updated'); + } + + /** @test */ + public function it_can_update_an_existing_item_in_the_cart_from_a_buyable() + { + Event::fake(); + + $cart = $this->getCart(); + + $cart->add(new BuyableProduct); + + $cart->update('027c91341fd5cf4d2579b49c4b6a90da', new BuyableProduct(1, 'Different description')); + + $this->assertItemsInCart(1, $cart); + $this->assertEquals('Different description', $cart->get('027c91341fd5cf4d2579b49c4b6a90da')->name); + + Event::assertDispatched('cart.updated'); + } + + /** @test */ + public function it_can_update_an_existing_item_in_the_cart_from_an_array() + { + Event::fake(); + + $cart = $this->getCart(); + + $cart->add(new BuyableProduct); + + $cart->update('027c91341fd5cf4d2579b49c4b6a90da', ['name' => 'Different description']); + + $this->assertItemsInCart(1, $cart); + $this->assertEquals('Different description', $cart->get('027c91341fd5cf4d2579b49c4b6a90da')->name); + + Event::assertDispatched('cart.updated'); + } + + /** + * @test + * @expectedException \Gloudemans\Shoppingcart\Exceptions\InvalidRowIDException + */ + public function it_will_throw_an_exception_if_a_rowid_was_not_found() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct); + + $cart->update('none-existing-rowid', new BuyableProduct(1, 'Different description')); + } + + /** @test */ + public function it_will_regenerate_the_rowid_if_the_options_changed() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct, 1, ['color' => 'red']); + + $cart->update('ea65e0bdcd1967c4b3149e9e780177c0', ['options' => ['color' => 'blue']]); + + $this->assertItemsInCart(1, $cart); + $this->assertEquals('7e70a1e9aaadd18c72921a07aae5d011', $cart->content()->first()->rowId); + $this->assertEquals('blue', $cart->get('7e70a1e9aaadd18c72921a07aae5d011')->options->color); + } + + /** @test */ + public function it_will_add_the_item_to_an_existing_row_if_the_options_changed_to_an_existing_rowid() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct, 1, ['color' => 'red']); + $cart->add(new BuyableProduct, 1, ['color' => 'blue']); + + $cart->update('7e70a1e9aaadd18c72921a07aae5d011', ['options' => ['color' => 'red']]); + + $this->assertItemsInCart(2, $cart); + $this->assertRowsInCart(1, $cart); + } + + /** @test */ + public function it_can_remove_an_item_from_the_cart() + { + Event::fake(); + + $cart = $this->getCart(); + + $cart->add(new BuyableProduct); + + $cart->remove('027c91341fd5cf4d2579b49c4b6a90da'); + + $this->assertItemsInCart(0, $cart); + $this->assertRowsInCart(0, $cart); + + Event::assertDispatched('cart.removed'); + } + + /** @test */ + public function it_will_remove_the_item_if_its_quantity_was_set_to_zero() + { + Event::fake(); + + $cart = $this->getCart(); + + $cart->add(new BuyableProduct); + + $cart->update('027c91341fd5cf4d2579b49c4b6a90da', 0); + + $this->assertItemsInCart(0, $cart); + $this->assertRowsInCart(0, $cart); + + Event::assertDispatched('cart.removed'); + } + + /** @test */ + public function it_will_remove_the_item_if_its_quantity_was_set_negative() + { + Event::fake(); + + $cart = $this->getCart(); + + $cart->add(new BuyableProduct); + + $cart->update('027c91341fd5cf4d2579b49c4b6a90da', -1); + + $this->assertItemsInCart(0, $cart); + $this->assertRowsInCart(0, $cart); + + Event::assertDispatched('cart.removed'); + } + + /** @test */ + public function it_can_get_an_item_from_the_cart_by_its_rowid() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct); + + $cartItem = $cart->get('027c91341fd5cf4d2579b49c4b6a90da'); + + $this->assertInstanceOf(CartItem::class, $cartItem); + } + + /** @test */ + public function it_can_get_the_content_of_the_cart() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1)); + $cart->add(new BuyableProduct(2)); + + $content = $cart->content(); + + $this->assertInstanceOf(Collection::class, $content); + $this->assertCount(2, $content); + } + + /** @test */ + public function it_will_return_an_empty_collection_if_the_cart_is_empty() + { + $cart = $this->getCart(); + + $content = $cart->content(); + + $this->assertInstanceOf(Collection::class, $content); + $this->assertCount(0, $content); + } + + /** @test */ + public function it_will_include_the_tax_and_subtotal_when_converted_to_an_array() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1)); + $cart->add(new BuyableProduct(2)); + + $content = $cart->content(); + + $this->assertInstanceOf(Collection::class, $content); + $this->assertEquals([ + '027c91341fd5cf4d2579b49c4b6a90da' => [ + 'rowId' => '027c91341fd5cf4d2579b49c4b6a90da', + 'id' => 1, + 'name' => 'Item name', + 'qty' => 1, + 'price' => 10.00, + 'tax' => 2.10, + 'subtotal' => 10.0, + 'isSaved' => false, + 'options' => [], + ], + '370d08585360f5c568b18d1f2e4ca1df' => [ + 'rowId' => '370d08585360f5c568b18d1f2e4ca1df', + 'id' => 2, + 'name' => 'Item name', + 'qty' => 1, + 'price' => 10.00, + 'tax' => 2.10, + 'subtotal' => 10.0, + 'isSaved' => false, + 'options' => [], + ] + ], $content->toArray()); + } + + /** @test */ + public function it_can_destroy_a_cart() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct); + + $this->assertItemsInCart(1, $cart); + + $cart->destroy(); + + $this->assertItemsInCart(0, $cart); + } + + /** @test */ + public function it_can_get_the_total_price_of_the_cart_content() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'First item', 10.00)); + $cart->add(new BuyableProduct(2, 'Second item', 25.00), 2); + + $this->assertItemsInCart(3, $cart); + $this->assertEquals(60.00, $cart->subtotal()); + } + + /** @test */ + public function it_can_return_a_formatted_total() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'First item', 1000.00)); + $cart->add(new BuyableProduct(2, 'Second item', 2500.00), 2); + + $this->assertItemsInCart(3, $cart); + $this->assertEquals('6.000,00', $cart->subtotal(2, ',', '.')); + } + + /** @test */ + public function it_can_search_the_cart_for_a_specific_item() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'Some item')); + $cart->add(new BuyableProduct(2, 'Another item')); + + $cartItem = $cart->search(function ($cartItem, $rowId) { + return $cartItem->name == 'Some item'; + }); + + $this->assertInstanceOf(Collection::class, $cartItem); + $this->assertCount(1, $cartItem); + $this->assertInstanceOf(CartItem::class, $cartItem->first()); + $this->assertEquals(1, $cartItem->first()->id); + } + + /** @test */ + public function it_can_search_the_cart_for_multiple_items() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'Some item')); + $cart->add(new BuyableProduct(2, 'Some item')); + $cart->add(new BuyableProduct(3, 'Another item')); + + $cartItem = $cart->search(function ($cartItem, $rowId) { + return $cartItem->name == 'Some item'; + }); + + $this->assertInstanceOf(Collection::class, $cartItem); + } + + /** @test */ + public function it_can_search_the_cart_for_a_specific_item_with_options() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'Some item'), 1, ['color' => 'red']); + $cart->add(new BuyableProduct(2, 'Another item'), 1, ['color' => 'blue']); + + $cartItem = $cart->search(function ($cartItem, $rowId) { + return $cartItem->options->color == 'red'; + }); + + $this->assertInstanceOf(Collection::class, $cartItem); + $this->assertCount(1, $cartItem); + $this->assertInstanceOf(CartItem::class, $cartItem->first()); + $this->assertEquals(1, $cartItem->first()->id); + } + + /** @test */ + public function it_will_associate_the_cart_item_with_a_model_when_you_add_a_buyable() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct); + + $cartItem = $cart->get('027c91341fd5cf4d2579b49c4b6a90da'); + + $this->assertContains(BuyableProduct::class, Assert::readAttribute($cartItem, 'associatedModel')); + } + + /** @test */ + public function it_can_associate_the_cart_item_with_a_model() + { + $cart = $this->getCart(); + + $cart->add(1, 'Test item', 1, 10.00); + + $cart->associate('027c91341fd5cf4d2579b49c4b6a90da', new ProductModel); + + $cartItem = $cart->get('027c91341fd5cf4d2579b49c4b6a90da'); + + $this->assertEquals(ProductModel::class, Assert::readAttribute($cartItem, 'associatedModel')); + } + + /** + * @test + * @expectedException \Gloudemans\Shoppingcart\Exceptions\UnknownModelException + * @expectedExceptionMessage The supplied model SomeModel does not exist. + */ + public function it_will_throw_an_exception_when_a_non_existing_model_is_being_associated() + { + $cart = $this->getCart(); + + $cart->add(1, 'Test item', 1, 10.00); + + $cart->associate('027c91341fd5cf4d2579b49c4b6a90da', 'SomeModel'); + } + + /** @test */ + public function it_can_get_the_associated_model_of_a_cart_item() + { + $cart = $this->getCart(); + + $cart->add(1, 'Test item', 1, 10.00); + + $cart->associate('027c91341fd5cf4d2579b49c4b6a90da', new ProductModel); + + $cartItem = $cart->get('027c91341fd5cf4d2579b49c4b6a90da'); + + $this->assertInstanceOf(ProductModel::class, $cartItem->model); + $this->assertEquals('Some value', $cartItem->model->someValue); + } + + /** @test */ + public function it_can_calculate_the_subtotal_of_a_cart_item() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'Some title', 9.99), 3); + + $cartItem = $cart->get('027c91341fd5cf4d2579b49c4b6a90da'); + + $this->assertEquals(29.97, $cartItem->subtotal); + } + + /** @test */ + public function it_can_return_a_formatted_subtotal() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'Some title', 500), 3); + + $cartItem = $cart->get('027c91341fd5cf4d2579b49c4b6a90da'); + + $this->assertEquals('1.500,00', $cartItem->subtotal(2, ',', '.')); + } + + /** @test */ + public function it_can_calculate_tax_based_on_the_default_tax_rate_in_the_config() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'Some title', 10.00), 1); + + $cartItem = $cart->get('027c91341fd5cf4d2579b49c4b6a90da'); + + $this->assertEquals(2.10, $cartItem->tax); + } + + /** @test */ + public function it_can_calculate_tax_based_on_the_specified_tax() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'Some title', 10.00), 1); + + $cart->setTax('027c91341fd5cf4d2579b49c4b6a90da', 19); + + $cartItem = $cart->get('027c91341fd5cf4d2579b49c4b6a90da'); + + $this->assertEquals(1.90, $cartItem->tax); + } + + /** @test */ + public function it_can_return_the_calculated_tax_formatted() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'Some title', 10000.00), 1); + + $cartItem = $cart->get('027c91341fd5cf4d2579b49c4b6a90da'); + + $this->assertEquals('2.100,00', $cartItem->tax(2, ',', '.')); + } + + /** @test */ + public function it_can_calculate_the_total_tax_for_all_cart_items() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'Some title', 10.00), 1); + $cart->add(new BuyableProduct(2, 'Some title', 20.00), 2); + + $this->assertEquals(10.50, $cart->tax); + } + + /** @test */ + public function it_can_return_formatted_total_tax() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'Some title', 1000.00), 1); + $cart->add(new BuyableProduct(2, 'Some title', 2000.00), 2); + + $this->assertEquals('1.050,00', $cart->tax(2, ',', '.')); + } + + /** @test */ + public function it_can_return_the_subtotal() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'Some title', 10.00), 1); + $cart->add(new BuyableProduct(2, 'Some title', 20.00), 2); + + $this->assertEquals(50.00, $cart->subtotal); + } + + /** @test */ + public function it_can_return_formatted_subtotal() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'Some title', 1000.00), 1); + $cart->add(new BuyableProduct(2, 'Some title', 2000.00), 2); + + $this->assertEquals('5000,00', $cart->subtotal(2, ',', '')); + } + + /** @test */ + public function it_can_return_cart_formated_numbers_by_config_values() + { + $this->setConfigFormat(2, ',', ''); + + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'Some title', 1000.00), 1); + $cart->add(new BuyableProduct(2, 'Some title', 2000.00), 2); + + $this->assertEquals('5000,00', $cart->subtotal()); + $this->assertEquals('1050,00', $cart->tax()); + $this->assertEquals('6050,00', $cart->total()); + + $this->assertEquals('5000,00', $cart->subtotal); + $this->assertEquals('1050,00', $cart->tax); + $this->assertEquals('6050,00', $cart->total); + } + + /** @test */ + public function it_can_return_cartItem_formated_numbers_by_config_values() + { + $this->setConfigFormat(2, ',', ''); + + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'Some title', 2000.00), 2); + + $cartItem = $cart->get('027c91341fd5cf4d2579b49c4b6a90da'); + + $this->assertEquals('2000,00', $cartItem->price()); + $this->assertEquals('2420,00', $cartItem->priceTax()); + $this->assertEquals('4000,00', $cartItem->subtotal()); + $this->assertEquals('4840,00', $cartItem->total()); + $this->assertEquals('420,00', $cartItem->tax()); + $this->assertEquals('840,00', $cartItem->taxTotal()); + } + + /** @test */ + public function it_can_store_the_cart_in_a_database() + { + $this->artisan('migrate', [ + '--database' => 'testing', + ]); + + Event::fake(); + + $cart = $this->getCart(); + + $cart->add(new BuyableProduct); + + $cart->store($identifier = 123); + + $serialized = serialize($cart->content()); + + $this->assertDatabaseHas('shoppingcart', ['identifier' => $identifier, 'instance' => 'default', 'content' => $serialized]); + + Event::assertDispatched('cart.stored'); + } + + /** @test */ + public function it_can_update_the_cart_in_database() + { + $this->artisan('migrate', [ + '--database' => 'testing', + ]); + + Event::fake(); + + $cart = $this->getCart(); + + $cart->add(new BuyableProduct); + + $cart->store($identifier = 123); + + $serialized = serialize($cart->content()); + + $this->assertDatabaseHas('shoppingcart', ['identifier' => $identifier, 'instance' => 'default', 'content' => $serialized]); + + Event::assertDispatched('cart.stored'); + } + + /** @test */ + public function it_can_restore_a_cart_from_the_database() + { + $this->artisan('migrate', [ + '--database' => 'testing', + ]); + + Event::fake(); + + $cart = $this->getCart(); + + $cart->add(new BuyableProduct); + + $cart->store($identifier = 123); + + $cart->destroy(); + + $this->assertItemsInCart(0, $cart); + + $cart->restore($identifier); + + $this->assertItemsInCart(1, $cart); + + Event::assertDispatched('cart.restored'); + } + + /** @test */ + public function it_will_just_keep_the_current_instance_if_no_cart_with_the_given_identifier_was_stored() + { + $this->artisan('migrate', [ + '--database' => 'testing', + ]); + + $cart = $this->getCart(); + + $cart->restore($identifier = 123); + + $this->assertItemsInCart(0, $cart); + } + + /** @test */ + public function it_can_calculate_all_values() + { + $cart = $this->getCart(); + + $cart->add(new BuyableProduct(1, 'First item', 10.00), 2); + + $cartItem = $cart->get('027c91341fd5cf4d2579b49c4b6a90da'); + + $cart->setTax('027c91341fd5cf4d2579b49c4b6a90da', 19); + + $this->assertEquals(10.00, $cartItem->price(2)); + $this->assertEquals(11.90, $cartItem->priceTax(2)); + $this->assertEquals(20.00, $cartItem->subtotal(2)); + $this->assertEquals(23.80, $cartItem->total(2)); + $this->assertEquals(1.90, $cartItem->tax(2)); + $this->assertEquals(3.80, $cartItem->taxTotal(2)); + + $this->assertEquals(20.00, $cart->subtotal(2)); + $this->assertEquals(23.80, $cart->total(2)); + $this->assertEquals(3.80, $cart->tax(2)); + } + + /** @test */ + public function it_will_destroy_the_cart_when_the_user_logs_out_and_the_config_setting_was_set_to_true() + { + $this->app['config']->set('cart.destroy_on_logout', true); + + $this->app->instance(SessionManager::class, Mockery::mock(SessionManager::class, function ($mock) { + $mock->shouldReceive('forget')->once()->with('cart'); + })); + + $user = Mockery::mock(Authenticatable::class); + + $guard = $this->app->make('auth'); + + event(new Logout($guard, $user)); + } + + /** + * Get an instance of the cart. + * + * @return \Gloudemans\Shoppingcart\Cart + */ + private function getCart() + { + $session = $this->app->make('session'); + $events = $this->app->make('events'); + + return new Cart($session, $events); + } + + /** + * Set the config number format. + * + * @param int $decimals + * @param string $decimalPoint + * @param string $thousandSeperator + */ + private function setConfigFormat($decimals, $decimalPoint, $thousandSeperator) + { + $this->app['config']->set('cart.format.decimals', $decimals); + $this->app['config']->set('cart.format.decimal_point', $decimalPoint); + $this->app['config']->set('cart.format.thousand_seperator', $thousandSeperator); + } +} diff --git a/packages/digital-bird/shoppingcart/tests/Fixtures/BuyableProduct.php b/packages/digital-bird/shoppingcart/tests/Fixtures/BuyableProduct.php new file mode 100644 index 0000000..a58e830 --- /dev/null +++ b/packages/digital-bird/shoppingcart/tests/Fixtures/BuyableProduct.php @@ -0,0 +1,67 @@ +id = $id; + $this->name = $name; + $this->price = $price; + } + + /** + * Get the identifier of the Buyable item. + * + * @return int|string + */ + public function getBuyableIdentifier($options = null) + { + return $this->id; + } + + /** + * Get the description or title of the Buyable item. + * + * @return string + */ + public function getBuyableDescription($options = null) + { + return $this->name; + } + + /** + * Get the price of the Buyable item. + * + * @return float + */ + public function getBuyablePrice($options = null) + { + return $this->price; + } +} \ No newline at end of file diff --git a/packages/digital-bird/shoppingcart/tests/Fixtures/ProductModel.php b/packages/digital-bird/shoppingcart/tests/Fixtures/ProductModel.php new file mode 100644 index 0000000..70494ca --- /dev/null +++ b/packages/digital-bird/shoppingcart/tests/Fixtures/ProductModel.php @@ -0,0 +1,13 @@ +=7.2.0", + "php": ">=8.1", "ext-exif": "*", "ext-fileinfo": "*", "intervention/image": "2.*", - "illuminate/config": "5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ^6.0 || ^7.0 || ^8.0", - "illuminate/filesystem": "5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ^6.0 || ^7.0 || ^8.0", - "illuminate/support": "5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ^6.0 || ^7.0 || ^8.0", - "illuminate/http": "5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ^6.0 || ^7.0 || ^8.0", - "illuminate/container": "5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ^6.0 || ^7.0 || ^8.0", + "illuminate/config": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/filesystem": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/container": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", "cviebrock/eloquent-sluggable": "*" }, diff --git a/packages/iqcontent/laravel-filemanager/src/Controllers/LfmController.php b/packages/iqcontent/laravel-filemanager/src/Controllers/LfmController.php index 149bc8f..9d90bb4 100644 --- a/packages/iqcontent/laravel-filemanager/src/Controllers/LfmController.php +++ b/packages/iqcontent/laravel-filemanager/src/Controllers/LfmController.php @@ -112,7 +112,7 @@ class LfmController extends Controller { $shared_folder_name = config('lfm.shared_folder_name'); $shared_folder = IQContentFolder::where('name', $shared_folder_name)->where('folder_id', null)->first(); - if(!$shared_folder){ + if (!$shared_folder) { IQContentFolder::create([ 'folder_id' => null, 'name' => $shared_folder_name, diff --git a/packages/iqcontent/laravel-filemanager/src/Controllers/UploadController.php b/packages/iqcontent/laravel-filemanager/src/Controllers/UploadController.php index 71172ee..ec57d6f 100644 --- a/packages/iqcontent/laravel-filemanager/src/Controllers/UploadController.php +++ b/packages/iqcontent/laravel-filemanager/src/Controllers/UploadController.php @@ -25,46 +25,98 @@ class UploadController extends LfmController */ public function upload() { - $uploaded_files = request()->file('upload'); - $error_bag = []; - $new_filename = null; + try { + // Prüfe, ob überhaupt Dateien hochgeladen wurden + $uploaded_files = request()->file('upload'); + $error_bag = []; + $new_filename = null; - foreach (is_array($uploaded_files) ? $uploaded_files : [$uploaded_files] as $file) { - try { - $new_filename = $this->lfm->upload($file); - } catch (\Exception $e) { - Log::error($e->getMessage(), [ - 'file' => $e->getFile(), - 'line' => $e->getLine(), - 'trace' => $e->getTraceAsString() + // Prüfe auf post_max_size Überschreitung + if (empty($uploaded_files) && empty($_FILES) && $_SERVER['REQUEST_METHOD'] == 'POST') { + $postMaxSize = ini_get('post_max_size'); + $uploadMaxSize = ini_get('upload_max_filesize'); + + $error_bag[] = "Die Datei ist zu groß für den Upload. " . + "Maximale Uploadgröße: {$uploadMaxSize}. " . + "Maximale POST-Größe: {$postMaxSize}. " . + "Bitte kontaktieren Sie den Administrator, um die Limits zu erhöhen."; + + Log::error('Upload fehlgeschlagen: post_max_size oder upload_max_filesize überschritten', [ + 'post_max_size' => $postMaxSize, + 'upload_max_filesize' => $uploadMaxSize, + 'content_length' => $_SERVER['CONTENT_LENGTH'] ?? 'unknown' ]); - array_push($error_bag, $e->getMessage()); - } - } + } elseif (empty($uploaded_files)) { + $error_bag[] = "Es wurde keine Datei zum Upload ausgewählt."; + } else { + foreach (is_array($uploaded_files) ? $uploaded_files : [$uploaded_files] as $file) { + try { + $new_filename = $this->lfm->upload($file); + } catch (\Exception $e) { + $errorMessage = $e->getMessage(); - if (is_array($uploaded_files)) { - $response = count($error_bag) > 0 ? $error_bag : parent::$success_response; - } else { // upload via ckeditor5 expects json responses - if (is_null($new_filename)) { - $response = ['error' => - [ - 'message' => $error_bag[0] + // Sicherstellen, dass die Fehlermeldung ein String ist + if (is_object($errorMessage) || is_array($errorMessage)) { + $errorMessage = json_encode($errorMessage); + } + + Log::error('Upload-Fehler: ' . $errorMessage, [ + 'file_name' => $file ? $file->getClientOriginalName() : 'unknown', + 'file_size' => $file ? $file->getSize() : 0, + 'error_file' => $e->getFile(), + 'error_line' => $e->getLine(), + 'trace' => $e->getTraceAsString() + ]); + + array_push($error_bag, $errorMessage); + } + } + } + + // Fehlerbehandlung + if (count($error_bag) > 0) { + $errorMsg = isset($error_bag[0]) ? $error_bag[0] : 'Unbekannter Upload-Fehler'; + + // Einheitliches Fehlerformat für Frontend + $response = [ + 'error' => [ + 'message' => $errorMsg ] ]; - } else { - /*$response = view(Lfm::PACKAGE_NAME . '::use') - ->withFile($this->lfm->setName($new_filename)->url()); -*/ + // HTTP 400 Status für Fehler + return response()->json($response, 400); + } + + // Erfolgreiche Antwort + if (is_array($uploaded_files)) { + $response = parent::$success_response; + } else { // upload via ckeditor5 expects json responses $url = $this->lfm->setName($new_filename)->url(); - $response = [ 'url' => $url ]; } + + return response()->json($response); + } catch (\Exception $e) { + // Fange alle unerwarteten Fehler ab + Log::error('Unerwarteter Upload-Fehler: ' . $e->getMessage(), [ + 'error_file' => $e->getFile(), + 'error_line' => $e->getLine(), + 'trace' => $e->getTraceAsString(), + 'request_data' => [ + 'content_length' => $_SERVER['CONTENT_LENGTH'] ?? 'unknown', + 'post_max_size' => ini_get('post_max_size'), + 'upload_max_filesize' => ini_get('upload_max_filesize'), + ] + ]); + + return response()->json([ + 'error' => [ + 'message' => 'Ein unerwarteter Fehler ist aufgetreten: ' . $e->getMessage() + ] + ], 500); } - return response()->json($response); } - - } diff --git a/packages/iqcontent/laravel-filemanager/src/Lfm.php b/packages/iqcontent/laravel-filemanager/src/Lfm.php index dc7cd4e..edf430d 100644 --- a/packages/iqcontent/laravel-filemanager/src/Lfm.php +++ b/packages/iqcontent/laravel-filemanager/src/Lfm.php @@ -283,7 +283,6 @@ class Lfm $middleware = [ CreateDefaultFolder::class, MultiUser::class ]; $as = 'iqcontent.lfm.'; $namespace = '\\IqContent\\LaravelFilemanager\\Controllers\\'; - Route::group(compact('middleware', 'as', 'namespace'), function () { // display main layout @@ -343,7 +342,7 @@ class Lfm ]); Route::get('/cropnewimage', [ 'uses' => 'CropController@getNewCropimage', - 'as' => 'getCropimage', + 'as' => 'getNewCropimage', ]); // add-file @@ -361,13 +360,13 @@ class Lfm // file-content Route::get('/file-content', [ 'uses' => 'FileController@fileContent', - 'as' => 'getFile', + 'as' => 'getFileContent', ]); // rename Route::get('/rename', [ 'uses' => 'RenameController@getRename', - 'as' => 'getFile', + 'as' => 'getRename', ]); // colorshue diff --git a/packages/iqcontent/laravel-filemanager/src/LfmPath.php b/packages/iqcontent/laravel-filemanager/src/LfmPath.php index 668cecf..d2bff7f 100644 --- a/packages/iqcontent/laravel-filemanager/src/LfmPath.php +++ b/packages/iqcontent/laravel-filemanager/src/LfmPath.php @@ -10,6 +10,7 @@ use phpDocumentor\Reflection\DocBlock\Tags\Return_; use Symfony\Component\HttpFoundation\File\UploadedFile; use IqContent\LaravelFilemanager\Events\ImageIsUploading; use IqContent\LaravelFilemanager\Events\ImageWasUploaded; +use Illuminate\Support\Facades\Log; class LfmPath { @@ -65,18 +66,18 @@ class LfmPath { $parent_folder_id = $this->getModelParentFolderId(); if ($this->isDirectory()) { - if($this->folder_model == null){ - if($parent_folder_id){ + if ($this->folder_model == null) { + if ($parent_folder_id) { $this->folder_model = IQContentFolder::where('name', $this->item_name)->where('folder_id', $parent_folder_id)->first(); - } else{ + } else { $this->folder_model = new IQContentFolder(); } } - }else{ - if($this->file_model == null){ - if($parent_folder_id){ + } else { + if ($this->file_model == null) { + if ($parent_folder_id) { $this->file_model = IQContentFile::where('name', $this->item_name)->where('folder_id', $parent_folder_id)->first(); - }else{ + } else { $this->file_model = new IQContentFile(); } } @@ -94,27 +95,29 @@ class LfmPath { if ($this->isDirectory()) { return $this->folder_model; - }else{ + } else { return $this->file_model; } } - public function getModelParentFolderId(){ + public function getModelParentFolderId() + { $parent_folder = $this->getModelFolderByPath(); - if($parent_folder) { + if ($parent_folder) { return $parent_folder->id; } return null; } - public function getModelFolderByPath($parent = false){ + public function getModelFolderByPath($parent = false) + { $working_dir = $this->path('working_dir'); $working_dir = substr($working_dir, 0, strrpos($working_dir, '/')); - $dirs = explode( "/", $working_dir); + $dirs = explode("/", $working_dir); $folder_id = null; $folder = null; - foreach ($dirs as $dir){ + foreach ($dirs as $dir) { $folder = IQContentFolder::where('name', $dir)->where('folder_id', $folder_id)->first(); - if($folder){ + if ($folder) { $folder_id = $folder->id; $this->parent_dir = $folder; } @@ -156,7 +159,7 @@ class LfmPath public function url() { - return $this->storage->url($this->path('url')); + return $this->storage->url($this->path('url')); } public function folders() @@ -171,16 +174,16 @@ class LfmPath return $this->sortByColumn($folders); } - public function recrusiveFolders($parent){ + public function recrusiveFolders($parent) + { $folders = $this->folders(); $b = []; - foreach ($folders as $folder){ + foreach ($folders as $folder) { $b[$folder->name()] = $folder; $lfm = $folder->getLfm(); $lfm->dir($parent); $a = $lfm->recrusiveFolders($folder->url()); - $b[$folder->name()."-childs"] = $a; - + $b[$folder->name() . "-childs"] = $a; } return $b; } @@ -229,19 +232,18 @@ class LfmPath $parent_folder_id = $this->getModelParentFolderId(); $this->storage->makeDirectory(0777, true, true); - if(!$this->is_thumb){ + if (!$this->is_thumb) { IQContentFolder::create([ 'folder_id' => $parent_folder_id, 'name' => $this->item_name, 'identifier' => $this->item_name, ]); } - } public function isDirectory() { - if($this->isDirectory !== null){ + if ($this->isDirectory !== null) { return $this->isDirectory; } $working_dir = $this->path('working_dir'); @@ -313,7 +315,7 @@ class LfmPath public function upload($file) { $error = $this->uploadValidator($file); - if($error !== 'pass'){ + if ($error !== 'pass') { return false; } $new_file_name = $this->getNewName($file); @@ -325,8 +327,12 @@ class LfmPath try { $new_file_name = $this->saveFile($file, $new_file_name); } catch (\Exception $e) { - \Log::info($e); - return $this->error('invalid'); + Log::error('File upload failed: ' . $e->getMessage(), [ + 'file' => $e->getFile(), + 'line' => $e->getLine(), + 'trace' => $e->getTraceAsString() + ]); + throw new \Exception($this->helper->getError('invalid') . ' ' . $e->getMessage()); } IQContentFile::create([ 'folder_id' => $working_folder_id, @@ -339,7 +345,7 @@ class LfmPath 'content' => '', ]); // TODO should be "FileWasUploaded" - // event(new ImageWasUploaded($new_file_path)); + // event(new ImageWasUploaded($new_file_path)); return $new_file_name; } @@ -352,7 +358,21 @@ class LfmPath } elseif ($file->getError() == UPLOAD_ERR_INI_SIZE) { return $this->error('file-size', ['max' => ini_get('upload_max_filesize')]); } elseif ($file->getError() != UPLOAD_ERR_OK) { - throw new \Exception('File failed to upload. Error code: ' . $file->getError()); + $errorCode = $file->getError(); + $errorMessages = [ + UPLOAD_ERR_INI_SIZE => 'upload-1', + UPLOAD_ERR_FORM_SIZE => 'upload-2', + UPLOAD_ERR_PARTIAL => 'upload-3', + UPLOAD_ERR_NO_FILE => 'upload-4', + UPLOAD_ERR_NO_TMP_DIR => 'upload-6', + UPLOAD_ERR_CANT_WRITE => 'upload-7', + UPLOAD_ERR_EXTENSION => 'upload-8', + ]; + + $errorKey = isset($errorMessages[$errorCode]) ? $errorMessages[$errorCode] : 'upload-unknown'; + $errorParams = $errorKey === 'upload-unknown' ? ['code' => $errorCode] : []; + + throw new \Exception($this->helper->getError($errorKey, $errorParams)); } $new_file_name = $this->getNewName($file); @@ -422,7 +442,7 @@ class LfmPath // generate cropped image content $this->setName($file_name)->thumb(true); $image = Image::make($original_image->get()); - $this->image_dimensions = $image->width()."x".$image->height(); + $this->image_dimensions = $image->width() . "x" . $image->height(); $image->fit(config('lfm.thumb_img_width', 200), config('lfm.thumb_img_height', 200)); $this->storage->put($image->stream()->detach()); @@ -437,9 +457,8 @@ class LfmPath $this->setName($file_name)->thumb(true); $image = Image::make(file_get_contents($url)); - // $this->image_dimensions = $image->width()."x".$image->height(); + // $this->image_dimensions = $image->width()."x".$image->height(); $image->fit(config('lfm.thumb_img_width', 200), config('lfm.thumb_img_height', 200)); $this->storage->put($image->stream()->detach()); } - } diff --git a/packages/iqcontent/laravel-filemanager/src/LfmStorageRepository.php b/packages/iqcontent/laravel-filemanager/src/LfmStorageRepository.php index 4740856..3b009bb 100644 --- a/packages/iqcontent/laravel-filemanager/src/LfmStorageRepository.php +++ b/packages/iqcontent/laravel-filemanager/src/LfmStorageRepository.php @@ -3,7 +3,6 @@ namespace IqContent\LaravelFilemanager; use Illuminate\Support\Facades\Storage; -use League\Flysystem\Cached\CachedAdapter; class LfmStorageRepository { @@ -26,13 +25,7 @@ class LfmStorageRepository public function rootPath() { - $adapter = $this->disk->getDriver()->getAdapter(); - - if ($adapter instanceof CachedAdapter) { - $adapter = $adapter->getAdapter(); - } - - return $adapter->getPathPrefix(); + return $this->disk->path(''); } public function move($new_lfm_path) diff --git a/packages/iqcontent/laravel-filemanager/src/Models/IQContentCategory.php b/packages/iqcontent/laravel-filemanager/src/Models/IQContentCategory.php index b071b8a..0c8ac07 100644 --- a/packages/iqcontent/laravel-filemanager/src/Models/IQContentCategory.php +++ b/packages/iqcontent/laravel-filemanager/src/Models/IQContentCategory.php @@ -27,10 +27,11 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory wherePos($value) * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereSlug($value) * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereUpdatedAt($value) - * @mixin \Eloquent * @property-read int|null $tags_count * @property string|null $identifier * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentCategory whereIdentifier($value) + * @method static \Illuminate\Database\Eloquent\Builder|IQContentCategory withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent */ class IQContentCategory extends Model { @@ -45,7 +46,7 @@ class IQContentCategory extends Model 'name', 'pos', 'active' ]; - public function sluggable() + public function sluggable(): array { return [ 'slug' => [ diff --git a/packages/iqcontent/laravel-filemanager/src/Models/IQContentFile.php b/packages/iqcontent/laravel-filemanager/src/Models/IQContentFile.php index 8c5091f..b8289e1 100644 --- a/packages/iqcontent/laravel-filemanager/src/Models/IQContentFile.php +++ b/packages/iqcontent/laravel-filemanager/src/Models/IQContentFile.php @@ -45,8 +45,9 @@ use Illuminate\Support\Str; * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFile whereSize($value) * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFile whereSlug($value) * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFile whereUpdatedAt($value) - * @mixin \Eloquent * @property-read int|null $file_tags_count + * @method static \Illuminate\Database\Eloquent\Builder|IQContentFile withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent */ class IQContentFile extends Model { @@ -74,7 +75,7 @@ class IQContentFile extends Model return $this->hasMany('IqContent\LaravelFilemanager\Models\IQContentFileTag', 'file_id'); } - public function sluggable() + public function sluggable(): array { return [ 'slug' => [ diff --git a/packages/iqcontent/laravel-filemanager/src/Models/IQContentFolder.php b/packages/iqcontent/laravel-filemanager/src/Models/IQContentFolder.php index e2e9f67..6842ad2 100644 --- a/packages/iqcontent/laravel-filemanager/src/Models/IQContentFolder.php +++ b/packages/iqcontent/laravel-filemanager/src/Models/IQContentFolder.php @@ -38,9 +38,10 @@ use Illuminate\Support\Str; * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFolder wherePos($value) * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFolder whereSlug($value) * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentFolder whereUpdatedAt($value) - * @mixin \Eloquent * @property-read int|null $files_count * @property-read int|null $folders_count + * @method static \Illuminate\Database\Eloquent\Builder|IQContentFolder withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent */ class IQContentFolder extends Model { @@ -57,7 +58,7 @@ class IQContentFolder extends Model ]; - public function sluggable() + public function sluggable(): array { return [ 'slug' => [ diff --git a/packages/iqcontent/laravel-filemanager/src/Models/IQContentTag.php b/packages/iqcontent/laravel-filemanager/src/Models/IQContentTag.php index 4880b3b..50c77c0 100644 --- a/packages/iqcontent/laravel-filemanager/src/Models/IQContentTag.php +++ b/packages/iqcontent/laravel-filemanager/src/Models/IQContentTag.php @@ -30,8 +30,9 @@ use Illuminate\Database\Eloquent\Model; * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag wherePos($value) * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereSlug($value) * @method static \Illuminate\Database\Eloquent\Builder|\IqContent\LaravelFilemanager\Models\IQContentTag whereUpdatedAt($value) - * @mixin \Eloquent * @property-read int|null $file_tags_count + * @method static \Illuminate\Database\Eloquent\Builder|IQContentTag withUniqueSlugConstraints(\Illuminate\Database\Eloquent\Model $model, string $attribute, array $config, string $slug) + * @mixin \Eloquent */ class IQContentTag extends Model { @@ -46,7 +47,7 @@ class IQContentTag extends Model 'name', 'pos', 'active' ]; - public function sluggable() + public function sluggable(): array { return [ 'slug' => [ diff --git a/packages/iqcontent/laravel-filemanager/src/lang/de/lfm.php b/packages/iqcontent/laravel-filemanager/src/lang/de/lfm.php index eb036fe..cb2195f 100644 --- a/packages/iqcontent/laravel-filemanager/src/lang/de/lfm.php +++ b/packages/iqcontent/laravel-filemanager/src/lang/de/lfm.php @@ -8,7 +8,7 @@ return [ 'nav-thumbnails' => 'Thumbnails', 'nav-list' => 'List', 'nav-sort' => 'Sort', - 'nav-sort-alphabetic'=> 'Sort By Alphabets', + 'nav-sort-alphabetic' => 'Sort By Alphabets', 'nav-sort-time' => 'Sort By Time', 'menu-rename' => 'Umbenennen', @@ -64,11 +64,19 @@ return [ 'error-cannotnewdirectory' => 'Sie sind nicht berechtigt, neue Ordner zu erstellen', 'error-cannotrename' => 'Sie sind nicht berechtigt, Ordner / Dateien umzubenennen', 'error-cannotresize' => 'Sie sind nicht berechtigt, die Dateigröße zu ändern', - 'error-folder-not-found'=> 'Folder not found! (:folder)', + 'error-folder-not-found' => 'Folder not found! (:folder)', 'error-size' => 'Over limit size:', 'error-move-exist' => 'Datei existiert bereits.', 'error-move-same' => 'Datei und Ziel sind gleich.', 'error-move-parent' => 'Unterordner kann nicht verschoben werden.', + 'error-upload-1' => 'Die Datei überschreitet die in der PHP-Konfiguration (upload_max_filesize) festgelegte maximale Größe.', + 'error-upload-2' => 'Die Datei überschreitet die im HTML-Formular (MAX_FILE_SIZE) festgelegte maximale Größe.', + 'error-upload-3' => 'Die Datei wurde nur teilweise hochgeladen.', + 'error-upload-4' => 'Es wurde keine Datei hochgeladen.', + 'error-upload-6' => 'Es fehlt ein temporärer Ordner auf dem Server.', + 'error-upload-7' => 'Fehler beim Schreiben der Datei auf die Festplatte.', + 'error-upload-8' => 'Eine PHP-Erweiterung hat den Upload gestoppt.', + 'error-upload-unknown' => 'Ein unbekannter Upload-Fehler ist aufgetreten (Error Code: :code).', diff --git a/packages/iqcontent/laravel-filemanager/src/views/index.blade.php b/packages/iqcontent/laravel-filemanager/src/views/index.blade.php index e47ea0e..566bb64 100644 --- a/packages/iqcontent/laravel-filemanager/src/views/index.blade.php +++ b/packages/iqcontent/laravel-filemanager/src/views/index.blade.php @@ -1,290 +1,408 @@ + - - - + + + - - - - - - + + + + + + - {{ trans('laravel-filemanager::lfm.title-page') }} - - - - - - - - - {{-- Use the line below instead of the above if you need to cache the css. --}} - {{-- --}} + {{ trans('laravel-filemanager::lfm.title-page') }} + + + + + + + + + {{-- Use the line below instead of the above if you need to cache the css. --}} + {{-- --}} + - - - - -
-
- -
-
- - - -
- - {{ trans('laravel-filemanager::lfm.message-empty') }} -
- -
- - -
- -
- -
-
- -

- @php($booking_files_count = 1) +
@@ -19,132 +19,23 @@ + {!! App\Helper\BookingDocument::getBookingDocumentsHTMLTable('registration', $booking) !!} + + {!! App\Helper\BookingDocument::getBookingDocumentsHTMLTable('confirmation', $booking) !!} - @if($booking->booking_applications) - @foreach($booking->booking_applications as $booking_application) - - - - - - - - @endforeach - @endif + {!! App\Helper\BookingDocument::getBookingDocumentsHTMLTable('storno', $booking) !!} - @if($booking->booking_confirmations) - @foreach($booking->booking_confirmations as $booking_confirmation) - - - - - - - - @endforeach - @endif + {!! App\Helper\BookingDocument::getBookingDocumentsHTMLTable('coupon', $booking) !!} - @if($booking->booking_stornos) - @foreach($booking->booking_stornos as $booking_storno) - - - - - - - - @endforeach - @endif - - @if($booking->coupons) - @foreach($booking->coupons as $coupon) - - - - - - - - @endforeach - @endif - - @if($booking->booking_vouchers) - @foreach($booking->booking_vouchers as $booking_voucher) - - - - - - - - @endforeach - @endif + {!! App\Helper\BookingDocument::getBookingDocumentsHTMLTable('voucher', $booking) !!} + {!! App\Helper\BookingDocument::getBookingDocumentsHTMLTable('voucher_agency', $booking) !!} + + @if($booking->insurance_certificates) @foreach($booking->insurance_certificates as $insurance_certificate) - + - + @@ -185,7 +76,7 @@ @foreach(\App\Services\Booking::contentFiles() as $content_file) @if($file = \App\Models\CMSContent::getModelBySlug($content_file)) - + - + - + - + @endforeach @@ -162,8 +178,6 @@
{{$booking_files_count++}} - - Reiseanmeldung - - - Reise | - Gesamtpreis: {{ \App\Services\Util::_number_format($booking_application->total)}} € - {{\App\Services\Util::_format_date($booking_application->updated_at, 'date')}} - - - -
{{$booking_files_count++}} - - Reisebestätigung - - - Reise | - Gesamtpreis: {{ \App\Services\Util::_number_format($booking_confirmation->total)}} € | - Anzahlung: {{ \App\Services\Util::_number_format($booking_confirmation->deposit)}} € | - Restzahlung: {{ \App\Services\Util::_number_format($booking_confirmation->final_payment)}} € - {{\App\Services\Util::_format_date($booking_confirmation->updated_at, 'date')}} - - - -
{{$booking_files_count++}} - - Stornobestätigung - - - Storno | Betrag: {{ \App\Services\Util::_number_format($booking_storno->total)}} € - {{\App\Services\Util::_format_date($booking_storno->updated_at, 'date')}} - - - -
{{$booking_files_count++}} - - Gutschein {{$coupon->number}} - - Gutschein | - Wert: {{ \App\Services\Util::_number_format($coupon->value)}} € | - bis: {{\App\Services\Util::_format_date($coupon->valid_date, 'date')}} | - @if($coupon->is_redeemed) {{\App\Services\Util::_format_date($coupon->redeem_date, 'date')}} @else @endif - {{\App\Services\Util::_format_date($coupon->issue_date, 'date')}} - - - -
{{$booking_files_count++}} - - Voucher-ID {{$booking_voucher->id}} - - -   - {{\App\Services\Util::_format_date($booking_voucher->updated_at, 'date')}} - - - -
{{$booking_files_count++}}{{App\Helper\BookingDocument::getFilesCount()}} Sicherungsschein Nr. {{$insurance_certificate->internal_id}} @@ -167,7 +58,7 @@ @if($booking->travel_insurances) @foreach($booking->travel_insurances as $travel_insurances)
{{$booking_files_count++}}{{App\Helper\BookingDocument::getFilesCount()}} Policennummer {{$travel_insurances->policy_number}}
{{$booking_files_count++}}{{App\Helper\BookingDocument::getFilesCount()}} {{$file->name}} @@ -212,7 +103,7 @@ @if($TravelCountry->stern_travel_country) @foreach($TravelCountry->stern_travel_country->general_files as $general_files)
{{$booking_files_count++}}{{App\Helper\BookingDocument::getFilesCount()}} {{$general_files->original_name}} @@ -239,7 +130,7 @@ @foreach($booking->getPassolutionPDF() as $PassolutionPDF) @if($PassolutionPDF)
{{$booking_files_count++}}{{App\Helper\BookingDocument::getFilesCount()}} {{$PassolutionPDF['filename']}} @@ -263,15 +154,15 @@ @if($booking->booking_files) @foreach($booking->booking_files as $booking_file)
{{$booking_files_count++}}{{App\Helper\BookingDocument::getFilesCount()}} {{$booking_file->original_name}} - hinzugefügt | - {{ $booking_file->mine }} | {{ $booking_file->formatBytes() }} + | {{ $booking_file->ext }} + | {{ $booking_file->formatBytes() }} {{\App\Services\Util::_format_date($booking_file->created_at, 'date')}} @@ -290,26 +181,73 @@ +
+
+
+
PDF Dateien erstellen
+

Die neuen PDF Dateien können hier neu erstellt werden. + @if($booking->booking_applications->count() > 0) +
Achtung: alle schon angelegten PDF Dateien aus der v2 bleiben erhalten. + @endif +

+ {!! Form::open(['url' => route('booking_detail', [$booking->id]), 'class' => 'form-horizontal']) !!} + @if(App\Helper\BookingDocument::showButton('registration', $booking)) + @php($confirm = ($booking->hasDocument('registration') ? "onclick=\"return confirm('Die vorhandene Reiseanmeldung wird überschrieben. Sind sie sicher?')\"" : "")) + + @endif + @if(App\Helper\BookingDocument::showButton('confirmation', $booking)) + @php($confirm = ($booking->hasDocument('confirmation') ? "onclick=\"return confirm('Die vorhandene Reisebestätigung wird überschrieben. Sind sie sicher?')\"" : "")) + + @endif + @if(App\Helper\BookingDocument::showButton('voucher', $booking)) + @php($confirm = ($booking->hasDocument('voucher') ? "onclick=\"return confirm('Die vorhandenen Voucher / Agentur werden überschrieben. Sind sie sicher?')\"" : "")) + + @endif + @if(App\Helper\BookingDocument::showButton('coupon', $booking)) + @php($confirm = ($booking->hasDocument('coupon') ? "onclick=\"return confirm('ACHTUNG: Es wird ein neuer Gutschein angelegt.')\"" : "")) + + @endif + @if(App\Helper\BookingDocument::showButton('storno', $booking)) + @php($confirm = ($booking->hasDocument('storno') ? "onclick=\"return confirm('ACHTUNG: Die vorhandene Storno wird überschrieben.')\"" : "")) + + @endif + {!! Form::close() !!} +
+
+
+ @if(Auth::user()->isPermission('sua-st-em')) @endif @if(Auth::user()->isPermission('sua-st-co'))
Landesspezifische Dateien unter: Einstellungen -> Reieseländer
@endif -
Passolution Dateien aktualisieren: +
Passolution Dateien aktualisieren:
- - -
diff --git a/resources/views/booking/_detail_mails.blade.php b/resources/views/booking/_detail_mails.blade.php index b8fe5ab..240fd41 100755 --- a/resources/views/booking/_detail_mails.blade.php +++ b/resources/views/booking/_detail_mails.blade.php @@ -116,7 +116,7 @@ -
+

diff --git a/resources/views/booking/_detail_myjack.blade.php b/resources/views/booking/_detail_myjack.blade.php index 9b9c420..15b9c55 100755 --- a/resources/views/booking/_detail_myjack.blade.php +++ b/resources/views/booking/_detail_myjack.blade.php @@ -22,7 +22,7 @@

diff --git a/resources/views/booking/_detail_participant.blade.php b/resources/views/booking/_detail_participant.blade.php index 9a3779d..9e28c81 100644 --- a/resources/views/booking/_detail_participant.blade.php +++ b/resources/views/booking/_detail_participant.blade.php @@ -1,6 +1,8 @@
@@ -101,7 +103,7 @@
diff --git a/resources/views/booking/_detail_price.blade.php b/resources/views/booking/_detail_price.blade.php index aca7156..869e6e2 100755 --- a/resources/views/booking/_detail_price.blade.php +++ b/resources/views/booking/_detail_price.blade.php @@ -125,7 +125,7 @@
diff --git a/resources/views/booking/_detail_provider.blade.php b/resources/views/booking/_detail_provider.blade.php index a2b7ee7..23ea050 100755 --- a/resources/views/booking/_detail_provider.blade.php +++ b/resources/views/booking/_detail_provider.blade.php @@ -68,7 +68,7 @@
  - {{ __('zur Übersicht') }} + {{ __('zur Übersicht') }} {{ __('Neuer Rabatt') }} {{ __('Neue Zahlung') }} diff --git a/resources/views/booking/_detail_services.blade.php b/resources/views/booking/_detail_services.blade.php index b79d7d4..c5b4a29 100755 --- a/resources/views/booking/_detail_services.blade.php +++ b/resources/views/booking/_detail_services.blade.php @@ -83,7 +83,7 @@
diff --git a/resources/views/booking/detail.blade.php b/resources/views/booking/detail.blade.php index b789753..4f9fa73 100755 --- a/resources/views/booking/detail.blade.php +++ b/resources/views/booking/detail.blade.php @@ -40,7 +40,7 @@
-
@@ -98,6 +97,20 @@ {{ Form::text('pos', $value->pos, array('class'=>'form-control')) }}
+ @if($value->identifier === 'fewo-email-file') +
+
+ +
+ +
+ + @endif
@@ -79,7 +79,7 @@
{{ Form::text('special_availables['.$special_local->id.'][date]', $special_local->date, array('placeholder'=>__('Datum'), 'class'=>'form-control datepicker-base')) }}
-
{!! \App\Services\HTMLHelper::getDeDay($special_local->wday) !!}
+
{!! \App\Helper\HTMLHelper::getDeDay($special_local->wday) !!}
@@ -134,12 +134,12 @@
@@ -160,7 +160,7 @@
{{ Form::text('special_availables['.$special_phone->id.'][date]', $special_phone->date, array('placeholder'=>__('Datum'), 'class'=>'form-control datepicker-base')) }}
-
{!! \App\Services\HTMLHelper::getDeDay($special_phone->wday) !!}
+
{!! \App\Helper\HTMLHelper::getDeDay($special_phone->wday) !!}
diff --git a/resources/views/cms/feedback/detail.blade.php b/resources/views/cms/feedback/detail.blade.php index 14abaf8..a7eb5d7 100755 --- a/resources/views/cms/feedback/detail.blade.php +++ b/resources/views/cms/feedback/detail.blade.php @@ -31,7 +31,7 @@ @if($feedback->lvl != 1) - {!! HTMLHelper::getParentBy($feedback->parent, $feedback->getParentsArray()) !!} @else @@ -56,8 +56,8 @@
- - {{ Form::textarea('content', HTMLHelper::filterHTML($feedback->content, ['src' => ['addHost']]) , ['class' => 'form-control summernote']) }} + + {{ Form::textarea('content_new', HTMLHelper::filterHTML($feedback->content_new, ['src' => ['addHost']]) , ['class' => 'form-control summernote', 'id'=>'feedback_content_new']) }}
@@ -76,6 +76,34 @@
+

Hauptbild

+
+
+ +
+
+
+ {{ Form::hidden('image[slug]', $feedback->getImage('slug')) }} + {{ Form::hidden('image[thumb_url]', $feedback->getImage('thumb_url')) }} + {{ Form::hidden('image[url]', $feedback->getImage('url')) }} + {{ Form::text('image[title]', $feedback->getImage('title'), array('placeholder'=>'Bildtitel', 'class'=>'form-control mb-2')) }} + {{ Form::text('image[alt]', $feedback->getImage('alt'), array('placeholder'=>'Bild ALT Tag', 'class'=>'form-control')) }} +
+
+ +
+
+
+
+ @@ -187,4 +215,12 @@ --}} +@endsection + +@section('scripts') + @endsection \ No newline at end of file diff --git a/resources/views/cms/news/detail.blade.php b/resources/views/cms/news/detail.blade.php new file mode 100644 index 0000000..4678565 --- /dev/null +++ b/resources/views/cms/news/detail.blade.php @@ -0,0 +1,226 @@ +@extends('layouts.layout-2') + +@section('content') + + + {!! Form::open(['url' => route('cms_news_detail', [$id]), 'class' => 'form-horizontal']) !!} + +

+ News @if($id == "new") anlegen @else {{"(ID: ".$id.")"}} verwalten @endif +
+   + {{ __('back') }} +
+

+
+ + + + +
+
+
+
+ + {{ Form::text('title', $news->title, array('placeholder'=>__('Title'), 'class'=>'form-control', 'id'=>'news_title', 'required'=>true)) }} +
+
+ + {{-- @if($news->lvl != 0) + + + @else + +
NON
+ @endif + --}} +
+
+
+ +
+ + {{ Form::text('slug', $news->slug, array('placeholder'=>__('slug'), 'class'=>'form-control', 'id'=>'news_slug', 'required'=>true)) }} +
+
+ + {{ Form::text('date', $news->date, array('placeholder'=>__('Reisezeitraum'), 'class'=>'form-control datepicker-base', 'id'=>'news_date', 'required'=>true)) }} +
+ +
+ +
+
+ + {{ Form::textarea('content_new', HTMLHelper::filterHTML($news->content_new, ['src' => ['addHost']]) , ['class' => 'form-control summernote', 'id'=>'news_content_new']) }} +
+
+ +
+
+ + {{ Form::text('pagetitle', $news->pagetitle, array('placeholder'=>__('pagetitle'), 'class'=>'form-control', 'id'=>'news_pagetitle')) }} +
+
+ + {{ Form::text('description', $news->description, array('placeholder'=>__('description'), 'class'=>'form-control', 'id'=>'news_description')) }} +
+
+ + {{ Form::text('keywords', $news->keywords, array('placeholder'=>__('keywords'), 'class'=>'form-control', 'id'=>'news_keywords')) }} +
+
+ +

Hauptbild

+
+
+ +
+
+
+ {{ Form::hidden('image[slug]', $news->getImage('slug')) }} + {{ Form::hidden('image[thumb_url]', $news->getImage('thumb_url')) }} + {{ Form::hidden('image[url]', $news->getImage('url')) }} + {{ Form::text('image[title]', $news->getImage('title'), array('placeholder'=>'Bildtitel', 'class'=>'form-control mb-2')) }} + {{ Form::text('image[alt]', $news->getImage('alt'), array('placeholder'=>'Bild ALT Tag', 'class'=>'form-control')) }} +
+
+ +
+
+
+
+ +
+
+ +
+   + {{ __('back') }} + {{ __('zurück ins v2 Programm') }} +
+ + {!! Form::close() !!} + + {{-- + + + + + + + + + --}} + + +@endsection + +@section('scripts') + +@endsection \ No newline at end of file diff --git a/resources/views/cms/news/index.blade.php b/resources/views/cms/news/index.blade.php new file mode 100644 index 0000000..d7efb3d --- /dev/null +++ b/resources/views/cms/news/index.blade.php @@ -0,0 +1,114 @@ +@extends('layouts.layout-2') + +@section('content') +

+ {{ __('Reisenews') }} +

+ +
+
+ + + + + + + + + + + + + + + @foreach ($news as $value) + + + + + + + + + + + @endforeach + +
 Bild{{ __('Name') }}{{ __('Parent') }}{{ __('Date') }}{{ __('sichtbar') }}#
+ + + + + {{ $value->title }} + {{ $value->title }} + @if ($value->parent) + {{ $value->parent->title }} + @else + - Main No-Parent - + @endif + {{ $value->date }} + @if ($value->status) + + @else + + @endif + + @if ($value->parent) + + @else + - + @endif +
+ +
+ +
+@endsection diff --git a/resources/views/cms/travel_guide/test.blade.php b/resources/views/cms/travel_guide/test.blade.php new file mode 100644 index 0000000..750fba9 --- /dev/null +++ b/resources/views/cms/travel_guide/test.blade.php @@ -0,0 +1,91 @@ +@extends('layouts.layout-2') + +@section('content') + + @if ($errors->any()) +
+
+
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+
+
+ @endif + + + {!! Form::open(['url' => route('cms_travel_guide_test'), 'class' => 'form-horizontal']) !!} + +

+ Reiseführer TEST Editor + +

+
+ + + +
+
+
+
+ +
+ {{ Form::textarea('content_new', '' , ['class' => 'form-control summernote']) }} +
+
+ +
+
+ +
+
+
+
+ +
+ {{ Form::textarea('content_new', '' , ['class' => 'form-control summernote-small']) }} +
+
+ +
+
+ +
+
+
+
+ +
+ {{ Form::textarea('content_new', '' , ['class' => 'form-control summernote-exsmall']) }} +
+
+ +
+
+ +
+
+
+
+ +
+ {{ Form::textarea('content_new', '' , ['class' => 'form-control summernote-air']) }} +
+
+ +
+
+ + {!! Form::close() !!} +@endsection + +@section('scripts') + +@endsection \ No newline at end of file diff --git a/resources/views/cms/travel_guide/tree-detail.blade.php b/resources/views/cms/travel_guide/tree-detail.blade.php index fb95c8b..5a5d17f 100755 --- a/resources/views/cms/travel_guide/tree-detail.blade.php +++ b/resources/views/cms/travel_guide/tree-detail.blade.php @@ -79,7 +79,7 @@ data-route="{{ route('iq_content_modal_load') }}">
- {!! \App\Services\HTMLTreeHelper::makeNestableList($model, ($tree_node ? $tree_node->id : false)) !!} + {!! \App\Helper\TreeHTML::makeNestableList($model, ($tree_node ? $tree_node->id : false)) !!}
{!! Form::close() !!} @@ -106,25 +106,25 @@
- {{-- - --}} - + {{-- + + --}} @if(!$site_fields)
diff --git a/resources/views/contact/_detail_contact.blade.php b/resources/views/contact/_detail_contact.blade.php new file mode 100644 index 0000000..852af81 --- /dev/null +++ b/resources/views/contact/_detail_contact.blade.php @@ -0,0 +1,135 @@ +
+ + +
+
+ + @if($id !== 'new') +
+
+ + {{ Form::text('contact_id', $contact->id, ['placeholder' => __('Kontakt ID'), 'class' => 'form-control', 'id' => 'contact_id', 'readonly']) }} +
+
+ + +
+
+ @endif + +
+
+ + {{ Form::select('salutation_id', \App\Models\Contact::$salutationType, $contact->salutation_id, ['class' => 'custom-select', 'required' => true]) }} +
+ +
+ + {{ Form::text('firstname', $contact->firstname, ['placeholder' => __('Vorname'), 'class' => 'form-control', 'id' => 'firstname', 'required' => true]) }} +
+ +
+ + {{ Form::text('name', $contact->name, ['placeholder' => __('Nachname'), 'class' => 'form-control', 'id' => 'name', 'required' => true]) }} +
+ +
+ + {{ Form::text('birthdate', $contact->birthdate ? $contact->birthdate->format('d.m.Y') : '', ['placeholder' => 'TT.MM.JJJJ', 'class' => 'form-control', 'id' => 'birthdate']) }} +
+ +
+ + {{ Form::text('company', $contact->company, ['placeholder' => __('Firma'), 'class' => 'form-control', 'id' => 'company']) }} +
+ +
+ + {{ Form::text('street', $contact->street, ['placeholder' => __('Straße'), 'class' => 'form-control', 'id' => 'street']) }} +
+ +
+ + {{ Form::text('zip', $contact->zip, ['placeholder' => __('PLZ'), 'class' => 'form-control', 'id' => 'zip']) }} +
+ +
+ + {{ Form::text('city', $contact->city, ['placeholder' => __('Stadt'), 'class' => 'form-control', 'id' => 'city']) }} +
+ +
+ + {{ Form::select('country_id', \App\Models\Contact::getCountriesArray(), $contact->country_id, ['class' => 'custom-select', 'required' => true]) }} +
+ +
+ + {{ Form::text('phone', $contact->phone, ['placeholder' => __('Telefon'), 'class' => 'form-control', 'id' => 'phone']) }} +
+ +
+ + {{ Form::text('phonemobile', $contact->phonemobile, ['placeholder' => __('Mobil'), 'class' => 'form-control', 'id' => 'phonemobile']) }} +
+ +
+ + {{ Form::text('phonebusiness', $contact->phonebusiness, ['placeholder' => __('Geschäftlich'), 'class' => 'form-control', 'id' => 'phonebusiness']) }} +
+ +
+ + {{ Form::text('email', $contact->email, ['placeholder' => __('E-Mail'), 'class' => 'form-control', 'id' => 'email', 'required' => true]) }} +
+ +
+
+ + + {{ __('zur Übersicht') }} + +
+
+
+ + @if($id !== 'new' && $contact->mergedContacts->isNotEmpty()) +
+
{{ __('Zusammengeführte Duplikate') }}
+ + + + + + + + + + + @foreach($contact->mergedContacts as $merged) + + + + + + + @endforeach + +
{{ __('ID') }}{{ __('Name') }}{{ __('E-Mail') }}{{ __('Zusammengeführt am') }}
{{ $merged->id }}{{ $merged->fullName() }}{{ $merged->email }}{{ $merged->merged_at ? $merged->merged_at->format('d.m.Y') : '-' }}
+ @endif + +
+
+
diff --git a/resources/views/contact/_detail_history.blade.php b/resources/views/contact/_detail_history.blade.php new file mode 100644 index 0000000..e232490 --- /dev/null +++ b/resources/views/contact/_detail_history.blade.php @@ -0,0 +1,122 @@ +@php $modal = $modal ?? false; @endphp + +@if(!$modal) +
+ +
+
+@endif + + {{-- Anfragen --}} + @if($contact->leads->isNotEmpty()) +
{{ __('Anfragen') }}
+
+ + + + + + + + + + + @foreach($contact->leads as $lead) + + + + + + + @endforeach + +
{{ __('ID') }}{{ __('Sachbearbeiter') }}{{ __('Status') }}{{ __('Anfrage-Datum') }}
+ + + + {{ $lead->id }} + + @if($lead->sf_guard_user_id && $lead->sf_guard_user) + {{ $lead->sf_guard_user->first_name }} {{ $lead->sf_guard_user->last_name }} + @endif + {!! $lead->getStatusBadge() !!}{{ _format_date($lead->request_date) }}
+
+ @else +

{{ __('Keine Anfragen vorhanden.') }}

+ @endif + +
+ + {{-- Buchungen --}} + @if($contact->bookings->isNotEmpty()) +
{{ __('Buchungen') }}
+
+ + + + + + + + + + + + + + + @foreach($contact->bookings as $booking) + + + + + + + + + + + @endforeach + +
{{ __('ID') }}{{ __('Reiseland') }}{{ __('Programm') }}{{ __('Anreise') }}{{ __('Abreise') }}{{ __('Sachbearbeiter') }}{{ __('Status') }}{{ __('Datum') }}
+ + + + {{ $booking->id }} + + @if($booking->travel_country_id && $booking->travel_country) + {{ $booking->travel_country->name }} + @endif + + @if($booking->travelagenda_id && $booking->travel_agenda) + {{ $booking->travel_agenda->name }} + @endif + {{ _format_date($booking->start_date) }}{{ _format_date($booking->end_date) }} + @if($booking->sf_guard_user_id && $booking->sf_guard_user) + {{ $booking->sf_guard_user->first_name }} {{ $booking->sf_guard_user->last_name }} + @endif + + @if($booking->lead) + {!! $booking->lead->getStatusBadge($booking) !!} + @endif + {{ _format_date($booking->booking_date) }}
+
+ @else +

{{ __('Keine Buchungen vorhanden.') }}

+ @endif + +@if(!$modal) +
+
+
+@endif diff --git a/resources/views/contact/detail.blade.php b/resources/views/contact/detail.blade.php new file mode 100644 index 0000000..d03cb5b --- /dev/null +++ b/resources/views/contact/detail.blade.php @@ -0,0 +1,97 @@ +@extends('layouts.layout-2') + +@section('content') + + + +

+ {{ $id === 'new' ? __('Neuer Kontakt') : __('Kontakt') . ': ' . $contact->fullName() }} +

+ + @if(session('alert-save')) + + @endif + + + + {!! Form::open(['url' => route('contact_detail_store', [$id]), 'class' => 'form-horizontal', 'id' => 'contact-form-validation']) !!} + + + @include('contact._detail_contact') + + @if($id !== 'new') + @include('contact._detail_history') + @endif + + + + {!! Form::close() !!} + + + +@endsection diff --git a/resources/views/contact/duplicates.blade.php b/resources/views/contact/duplicates.blade.php new file mode 100644 index 0000000..3cc5be9 --- /dev/null +++ b/resources/views/contact/duplicates.blade.php @@ -0,0 +1,224 @@ +@extends('layouts.layout-2') + +@section('content') +
+

+ Mögliche Duplikate + Kontakte zur manuellen Prüfung +

+ + Zurück zur Übersicht + +
+ + {{-- Konfidenz-Tabs --}} + + + {{-- Lade-Spinner --}} +
+ +

Duplikate werden geladen…

+
+ + {{-- Gruppen-Container --}} + + + {{-- Leer-Zustand --}} + + + {{-- Erfolg-Toast --}} + + + {{-- Fehler-Toast --}} + + + +@endsection diff --git a/resources/views/contact/index.blade.php b/resources/views/contact/index.blade.php new file mode 100644 index 0000000..b327d3d --- /dev/null +++ b/resources/views/contact/index.blade.php @@ -0,0 +1,409 @@ +@extends('layouts.layout-2') + +@section('content') +
+

+ {{ __('Kontakte') }} + Stammkunden ohne Duplikate +

+ + {{ __('Neuer Kontakt') }} + +
+ + {{-- Filterleiste --}} +
+
+
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + + + +
+
+ +
+ +
+ +
+
+
+ + {{-- History-Modal (Anfragen + Buchungen) --}} + + + {{-- Bestätigungs-Modal Löschen --}} + + + {{-- Fehler-Toast --}} + + + {{-- Erfolg-Toast (Wiederherstellen) --}} + + + {{-- Tabelle --}} +
+
+
+
+
+ + + + + + + + + + + + + + + + +
 {{ __('ID') }}{{ __('Vorname') }}{{ __('Nachname') }}{{ __('E-Mail') }}{{ __('PLZ') }}{{ __('Ort') }}{{ __('Anfragen') }}{{ __('Buchungen') }}{{ __('Gelöscht am') }} 
+
+
+ + +@endsection diff --git a/resources/views/customer/_detail_booking.blade.php b/resources/views/customer/_detail_booking.blade.php index a936771..8c6a619 100644 --- a/resources/views/customer/_detail_booking.blade.php +++ b/resources/views/customer/_detail_booking.blade.php @@ -129,9 +129,18 @@ @foreach ($customer->coupons as $coupon)
- - Gutschein {{$coupon->number}} + @if($coupon->booking_document) + + + Gutschein {{$coupon->number}} + @else + + Gutschein {{$coupon->number}} + + @endif + + {{ \App\Services\Util::_number_format($coupon->value)}} € @@ -151,10 +160,17 @@ - - - + @if($coupon->booking_document) + + + + @else + + + + @endif
- -
diff --git a/resources/views/customer/detail.blade.php b/resources/views/customer/detail.blade.php index f6faace..e900984 100755 --- a/resources/views/customer/detail.blade.php +++ b/resources/views/customer/detail.blade.php @@ -39,7 +39,7 @@