parameters: bpn_crm_id_admin: '%env(int:APP_BPN_CRM_ID_ADMIN)%' bpn_crm_id_manager: '%env(int:APP_BPN_CRM_ID_MANAGER)%' bpn_crm_id_teamer: '%env(int:APP_BPN_CRM_ID_TEAMER)%' bpn_default_hotel_code: '%env(default::APP_BPN_DEFAULT_HOTEL_CODE)%' # BusPro CRM selection id => hotel code. A person holding a selected attribute from this # list is a house manager for that house. Matched by id and not by the "Hausleitung XXX" # label, so renaming a selection in BusPro cannot silently grant or revoke a house. # The commented entries are BusPro selections whose code is not a house in the "houses" # parameter below: granting them would let someone in who then sees no assignments and # no dispositions at all. Uncomment one once its house exists. The reverse gap is fine - # not every house has a selection. bpn_crm_house_manager_ids: 1299: 'SSL' 1300: 'SST' 1301: 'MVK' # 1302: 'ASB' 1303: 'LPJ' 1304: 'DKS' 1305: 'DGS' 1306: 'DPW' 1307: 'DKI' 1308: 'DWW' 1309: 'PMV' # 1352: 'ASG' 1371: 'ASC' 1373: 'PCJ' 1374: 'SBW' # 1375: 'UCH' # 1376: 'SZO' 1377: 'KHH' 1459: 'SVS' 1461: 'SHM' 1462: 'AGR' default_email_from: '%env(APP_DEFAULT_EMAIL_FROM)%' default_email_to: '%env(APP_DEFAULT_EMAIL_TO)%' teamer_inactive_period: '-2 years' # The contract upload period, counted from the creation of the disposition. This is the # single definition: the reminder mail, the "Honorarvertrag fällig" flag on the teamer # dashboard, the admin list of overdue contracts and the wording of the mails all read it, # so they cannot mark the same disposition due on three different days. contract_upload_deadline_days: 5 # The invoice upload period, counted from the end of the assignment. The teamer is # reminded the day after the assignment ends and again on the last day of this period. invoice_upload_deadline_days: 14 # Messenger transport the mails of a teamer mailing are queued on. An X-Bus-Transport # header wins over the routing in messenger.yaml (see SendersLocator::getSenders), # so this is what keeps a mailing off the shared queue - and what has to be switched # back to "sync" further down, or a mailing would need a running worker to arrive # in dev and test while every other mail is sent right away. mailing_bus_transport: 'mailing' # Dates (MM-DD) on which teamers must re-confirm their personal data. personal_data_check_deadlines: - '04-01' - '10-01' # The season window as MM-DD. It wraps the turn of the year and is named after the # calendar year it starts in ("Saison 2024/25"). The teamer info modal buckets a # teamer's dispositions by the season their assignment starts in; one whose # assignment starts outside this window is counted as "außerhalb der Saison". season_start: '11-01' season_end: '04-01' # Houses, hotel code: name. The name is used both as a label and to match # destination.hotel, the code to match destination.hotelCode. houses: AGR: 'Rotbach' ASC: 'Christiler' DGS: 'Spinabad' DKI: 'Schwendi' DKS: 'Schweizerhaus' DPW: 'Waldschlössli' DWW: 'Weißfluh' KHH: 'Heuberghaus' L2A: 'Les Deux Alpes' LPJ: 'Jenatsch' MVK: 'Klein Tirol' PCJ: 'Jolimont' PMV: 'Victoria' SBW: 'Val Thorens' SHM: 'Mitterlengau' SRR: 'Ranalt' SSL: 'Lederer' SST: 'Steinachhof' SVS: 'Silvana' services: _defaults: autowire: true autoconfigure: true bind: $tempDir: '%kernel.project_dir%/temp' # Application audit channel, not a MyE&P one: this is what feeds the # log table via App\Logging\DatabaseHandler. Unbinding a service from # it drops its records from that table. $logger: '@monolog.logger.audit' $houses: '%houses%' $xmlExport: '@xml_export.storage' $xmlDump: '@xml_dump.storage' $teamerInactivePeriod: '%teamer_inactive_period%' $contractUploadDeadlineDays: '%contract_upload_deadline_days%' $invoiceUploadDeadlineDays: '%invoice_upload_deadline_days%' # Only the path enters the container - the file itself is parsed on demand by # App\Config\EmailTextCatalog, since its contents matter on few requests. $emailTextsFile: '%kernel.project_dir%/config/email_texts.yaml' $mailingBusTransport: '%mailing_bus_transport%' $seasonStart: '%season_start%' $seasonEnd: '%season_end%' # Tagged by interface rather than listed by hand: order between collectors is # irrelevant, so the only thing an explicit list could add here is the chance to # forget one, which would silently stop a metric being recorded. _instanceof: App\Service\Statistics\Collector\StatisticsCollectorInterface: tags: ['app.statistics_collector'] App\: resource: '../src/' exclude: - '../src/DependencyInjection/' - '../src/Entity/' - '../src/Kernel.php' Liip\ImagineBundle\Imagine\Cache\Resolver\FormatExtensionResolver: arguments: - '@liip_imagine.cache.resolver.default' - '@liip_imagine.filter.configuration' tags: - name: liip_imagine.cache.resolver resolver: format_extension App\Command\BpnImportCommand: arguments: $connection: '@doctrine.dbal.default_connection' App\Command\DbAnonymizeCommand: arguments: $environment: '%kernel.environment%' App\Service\Common\DatabaseAnonymizer: arguments: $connection: '@doctrine.dbal.default_connection' App\BusProNet\ApiClient: arguments: $logger: '@monolog.logger.bpn' $options: bpn_username: '%env(APP_BPN_USER)%' bpn_password: '%env(APP_BPN_PASSWORD)%' bpn_api_ip: '%env(APP_BPN_IP)%' bpn_api_port: '%env(APP_BPN_PORT)%' debug: '%env(bool:APP_BPN_DEBUG)%' App\BusProNet\ResponseParser: arguments: $options: bpn_crm_id_admin: '%bpn_crm_id_admin%' bpn_crm_id_manager: '%bpn_crm_id_manager%' bpn_crm_id_teamer: '%bpn_crm_id_teamer%' bpn_crm_house_manager_ids: '%bpn_crm_house_manager_ids%' bpn_default_hotel_code: '%bpn_default_hotel_code%' App\Twig\AppRuntime: arguments: $intlExtension: '@twig.extension.intl' $environment: '%kernel.environment%' App\Logging\InjectUserProcessor: arguments: - '@security.helper' tags: - name: monolog.processor App\Logging\RequestInfoProcessor: arguments: - '@request_stack' tags: - name: monolog.processor App\Menu\MenuBuilder: arguments: $factory: '@knp_menu.factory' tags: - name: knp_menu.menu_builder method: createMainMenu alias: default_main - name: knp_menu.menu_builder method: createTeamerMenu alias: default_teamer App\Menu\AdminMenuBuilder: arguments: $factory: '@knp_menu.factory' tags: - name: knp_menu.menu_builder method: createMainMenu alias: admin_main - name: knp_menu.menu_builder method: createTeamerMenu alias: admin_teamer App\Menu\ManagerMenuBuilder: arguments: $factory: '@knp_menu.factory' tags: - name: knp_menu.menu_builder method: createMainMenu alias: manager_main - name: knp_menu.menu_builder method: createTeamerMenu alias: manager_teamer App\Menu\TeamerMenuBuilder: arguments: $factory: '@knp_menu.factory' tags: - name: knp_menu.menu_builder method: createMainMenu alias: teamer_main App\Menu\HouseManagerMenuBuilder: arguments: $factory: '@knp_menu.factory' tags: - name: knp_menu.menu_builder method: createMainMenu alias: house_manager_main App\Service\Upload\UploadHandler: arguments: $orphanageManager: '@oneup_uploader.orphanage_manager' $projectDir: '%kernel.project_dir%' $environment: '%kernel.environment%' $uploadReplacementFile: '%env(default::UPLOAD_REPLACEMENT_FILE)%' App\Service\Pdf\Sanitizer: arguments: $binGs: '%env(BIN_GS)%' $binConvert: '%env(BIN_CONVERT)%' App\EventListener\UploadSessionListener: tags: - name: kernel.event_listener event: oneup_uploader.post_upload method: onUpload App\EventListener\UploadSessionValidationListener: tags: - name: kernel.event_listener event: oneup_uploader.validation method: onValidate App\EventListener\DatevEmailSubscriber: arguments: $datevEmailRecipient: '%env(DATEV_EMAIL_RECIPIENT)%' $datevEmailSender: '%env(DATEV_EMAIL_SENDER)%' App\EventListener\StatisticsChangeSetListener: arguments: $collectors: !tagged_iterator app.statistics_collector App\RequiredTeamerCheck\RequiredTeamerCheckRegistry: arguments: # Presentation order only. Each check must point at a page that clears # that check alone, so a teamer can always work through them whatever # the order — never make correctness depend on this list. $checks: - '@App\RequiredTeamerCheck\DriverLicenseRequiredCheck' - '@App\RequiredTeamerCheck\FinancialDataRequiredCheck' - '@App\RequiredTeamerCheck\PersonalDataVerificationRequiredCheck' - '@App\RequiredTeamerCheck\MealPreferenceRequiredCheck' App\RequiredTeamerCheck\PersonalDataVerificationRequiredCheck: arguments: $deadlines: !service class: App\RequiredTeamerCheck\RecurringDeadlines arguments: $deadlines: '%personal_data_check_deadlines%' app.upload_namer: class: App\Service\Upload\UploadNamer public: true App\Service\Pdf\ContractRenderer: arguments: $options: project_dir: '%kernel.project_dir%' App\Service\Pdf\InvoiceApprover: arguments: $options: project_dir: '%kernel.project_dir%' App\Service\Pdf\InvoiceRenderer: arguments: $options: project_dir: '%kernel.project_dir%' App\Email\Mailer: arguments: $defaults: from: '%default_email_from%' to: '%default_email_to%' App\Security\OAuth2\MyEpClient: arguments: $options: myep_oauth2_client_id: '%env(MYEP_OAUTH2_CLIENT_ID)%' myep_oauth2_client_secret: '%env(MYEP_OAUTH2_CLIENT_SECRET)%' myep_oauth2_url_authorize: '%env(MYEP_OAUTH2_URL_AUTHORIZE)%' myep_oauth2_url_access_token: '%env(MYEP_OAUTH2_URL_ACCESS_TOKEN)%' myep_oauth2_url_resource_owner_details: '%env(MYEP_OAUTH2_URL_RESOURCE_OWNER_DETAILS)%' myep_oauth2_scopes: '%env(csv:MYEP_OAUTH2_SCOPES)%' # The mails of a mailing are sent right away here, like every other mail, instead of # waiting for a worker on the dedicated queue. The mailer transport is deliberately not # switched: a mailing still goes out over MAILING_MAILER_DSN, so the path being exercised # locally is the one that runs in production. when@dev: parameters: mailing_bus_transport: 'sync' when@test: parameters: mailing_bus_transport: 'sync'