imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services.yml }

parameters:
    locale: en

framework:
    secret: "%secret%"
    router:
        resource: "%kernel.root_dir%/config/routing.yml"
        strict_requirements: ~
    form: ~
    translator:
      fallback: "%locale%"
    csrf_protection: { enabled: false }
    validation:      { enable_annotations: true }
    serializer:      { enable_annotations: true }
    templating:
        engines: ['twig']
    default_locale:  "%locale%"
    trusted_hosts:   ~
    trusted_proxies: ~
    session:
        handler_id:  session.handler.native_file
        save_path:   "%kernel.root_dir%/../var/sessions/%kernel.environment%"
    fragments:       ~
    http_method_override: true

# Monolog Configuration
monolog:
    # Define new channel for errors occurred in api methods.
    channels: [ 'api_error', 'es_error', 'queue_command', 'mailer', 'payment_api' ]
    handlers:
        api_exceptions:
            type: rotating_file
            path: "%kernel.logs_dir%/%kernel.environment%_api_error.log"
            level: debug
            # Store log for 10 days.
            max_files: 10
            channels: [ 'api_error' ]
            formatter: 'app.formatter.trace'

        # Log all notifications received from elasticsearch.
        notification:
            type: rotating_file
            path: "%kernel.logs_dir%/%kernel.environment%_es_error.log"
            level: error
            # Store log for 10 days.
            max_files: 10
            channels: [ 'es_error' ]
            formatter: 'api.log_formatter.api_errors'

        # Log all notifications received from queue command.
        queue_command:
            type: rotating_file
            path: "%kernel.logs_dir%/%kernel.environment%_queue_command.log"
            level: error
            # Store log for 10 days.
            max_files: 10
            channels: [ 'queue_command' ]
            formatter: 'app.formatter.trace'

        payment_api:
          type: rotating_file
          path: "%kernel.logs_dir%/payment_api.log"
          level: info
          # Store log for 10 days.
          max_files: 10
          channels: [ 'payment_api' ]

# Twig Configuration
twig:
    debug:            "%kernel.debug%"
    strict_variables: "%kernel.debug%"
    form_themes:
        - 'bootstrap_3_layout.html.twig'

# Doctrine Configuration
doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
        options:
            1002: 'SET sql_mode=(SELECT REPLACE(@@sql_mode, "ONLY_FULL_GROUP_BY", ""))'
        schema_filter: '/^(?!internal_)/'

        types:
            datetimezone: 'AppBundle\Doctrine\DBAL\Types\DateTimeZoneType'
            theme_type: 'UserBundle\Doctrine\DBAL\Types\ThemeTypeEnumType'
            notification_type: 'UserBundle\Doctrine\DBAL\Types\NotificationTypeEnumType'
            payment_gateway: 'PaymentBundle\Doctrine\DBAL\Types\PaymentGatewayEnumType'
            payment_status: 'PaymentBundle\Doctrine\DBAL\Types\PaymentStatusEnumType'

    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        default_repository_class: AppBundle\Doctrine\ORM\BaseEntityRepository

# Swiftmailer Configuration
swiftmailer:
    transport: "%mailer_transport%"
    host:      "%mailer_host%"
    username:  "%mailer_user%"
    password:  "%mailer_password%"
    port:      "%mailer_port%"
    encryption: tls
    spool:      { type: memory }


fos_user:
    db_driver: orm
    firewall_name: main
    user_class: UserBundle\Entity\User

    use_authentication_listener: false

    service:
      user_manager: 'user.user_manager'

    from_email:
        address: 'not used'
        sender_name: 'not used'

    registration:
        form:
            type: UserBundle\Form\RegistrationType
            name: registration
        confirmation:
            # Disable standard FOSUserBundle registration confirmation.
            # In our application we use different registration logic.
            # see UserBundle\EventListener\UserSubscriber::onRegistrationSuccess
            enabled: true
            template:   UserBundle:Registration:email.txt.twig

knp_paginator:
    template:
        pagination: KnpPaginatorBundle:Pagination:twitter_bootstrap_v3_pagination.html.twig

lexik_jwt_authentication:
    private_key_path: '%jwt_private_key_path%'
    public_key_path:  '%jwt_public_key_path%'
    pass_phrase:      '%jwt_key_pass_phrase%'
    token_ttl:        '%jwt_token_ttl%'

gesdinet_jwt_refresh_token:
    ttl: 2592000
    ttl_update: true
    # If not set, refresh token will create default symfony user.
    user_provider: authentication_bundle.user_provider

miracode_stripe:
    secret_key: "%stripe_secret_key%"
        
nelmio_cors:
    paths:
        '^/(api|security)':
            allow_credentials: true
            allow_origin: [ '*' ]
            allow_headers: ['X-Custom-Auth', 'Accept', 'Authorization', 'Content-Type']
            allow_methods: [ 'POST', 'PUT', 'GET', 'DELETE' ]
            max_age: 3600

ivory_ck_editor:
    configs:
        default:
            toolbar: [ [ 'Cut','Copy','Paste','Undo','Redo' ], [ 'Bold','Italic','Underline','Strike','Subscript','Superscript','-','RemoveFormat' ], [ 'NumberedList','BulletedList','-','Outdent','Indent','-','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock' ], [ 'Styles','Format','Font','FontSize' ], [ 'TextColor','BGColor' ] ]

old_sound_rabbit_mq:
  connections:
    default:
      host:     '%rabbit_mq.host%'
      port:     '%rabbit_mq.port%'
      user:     '%rabbit_mq.username%'
      password: '%rabbit_mq.password%'
      vhost:    '/'
      lazy:     false
      connection_timeout: 3
      read_write_timeout: 3
      keepalive: false
  producers:
    documents_fetch:
      connection: 'default'
      exchange_options:
        name: 'documents_fetch'
        type: 'direct'
      service_alias: 'queue.producer.documents_fetch'

    documents_email:
      connection: 'default'
      exchange_options:
        name: 'documents_email'
        type: 'direct'
      service_alias: 'queue.producer.documents_email'

    notifications_fetch:
      connection: 'default'
      exchange_options:
        name: 'notifications_fetch'
        type: 'direct'
      service_alias: 'queue.producer.notifications_fetch'

    notifications_send:
      connection: 'default'
      exchange_options:
        name: 'notifications_send'
        type: 'direct'
      service_alias: 'queue.producer.notifications_send'

  consumers:
    documents_fetch:
      connection: 'default'
      exchange_options:
        name: 'documents_fetch'
        type: 'direct'
      queue_options:
        name: 'documents_fetch'
      callback: 'queue.consumer.documents_fetch'

    documents_email:
      connection: 'default'
      exchange_options:
        name: 'documents_email'
        type: 'direct'
      queue_options:
        name: 'documents_email'
      callback: 'queue.consumer.documents_email'

    notifications_fetch:
      connection: 'default'
      exchange_options:
        name: 'notifications_fetch'
        type: 'direct'
      queue_options:
        name: 'notifications_fetch'
      callback: 'queue.consumer.notifications_fetch'

    notifications_send:
      connection: 'default'
      exchange_options:
        name: 'notifications_send'
        type: 'direct'
      queue_options:
        name: 'notifications_send'
      callback: 'queue.consumer.notifications_send'
