# 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/configuration.html#application-related-configuration

parameters:
  locale: 'en'
  env: '%env(APP_ENV)%'
  fallbacks: ['%locale%', 'fr']
  secret: '%env(APP_SECRET)%'
  myd_version: '%env(MYDDLEWARE_VERSION)%'
  email_from: '%env(MAILER_FROM)%'
  mailer_from: '%env(MAILER_FROM)%'
  sms_provider: '%env(SMS_PROVIDER)%'
  twilio_account_sid: '%env(TWILIO_ACCOUNT_SID)%'
  twilio_auth_token: '%env(TWILIO_AUTH_TOKEN)%'
  twilio_phone_number: '%env(TWILIO_PHONE_NUMBER)%'
  brevo_api_key: '%env(default::BREVO_APIKEY)%'

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.
    public: false       # Allows optimizing the container by removing unused services; this also means
    # fetching services directly from the container via $container->get() won't work.
    # The best practice is to be explicit about your dependencies anyway.

  # 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,Entity,Migrations,Tests,Kernel.php,Solutions/lib,Custom,Premium/licence.php}'

  # controllers are imported separately to make sure services can be injected
  # as action arguments even if you don't extend any base controller class
  App\Controller\:
    resource: '../src/Controller'
    tags: ['controller.service_arguments']

  # add more service definitions when explicit configuration is needed
  # please note that last definitions always *replace* previous ones
  App\EventListener\RequestListener:
    autowire: true
    tags:
      - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }

  App\EventListener\ResponseListener:
    autowire: true
    tags:
      - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }

  App\EventListener\ExceptionListener:
    tags:
      - { name: kernel.event_listener, event: kernel.exception }

  App\EventListener\TwoFactorAuthListener:
    tags:
      - { name: kernel.event_subscriber }

  App\Service\TwoFactorAuthService:
    arguments:
      $mailer: '@mailer.mailer'
      $brevoApiKey: '%brevo_api_key%'

  App\DataFixtures\:
    resource: '../src/DataFixtures'
    tags: ['doctrine.fixture.orm']

  # Update JobManager to use RequestStack instead of SessionInterface
  App\Manager\JobManager:
    arguments:
      $requestStack: '@request_stack'

  # Register Twig extension for date compensation
  App\Twig\DateCompensationExtension:
    tags: ['twig.extension']
