# Learn more about services, parameters and containers at
# https://symfony.com/doc/current/service_container.html
parameters:
    #parameter_name: value

services:
    # default configuration for services in *this* file
    _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

    # makes classes in src/AppBundle available to be used as services
    # this creates a service per class whose id is the fully-qualified class name
    AppBundle\:
        resource: '../../src/AppBundle/*'
        # you can exclude directories or files
        # but if a service is unused, it's removed anyway
        exclude: '../../src/AppBundle/{Entity,Repository,Tests}'

    # controllers are imported separately to make sure they're public
    # and have a tag that allows actions to type-hint services
    AppBundle\Controller\:
        resource: '../../src/AppBundle/Controller'
        public: true
        tags: ['controller.service_arguments']

    # makes classes in src/AppBundle available to be used as services
    # this creates a service per class whose id is the fully-qualified class name
    CoursesBundle\Twig\:
        resource: '../../src/CoursesBundle/Twig'
        public: true

    # add more services, or override services that need manual wiring
    # AppBundle\Service\ExampleService:
    #     arguments:
    #         $someArgument: 'some_value'

    app.form.registration:
            class: UserBundle\Form\RegistrationFormType
            tags:
                - { name: form.type, alias: app_user_registration }

    user.controller.password:
        class: UserBundle\Controller\PasswordController
        arguments: ['@security.encoder_factory']

    user.controller.emailer:
        class: UserBundle\Controller\EmailerController
        arguments: ['@mailer', '@router', '@templating']

    user.pre_registration_listener:
        class: UserBundle\EventListener\PreRegistrationListener
        arguments: ["@doctrine.orm.entity_manager"]
        tags:
        - { name: kernel.event_listener, event: kernel.controller, method: onKernelRequest }

    CoursesBundle\Form\AssociationFormType:
        arguments: ["@router"]
        tags:
        - { name: form.type_extension, extended_type: Symfony\Component\Form\AbstractType }

    CoursesBundle\Form\TextareaormediaType:
        arguments: ["@router"]
        tags:
        - { name: form.type_extension, extended_type: Symfony\Component\Form\TextareaType }

    CoursesBundle\Service\FileUploader:
        public: true
        arguments:
            $targetDirectory: '%media_dossier%'


    # makes classes in src/FormationBundle available to be used as services
    # this creates a service per class whose id is the fully-qualified class name
    #FormationBundle\:
    #    resource: '../../src/FormationBundle/*'
    #    exclude: '../../src/FormationBundle/{Entity,Repository,Tests}'

    courses.datatransformer_mediacategorie:
        class: CoursesBundle\DataTransformer\MediaCategorieTransformer
        arguments: ['@doctrine.orm.entity_manager']

    CoursesBundle\Form\MediaFormType:
        arguments: ['@courses.datatransformer_mediacategorie']

    CoursesBundle\Form\MediaCategorieFormType:
        arguments: ['@courses.datatransformer_mediacategorie']

    formation.datatransformer_formationeleve:
        class: FormationBundle\DataTransformer\FormationeleveTransformer
        arguments: ['@doctrine.orm.entity_manager']

    formation.datatransformer_formation:
        class: FormationBundle\DataTransformer\FormationTransformer
        arguments: ['@doctrine.orm.entity_manager']

    FormationBundle\Form\CompterenduType:
        arguments: ['@formation.datatransformer_formationeleve']

    FormationBundle\Form\CompterenduformationType:
        arguments: ['@formation.datatransformer_formation']

    # Fixtures services
    FormationBundle\DataFixtures\ORM\LoadNiveau:
        tags: [doctrine.fixture.orm]
    FormationBundle\DataFixtures\ORM\LoadFormationType:
        tags: [doctrine.fixture.orm]
    UserBundle\DataFixtures\ORM\LoadGroupe:
        tags: [doctrine.fixture.orm]
    UserBundle\DataFixtures\ORM\LoadNationalite:
        tags: [doctrine.fixture.orm]
    UserBundle\DataFixtures\ORM\LoadPays:
        tags: [doctrine.fixture.orm]
    LangueBundle\DataFixtures\ORM\LoadLangue:
        tags: [doctrine.fixture.orm]

    # appel ajax sur session entre-temps fermée -> reroute sur login
    ajax.authentication.listener:
        class: UserBundle\EventListener\AjaxAuthenticationListener
        tags:
            - { name: kernel.event_listener, event: kernel.exception, method: onCoreException, priority: 1000 }