# This file is the entry point to configure your own services.
# Files in the packages/ subdirectory configure your dependencies.

# Put parameters here that don't need to change on each machine where the app is deployed
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
parameters:
    directory: '%kernel.project_dir%/public/uploads'
    transfer_orders_directory: '%kernel.project_dir%/public/transfer_orders'

services:
    # default configuration for services in *this* file
    _defaults:
        autowire: true      # Automatically injects dependencies in your services.
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
        bind:
            $adminUrl: '%env(BACKOFFICE_URL)%'
            $transferOrdersDirectory: '%transfer_orders_directory%'

    App\Workflow\SingleStateMethodMarkingStore:
        class: Symfony\Component\Workflow\MarkingStore\MethodMarkingStore
        arguments:
            $property: 'currentStatus'
            $singleState: true

    App\EventListener\SetPartnerEntityManagerListener:
        tags:
            - { name: kernel.event_listener, event: kernel.request, priority: 100 }

    App\Service\EntityManagerContext:
        lazy: true

    App\Security\MultiDbUserProvider:
        arguments:
            $registry: '@doctrine'
            $emContext: '@App\Service\EntityManagerContext'
        tags: [ 'security.user_provider' ]

    App\Logger\DynamicAgencyLogger:
        decorates: Psr\Log\LoggerInterface
        arguments:
            $logger: '@App\Logger\DynamicAgencyLogger.inner'            
            $promohotel6Logger: '@monolog.logger.promohotel6'            

    # makes classes in src/ available to be used as services
    # this creates a service per class whose id is the fully-qualified class name
    App\:
        resource: '../src/'
        exclude:
            - '../src/DependencyInjection/'
            - '../src/Entity/'
            - '../src/Kernel.php'

    # add more service definitions when explicit configuration is needed
    # please note that last definitions always *replace* previous ones
