333 lines
12 KiB
YAML
333 lines
12 KiB
YAML
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'
|