# yaml-language-server: $schema=../vendor/symfony/dependency-injection/Loader/schema/services.schema.json

# This file is the entry point to configure your own services.
# Files in the packages/ subdirectory configure your dependencies.
# See also https://symfony.com/doc/current/service_container/import.html

# 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:
    task_document_upload_dir: '%kernel.project_dir%/var/uploads/documents'
    avatar_upload_dir: '%kernel.project_dir%/var/uploads/avatars'
    absence_justification_upload_dir: '%kernel.project_dir%/var/uploads/justificatifs'
    # Reference collective agreement for the absence module's legal defaults.
    # To confirm against the company's APE/NAF code (a CCN is not derived from activity alone).
    app.absence.convention: 'Syntec (IDCC 1486)'

imports:
    - { resource: version.yaml }

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/'

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

    App\EventListener\TaskDocumentListener:
        arguments:
            $uploadDir: '%task_document_upload_dir%'
        tags:
            - { name: doctrine.orm.entity_listener }

    App\State\TaskDocumentProcessor:
        arguments:
            $uploadDir: '%task_document_upload_dir%'

    App\Controller\TaskDocumentDownloadController:
        arguments:
            $uploadDir: '%task_document_upload_dir%'

    App\Mcp\Tool\Task\AddTaskDocumentTool:
        arguments:
            $uploadDir: '%task_document_upload_dir%'

    App\Mcp\Tool\Task\UpdateTaskDocumentTool:
        arguments:
            $uploadDir: '%task_document_upload_dir%'

    App\Controller\UserAvatarController:
        arguments:
            $avatarUploadDir: '%avatar_upload_dir%'

    App\Controller\Absence\AbsenceJustificationUploadController:
        arguments:
            $uploadDir: '%absence_justification_upload_dir%'

    App\Controller\Absence\AbsenceJustificationDownloadController:
        arguments:
            $uploadDir: '%absence_justification_upload_dir%'

    App\Service\Share\FileSource: '@App\Service\Share\SmbFileSource'

    App\Module\Core\Domain\Repository\UserRepositoryInterface: '@App\Module\Core\Infrastructure\Doctrine\DoctrineUserRepository'

    App\Module\Core\Domain\Repository\PermissionRepositoryInterface: '@App\Module\Core\Infrastructure\Doctrine\DoctrinePermissionRepository'

    App\Module\Core\Domain\Repository\RoleRepositoryInterface: '@App\Module\Core\Infrastructure\Doctrine\DoctrineRoleRepository'

    App\Shared\Domain\Contract\NotifierInterface: '@App\Module\Core\Infrastructure\Notifier'
