# 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:

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.

    # 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

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

    # Utils
    App\Utils\Icon:
        public: true

    App\Utils\DistinctUtils:
        arguments:
            $tablePrefix: '%env(PREFIXE_DATABASE_TABLE)%'

    # Service
    App\Service\PaginatorService:
        autowire: true
        autoconfigure: true

    App\Service\PrefixNamingStrategy:
        arguments:
            $prefix: '%env(PREFIXE_DATABASE_TABLE)%'
        public: true

    App\Twig\Hash:
        tags: ['twig.extension']

    App\EventSubscriber\CalendarSubscriber:

    App\EventSubscriber\TablePrefixSubscriber:
        arguments:
            $prefix: '%env(PREFIXE_DATABASE_TABLE)%'
        tags:
            - { name: doctrine.event_subscriber }

    App\EventListener\PlanComptageUpdateSubscriber:
        tags: ['doctrine.event_subscriber']

    App\EventListener\MaintenanceListener:
        arguments:
            $maintenanceMode: '%env(APP_MAINTENANCE)%'
        tags:
            - { name: kernel.event_listener, event: kernel.request, priority: 0 }

    App\Twig\Components\:
        resource: '../src/Twig/Components'
        tags: ['twig.component']

    # Configuration des listeners
    App\EventListener\TemplateListener:
        tags:
            - { name: kernel.event_listener, event: kernel.controller }

    # Configuration des services
    App\Service\NavigationService:
        public: true