# 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.html#use-parameters-for-application-configuration parameters: travel_info_base_url: '%env(APP_TRAVEL_INFO_BASE_URL)%' terms_and_conditions_url: '%env(APP_TERMS_AND_CONDITIONS_URL)%' path_to_keys: '%kernel.project_dir%/config/secret' bpn_debug: '%env(APP_BPN_DEBUG)%' default_booking_status: '%env(DEFAULT_BOOKING_STATUS)%' newsletter_confirmation_ttl_hours: '%env(int:APP_NEWSLETTER_CONFIRMATION_TTL_HOURS)%' travel_snapshot_retention_buffer_days: '%env(int:APP_TRAVEL_SNAPSHOT_RETENTION_BUFFER_DAYS)%' default_email_from: '%env(APP_DEFAULT_EMAIL_FROM)%' default_email_to: '%env(APP_DEFAULT_EMAIL_TO)%' accommodation_inquiry_email: '%env(ACCOMMODATION_INQUIRY_EMAIL)%' # MailJet list ids and their labels mailjet_lists: 10321569: 'E&P Newsletter' 10321382: 'Reisen-Alert Ahrntal' 10321383: 'Reisen-Alert Davos' 10321391: 'Reisen-Alert Familienreisen' 10321384: 'Reisen-Alert Arosa-Lenzerheide' 10321385: 'Reisen-Alert Les Deux Alpes' 10321386: 'Reisen-Alert Montafon' 10321387: 'Reisen-Alert Portes du Soleil' 10321388: 'Reisen-Alert Saalbach-Hinterglemm' 10538809: 'Reisen-Alert Scuol' 10321389: 'Reisen-Alert Stubaital' 10554990: 'Reisen-Alert Ski & Boarderweek' # Hausleitung hotel codes and their labels, assignable to users in /admin/user. # Mirrors the "Hausleitung {CODE}" CRM selections published by BusProNet. hotel_codes: SSL: 'SSL' SST: 'SST' MVK: 'MVK' ASB: 'ASB' LPJ: 'LPJ' DKS: 'DKS' DGS: 'DGS' DPW: 'DPW' DKI: 'DKI' DWW: 'DWW' PMV: 'PMV' ASG: 'ASG' ASC: 'ASC' SBW: 'SBW' UCH: 'UCH' SZO: 'SZO' PCJ: 'PCJ' KHH: 'KHH' SVS: 'SVS' SHM: 'SHM' AGR: 'AGR' # MailJet contact metadata names for name synchronization mailjet_contact_metadata_fields: firstName: 'vorname' lastName: 'nachname' # Body dimensions ranges for BodyDimensionsType and ParticipantValidator body_dimension_ranges: height_min: 145 height_max: 210 weight_min: 40 weight_max: 120 shoe_size_min: 35 shoe_size_max: 50 # Season data season_winter_from: '%env(APP_SEASON_WINTER_FROM)%' season_summer_from: '%env(APP_SEASON_SUMMER_FROM)%' # domain mapping for theme, gtm id and cmp url domain_config: ep-reisen.de: theme: base gtm_id: GTM-56LWRF cmp_url: https://consent.cookiefirst.com/sites/my.ep-reisen.de-28eabc35-7085-4d8f-b450-522bd1a5247c/consent.js ski-boarderweek.de: theme: sbw gtm_id: GTM-MS2C8CH cmp_url: https://consent.cookiefirst.com/sites/my.ski-boarderweek.de-d3641c34-8183-4b8d-b56e-c052e7a9223e/consent.js semesterende-skireisen.de: theme: ser gtm_id: GTM-MNKDKL9 cmp_url: https://consent.cookiefirst.com/sites/my.semesterende-skireisen.de-c9b3422d-eb62-4ce4-b8f7-91e9b509e26f/consent.js snowzone.net: theme: snz gtm_id: GTM-M96CKL cmp_url: https://consent.cookiefirst.com/sites/my.snowzone.net-8e6aea0c-7d93-42a0-a822-29fff2aa5613/consent.js 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. bind: $xmlExport: '@xml_export.storage' $xmlSource: '@xml_source.storage' $xmlDump: '@xml_dump.storage' $jsonExport: '@json_export.storage' $travelInfoBaseUrl: '%env(APP_TRAVEL_INFO_BASE_URL)%' $termsAndConditionsUrl: '%terms_and_conditions_url%' $logger: '@monolog.logger.core' $environment: '%kernel.environment%' # 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/' - '../src/Entity/' - '../src/Model' - '../src/Kernel.php' 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_ports: '%env(csv:APP_BPN_PORTS)%' debug: '%env(bool:APP_BPN_DEBUG)%' connection_timeout: '%env(int:APP_BPN_CONNECTION_TIMEOUT)%' stream_timeout: '%env(int:APP_BPN_STREAM_TIMEOUT)%' total_timeout: '%env(int:APP_BPN_TOTAL_TIMEOUT)%' App\Twig\AppRuntime: arguments: $intlExtension: '@twig.extension.intl' App\Command\GenerateKeysCommand: arguments: $path: '%path_to_keys%' App\Menu\AdminMenuBuilder: arguments: $factory: '@knp_menu.factory' tags: - name: knp_menu.menu_builder method: createMainMenu alias: admin_main App\Menu\GroupsMenuBuilder: arguments: $factory: '@knp_menu.factory' tags: - name: knp_menu.menu_builder method: createMainMenu alias: groups_main App\Service\BpnXmlSyncManager: arguments: $xmlSource: '@xml_source.storage' $xmlExport: '@xml_export.storage' $bpnCache: '@bpn.cache' App\Command\BpnXmlCacheInvalidateCommand: arguments: $xmlExport: '@xml_export.storage' $bpnCache: '@bpn.cache' $cache: '@cache.app' App\Security\Crypt: arguments: $path: '%path_to_keys%' App\Service\TravelSnapshotManager: arguments: $retentionBufferDays: '%travel_snapshot_retention_buffer_days%' App\Service\TravelDataProvider: arguments: $logger: '@monolog.logger.core' $preferRemote: '%env(bool:APP_TRAVEL_PREFER_REMOTE)%' $enableFallback: '%env(bool:APP_TRAVEL_ENABLE_FALLBACK)%' App\Service\ParticipantFormSupport: arguments: $bodyDimensionRanges: '%body_dimension_ranges%' App\Service\BookingEditDataLoader: arguments: $bpnCache: '@bpn.cache' App\BusProNet\XmlLoader\TravelLoader: arguments: $cache: '@bpn.cache' App\BusProNet\XmlLoader\HotelLoader: arguments: $cache: '@bpn.cache' App\BusProNet\XmlLoader\PickupLoader: arguments: $cache: '@bpn.cache' App\BusProNet\XmlLoader\InsuranceLoader: arguments: $cache: '@bpn.cache' App\Service\VoucherValidator: arguments: $cache: '@cache.app' $logger: '@monolog.logger.bpn' # Field Handlers with dependencies App\Form\Service\ParticipantInsuranceFieldHandler: ~ App\Form\Service\ParticipantBulkInsuranceFieldHandler: ~ App\Form\Service\ParticipantTransportationDiscountReplacementFieldHandler: ~ App\Form\Service\ParticipantPurchaseVoucherFieldHandler: ~ App\Form\Service\ParticipantPromoVoucherFieldHandler: ~ # Participant Field Handler Registry - most handlers instantiate dependencies directly, some use services App\Form\Service\ParticipantFieldHandlerRegistry: arguments: $handlers: # Simple handlers with no external dependencies - instantiated directly - 'App\Form\Service\ParticipantAssignedRoomFieldHandler' - 'App\Form\Service\ParticipantRemarksRoomFieldHandler' - 'App\Form\Service\ParticipantAdditionalServicesFieldHandler' - 'App\Form\Service\ParticipantCoursesFieldHandler' - 'App\Form\Service\ParticipantBoardFieldHandler' - 'App\Form\Service\ParticipantVegFieldHandler' - 'App\Form\Service\ParticipantRentalsFieldHandler' - 'App\Form\Service\ParticipantSkiPassFieldHandler' - 'App\Form\Service\ParticipantTransportationOutboundFieldHandler' - 'App\Form\Service\ParticipantTransportationInboundFieldHandler' - 'App\Form\Service\ParticipantPickupFieldHandler' - 'App\Form\Service\ParticipantDropOffFieldHandler' - 'App\Form\Service\ParticipantRentalInsuranceFieldHandler' - 'App\Form\Service\ParticipantLicensePlateFieldHandler' # Complex handlers with dependencies - use service references - '@App\Form\Service\ParticipantDateOfBirthFieldHandler' - '@App\Form\Service\ParticipantTransportationDiscountReplacementFieldHandler' - '@App\Form\Service\ParticipantBulkInsuranceFieldHandler' - '@App\Form\Service\ParticipantInsuranceFieldHandler' - '@App\Form\Service\ParticipantPurchaseVoucherFieldHandler' - '@App\Form\Service\ParticipantPromoVoucherFieldHandler' - '@App\Form\Service\ParticipantParkingFieldHandler' # Booking Status Rules App\BusProNet\Service\StatusRule\Selection1473StatusRule: ~ App\BusProNet\Service\StatusRule\ChaperonServiceStatusRule: ~ # Booking Status Rule Registry App\BusProNet\Service\BookingStatusRuleRegistry: arguments: $rules: - '@App\BusProNet\Service\StatusRule\Selection1473StatusRule' - '@App\BusProNet\Service\StatusRule\ChaperonServiceStatusRule' App\Service\CmsDataProvider: arguments: $httpClient: '@typo3.client' $apiKey: 'AbcAbc123'# dummy key, not yet implemented App\Logger\RequestIdProcessor: tags: - { name: monolog.processor } App\Service\NewsletterManager: arguments: $newsletterConfirmationTtlHours: '%newsletter_confirmation_ttl_hours%' $mailjetLists: '%mailjet_lists%' $defaultMailjetListId: '%env(default::MAILJET_DEFAULT_LIST_ID)%' App\Controller\Api\NewsletterSubscriptionController: arguments: $mailjetLists: '%mailjet_lists%' App\Controller\Webhook\MailjetNewsletterWebhookController: arguments: $mailjetLists: '%mailjet_lists%' App\Form\Admin\UserType: arguments: $hotelCodes: '%hotel_codes%' App\Service\DomainConfigProvider: arguments: $domainConfig: '%domain_config%' App\Email\Mailer: arguments: $defaults: from: '%default_email_from%' to: '%default_email_to%' App\Service\AccommodationBookingService: arguments: $accommodationEmail: '%accommodation_inquiry_email%' App\Service\AccommodationTermsUrlProvider: arguments: $config: AT: '%env(ACCOMMODATION_TERMS_AT)%' CH: '%env(ACCOMMODATION_TERMS_CH)%' IT: '%env(ACCOMMODATION_TERMS_IT)%' App\Service\GroupsPriceCalculator: arguments: $config: runningCostsEur: '%env(float:APP_RUNNING_COSTS_FACTOR_EUR)%' runningCostsChf: '%env(float:APP_RUNNING_COSTS_FACTOR_CHF)%' undersubscription30Eur: '%env(float:APP_UNDERSUBSCRIPTION_SURCHARGE_30_EUR)%' undersubscription30Chf: '%env(float:APP_UNDERSUBSCRIPTION_SURCHARGE_30_CHF)%' undersubscription40Eur: '%env(float:APP_UNDERSUBSCRIPTION_SURCHARGE_40_EUR)%' undersubscription40Chf: '%env(float:APP_UNDERSUBSCRIPTION_SURCHARGE_40_CHF)%' App\Validator\Constraints\ParticipantValidator: arguments: $bodyDimensionRanges: '%body_dimension_ranges%' App\BpnConnect\AbstractApiClient: abstract: true arguments: $baseUrl: '%env(default::BPN_CONNECT_BASE_URL)%' $apiKey: '%env(default::BPN_CONNECT_API_KEY)%' App\BpnConnect\ContingentsClient: parent: App\BpnConnect\AbstractApiClient App\Service\MailjetApiClient: arguments: $apiKey: '%env(default::MAILJET_API_KEY)%' $apiSecret: '%env(default::MAILJET_API_SECRET)%' $apiBaseUrl: '%env(default::MAILJET_API_BASE_URL)%' $defaultListId: '%env(default::MAILJET_DEFAULT_LIST_ID)%' $contactMetadataFields: '%mailjet_contact_metadata_fields%'