parameters :
    secret : vNwY+ALn+SUBL68S+L5fEuAtI2elR5KQ
    router.request_context.scheme: 'https'

pimcore :
    assets :
        frontend_prefixes :
            source : '%env(string:CDN_URL)%'
            thumbnail : '%env(string:AZURE_URL_THUMBNAIL)%'

services :
    _defaults :
        # automatically injects dependencies in your services
        autowire : true
        # automatically registers your services as commands, event subscribers, etc.
        autoconfigure : true
        # this means you cannot fetch services directly from the container via $container->get()
        # if you need to do this, you can override this setting on individual services
        public : false

    App\Controller\ :
        resource : '../src/Controller'
        public : true
        tags : [ 'controller.service_arguments' ]



        # ---------------------------------------------------------
        # Register all commands of App as commands
        # ---------------------------------------------------------
    App\Command\ :
        resource : '../src/Command'
        tags : [ 'console.command' ]

    App\EventSubscriber\:
        resource: '../src/EventSubscriber'
        tags: ['kernel.event_subscriber']

    App\EventListener\AuthenticationSuccessListener :
        class : App\EventListener\AuthenticationSuccessListener
        tags :
            - { name : kernel.event_listener, event : lexik_jwt_authentication.on_authentication_success, method : onAuthenticationSuccessResponse }

    App\EventListener\CustomAssetMetaDataAndObjectRelation :
        tags :
            - { name : kernel.event_listener, event : pimcore.asset.postAdd, method : assetObjectRelation }
    App\EventListener\OverwriteAssetEventListener :
        tags :
            - { name : kernel.event_listener, event : pimcore.asset.preUpdate , method : overwriteAssetUpdate }

    App\MessageHandler\AutomateEmbeddedMetadataMessageHandler :
        arguments :
            $logger : '@Pimcore\Log\ApplicationLogger'
            $notificationService : '@Pimcore\Model\Notification\Service\NotificationService'
            $repositoryServiceLocator : '@App\Service\RepositoryServiceLocator'
        tags :
            - { name : messenger.message_handler }
    App\MessageHandler\DigitalPortalThumbnailMessageHandler :
        arguments :
            $logger : '@Pimcore\Log\ApplicationLogger'
        tags :
            - { name : messenger.message_handler }
    App\MessageHandler\ThumbnailNameChangeMessageHandler :
        tags :
            - { name : messenger.message_handler }
    assets_filesystem :
        class : League\Flysystem\Filesystem
        arguments :
            - '@assets_adapter'
    thumbnail_filesystem :
        class : League\Flysystem\Filesystem
        arguments :
            - '@thumbnail_adapter'
    cache_filesystem :
        class : League\Flysystem\Filesystem
        arguments :
            - '@asset_cache_adapter'
    App\Service\ThumbnailGeneratorDamPortalService :
        public : true
        arguments :
            $assetsFilesystem : '@assets_filesystem'
            $thumbnailsFilesystem : '@thumbnail_filesystem'
            $cachesFilesystem : '@cache_filesystem'

    App\EventListener\AssetUpdateListener :
        tags :
            - { name : kernel.event_listener, event : pimcore.asset.postUpdate, method : onPostUpdate }

    App\EventListener\AssetRenameListener :
        tags :
            - { name : kernel.event_listener, event : pimcore.asset.postDelete, method : onPostDelete }

    App\EventListener\CustomMetadataUpdateListener :
        tags :
            - { name : kernel.event_listener, event : pimcore.dataobject.postUpdate, method : onPostUpdate }

    App\EventListener\UserListener :
        tags :
            - { name : kernel.event_listener, event : pimcore.version.preSave, method : preSaveUser }

    App\EventListener\AddDefaultFavoriteFolderForUserListener :
        tags :
            - { name : kernel.event_listener, event : pimcore.dataobject.postAdd, method : onPostAdd }

    App\EventListener\CorsSubscriber :
        class : App\EventListener\CorsSubscriber
        tags :
            - { name : kernel.event_subscriber }
    App\EventListener\DlsListener :
        tags :
            - { name : kernel.event_listener, event : pimcore.dataobject.preAdd, method : onPreAdd }

    App\EventListener\RelationTypeListener :
        tags :
            - { name : kernel.event_listener, event : pimcore.dataobject.preAdd, method : onPreAdd }
            - { name : kernel.event_listener, event : pimcore.dataobject.preUpdate, method : onPreUpdate }

    App\EventListener\RelatedProductValidationListener :
        tags :
            - { name : kernel.event_listener, event : pimcore.dataobject.preUpdate, method : onPreUpdate }   

    App\EventListener\SizeMatrixGraphqlEventIdByName :
        class : App\EventListener\SizeMatrixGraphqlEventIdByName
        autoconfigure : true
    ###### LISTING FACTORY FOR EASY CODE TESTING #####
    App\Factory\ListingFactory : ~

    App\Repository\ :
        resource : '../src/Repository/'
        tags : [ 'app.repository' ]
    App\Repository\GenericRepository :
        abstract : true
        arguments :
            $className : ~ # Placeholder, should be overridden in the concrete repository definitions
            $listingFactory : '@App\Factory\ListingFactory'
    App\Service\RepositoryServiceLocator :
        arguments :
            - !tagged_locator 'app.repository'
    App\Repository\AgeRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\Age'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\AgeOptionsProvider :
        class : App\DynamicOptionsProvider\GenericSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\AgeRepository'
        public : true

    App\Repository\BrandRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\Brand'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\BrandOptionsProvider :
        class : App\DynamicOptionsProvider\GenericSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\BrandRepository'
        public : true

    App\Repository\AssetColorRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\AssetColor'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\AssetColorOptionsProvider :
        class : App\DynamicOptionsProvider\GenericMultiSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\AssetColorRepository'
        public : true
    App\Repository\BrandPortalCategoryRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\BrandPortalCategory'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\BrandPortalCategoryOptionsProvider :
        class : App\DynamicOptionsProvider\GenericSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\BrandPortalCategoryRepository'
        public : true

    App\Repository\ChannelRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\Channel'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\ChannelSelectOptionProvider :
        class : App\DynamicOptionsProvider\GenericSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\ChannelRepository'
        public : true

    App\Repository\ColorCodeRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\ColorCode'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\ColorCodeOptionsProvider :
        class : App\DynamicOptionsProvider\GenericMultiSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\ColorCodeRepository'
        public : true

    App\Repository\ColorNameRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\Color'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\ColorNameOptionsProvider :
        class : App\DynamicOptionsProvider\GenericMultiSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\ColorNameRepository'
        public : true

    App\Repository\CompanyTypeRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\CompanyType'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\CompanyTypetOptionsProvider :
        class : App\DynamicOptionsProvider\GenericSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\CompanyTypeRepository'
        public : true

    App\Repository\DamFabricContentRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\FabricContent'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\DamFabricContentOptionsProvider :
        class : App\DynamicOptionsProvider\GenericMultiSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\DamFabricContentRepository'
        public : true
    App\Repository\FabricContentRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\FabricContent'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\FabricContentOptionsProvider :
        class : App\DynamicOptionsProvider\GenericMultiSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\FabricContentRepository'
        public : true
    App\Repository\GenderRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\Gender'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\GenderOptionsProvider :
        class : App\DynamicOptionsProvider\GenericSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\GenderRepository'
        public : true
    App\Repository\InternalCodeRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\ColorCode'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\InternalCodeOptionsProvider :
        class : App\DynamicOptionsProvider\GenericSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\InternalCodeRepository'
        public : true
    App\Repository\MeasurementRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\Measurement'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\MeasurementOptionsProvider :
        class : App\DynamicOptionsProvider\GenericSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\MeasurementRepository'
        public : true

    App\Repository\MeasurementUnitRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\MeasurementUnit'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\MeasurementUnitOptionsProvider :
        class : App\DynamicOptionsProvider\GenericSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\MeasurementUnitRepository'
        public : true

    App\Repository\ProductYearRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\ProductYear'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\ProductYearOptionsProvider :
        class : App\DynamicOptionsProvider\GenericMultiSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\ProductYearRepository'
        public : true

    App\Repository\RegionRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\Region'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\RegionOptionsProvider :
        class : App\DynamicOptionsProvider\GenericSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\RegionRepository'
        public : true

    App\Repository\ReleaseMonthRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\DateMonth'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\ReleaseMonthOptionsProvider :
        class : App\DynamicOptionsProvider\GenericSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\ReleaseMonthRepository'
        public : true

    App\Repository\SequenceTypeRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\Sequence'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\SequenceTypeOptionsProvider :
        class : App\DynamicOptionsProvider\GenericSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\SequenceTypeRepository'
        public : true

    App\Repository\SilhouetteRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\Silhouette'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\SilhouetteOptionsProvider :
        class : App\DynamicOptionsProvider\GenericSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\SilhouetteRepository'
        public : true

    App\Repository\SizeRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\Size'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\SizeOptionsProvider :
        class : App\DynamicOptionsProvider\GenericSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\SizeRepository'
        public : true

    App\Repository\StyleRepository :
        arguments :
            $className : 'Pimcore\Model\DataObject\Style'
            $listingFactory : '@App\Factory\ListingFactory'
        tags :
            - { name : app.repository }
    App\DynamicOptionsProvider\StyleOptionsProvider :
        class : App\DynamicOptionsProvider\GenericSelectOptionsProvider
        arguments :
            $repository : '@App\Repository\StyleRepository'
        public : true

    Pimcore\Localization\LocaleServiceInterface :
        public : true
        class : App\Localization\LocaleService

    App\EventListener\VariantRenameListener :
        tags :
            - { name : kernel.event_listener, event : pimcore.dataobject.preUpdate, method : onPreUpdate }
    #    #            - { name: kernel.event_listener, event: pimcore.asset.postDelete, method: onPostDelete }
    App\EventListener\AutomationAssigningOfVariant :
        tags :
            - { name : kernel.event_listener, event : pimcore.admin.dataobject.get.preSendData, method : variantAutoUpdate }

    dam.security.password_hasher_factory :
        class : Pimcore\Security\Hasher\Factory\UserAwarePasswordHasherFactory
        arguments :
            - Pimcore\Security\Hasher\PasswordFieldHasher
            - [ 'password' ]
    dam.security.user_provider :
        class : Pimcore\Security\User\ObjectUserProvider
        arguments : [ 'DamReactPortal\ApiBundle\Model\DataObject\User', 'email' ]

    jwt_Authentication :
        class : App\Security\MainAuthenticatorExtendingJWTToken
        parent : lexik_jwt_authentication.security.jwt_authenticator
        arguments :
            $jwtManager : '@lexik_jwt_authentication.jwt_manager'
            $eventDispatcher : '@event_dispatcher'
            $tokenExtractor : '@lexik_jwt_authentication.extractor.chain_extractor'
            $userProvider : '@dam.security.user_provider'

    okta_Authentication :
        class : App\Security\OktaAuthenticator
        arguments :
            $baseUrl : '%env(OKTA_BASE_URL_FRONT)%'

    App\Security\SecurityOktaController :
        arguments :
            $httpClient : '@http_client'
            $logger : '@logger'
            $tokenStorage : '@security.token_storage'
            $baseUrl : '%env(OKTA_BASE_URL)%'
            $clientId : '%env(OKTA_CLIENT_ID)%'
            $redirectUri : '%env(OKTA_REDIRECT_URI)%'
            $clientSecret : '%env(OKTA_CLIENT_SECRET)%'


    App\Service\MercureJwtGenerator :
        arguments :
            $publishSecret : '%env(MERCURE_PUBLISHER_JWT_KEY)%'
            $subscribeSecret : '%env(MERCURE_SUBSCRIBER_JWT_KEY)%'
            $suburl : '%env(MERCURE_SUBURL)%'

    App\MessageHandler\DownloadZipInfoMessageHandler :
        arguments :
            $mercureHub : '@mercure.hub.default'
            $mercureJwtGenerator : '@App\Service\MercureJwtGenerator'
            $assetsFilesystem : '@assets_filesystem'
            $subUrl : '%env(MERCURE_SUBURL)%'
        tags :
            - { name : messenger.message_handler }
    App\Command\DeleteExpiredZipTasksCommand :
        $assetsFilesystem : '@assets_filesystem'

    App\Service\UserNotificationService :
    App\Service\DownloadService :
        arguments :
            $thumbnailFlysystem : '@thumbnail_filesystem'


    App\Security\OktaAdminAuthenticator :
        arguments :
            $baseUrl : '%env(OKTA_BASE_URL)%'
        tags :
            - { name : 'monolog.logger', channel : 'security' }
            - { name : 'security.authenticator' }
    App\Command\DeletingMasterThumbnailForNonExistingAssetID :
        arguments :
            $blobURL : '%env(AZURE_URL_ASSET)%'

    App\Service\TableSwapper\TableSwapperService :
        public : true

    App\Command\Reports\TotalDownloadByAssetPopulateCommand :
        arguments :
            $assetBlobUrl : '%env(AZURE_URL_ASSET)%'
    App\Command\Reports\TotalDownloadsByAssetTypeBrandRegionUserPopulateCommand :
        arguments :
            $assetBlobUrl : '%env(AZURE_URL_ASSET)%'
    App\Command\Reports\DownloadsByUserPopulateCommand :
        arguments :
            $assetBlobUrl : '%env(AZURE_URL_ASSET)%'
    App\EventSubscriber\RedirectGildanLoginSubscriber :
        tags :
            - { name : kernel.event_subscriber }
    App\EventSubscriber\ResetEmailRewriteSubscriber :
        tags :
            - { name : kernel.event_subscriber }
    App\Service\OktaTokenManager :
        arguments :
            $clientId : '%env(OKTA_CLIENT_ID)%'
            $clientSecret : '%env(OKTA_CLIENT_SECRET)%'
            $tokenUrl : 'https://gildan.oktapreview.com/oauth2/aus2dhsvo70Ikb8WO0h8/v1/token'