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

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

    App\Service\PublicHolidayService:
        arguments:
            $holidayUrl: '%env(HOLIDAY_URL)%'
            $excludedLabels: '%env(default::EXCLUDED_PUBLIC_HOLIDAYS)%'

    App\Service\Rtt\RttRecoveryComputationService:
        arguments:
            $rttStartDate: '%env(RTT_START_DATE)%'

    App\State\EmployeeRttSummaryProvider:
        arguments:
            $rttStartDate: '%env(RTT_START_DATE)%'

    App\State\EmployeeLeaveSummaryProvider:
        arguments:
            $dataStartDate: '%env(RTT_START_DATE)%'

    App\Service\Contracts\EmployeeContractPhaseResolver:
        arguments:
            $dataStartDate: '%env(RTT_START_DATE)%'

    App\Repository\Contract\AbsenceReadRepositoryInterface: '@App\Repository\AbsenceRepository'
    App\Repository\Contract\AuditLogReadRepositoryInterface: '@App\Repository\AuditLogRepository'
    App\Repository\Contract\EmployeeContractPeriodReadRepositoryInterface: '@App\Repository\EmployeeContractPeriodRepository'
    App\Repository\Contract\EmployeeScopedRepositoryInterface: '@App\Repository\EmployeeRepository'
    App\Repository\Contract\FormationReadRepositoryInterface: '@App\Repository\FormationRepository'
    App\Repository\Contract\WorkHourReadRepositoryInterface: '@App\Repository\WorkHourRepository'
    App\Service\Contracts\EmployeeContractPeriodManagerInterface: '@App\Service\Contracts\EmployeeContractPeriodManager'

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