From 9b4f100bb19856f6e37d7e4b807d02c56f460440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Fri, 1 Dec 2023 14:09:49 +0100 Subject: [PATCH] feat: make admin users hotel managers with configurable hotel code --- .env | 7 +++++-- config/services.yaml | 4 ++-- src/BusProNet/ResponseParser.php | 13 +++++++++++-- src/Entity/User.php | 4 ++-- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/.env b/.env index 3c06a38..0cb2b6d 100644 --- a/.env +++ b/.env @@ -46,10 +46,13 @@ APP_BPN_USER= APP_BPN_PASSWORD= APP_BPN_ENDPOINT= +# This hotel code will be assigned to admin users together with ROLE_HOTEL_MANAGER +# in dev and staging environments for testing purposes +APP_BPN_DEFAULT_HOTEL_CODE= APP_BPN_CRM_ID_ADMIN=1292 APP_BPN_CRM_ID_MANAGER=1293 -APP_BPN_CRM_ID_HOUSE_MANAGER=9999 APP_BPN_CRM_ID_TEAMER=1070 APP_DEFAULT_EMAIL_FROM=info@ep-reisen.de -APP_DEFAULT_EMAIL_TO=info@ep-reisen.de \ No newline at end of file +APP_DEFAULT_EMAIL_TO=info@ep-reisen.de + diff --git a/config/services.yaml b/config/services.yaml index 06dccf8..3c94fd0 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -5,8 +5,8 @@ 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_house_manager: '%env(int:APP_BPN_CRM_ID_HOUSE_MANAGER)%' bpn_crm_id_teamer: '%env(int:APP_BPN_CRM_ID_TEAMER)%' + bpn_default_hotel_code: '%env(default::APP_BPN_DEFAULT_HOTEL_CODE)%' default_email_from: '%env(APP_DEFAULT_EMAIL_FROM)%' default_email_to: '%env(APP_DEFAULT_EMAIL_TO)%' @@ -51,8 +51,8 @@ services: $options: bpn_crm_id_admin: '%bpn_crm_id_admin%' bpn_crm_id_manager: '%bpn_crm_id_manager%' - bpn_crm_id_house_manager: '%bpn_crm_id_house_manager%' bpn_crm_id_teamer: '%bpn_crm_id_teamer%' + bpn_default_hotel_code: '%bpn_default_hotel_code%' App\Twig\AppRuntime: arguments: diff --git a/src/BusProNet/ResponseParser.php b/src/BusProNet/ResponseParser.php index 4ea33b3..dd88ebb 100644 --- a/src/BusProNet/ResponseParser.php +++ b/src/BusProNet/ResponseParser.php @@ -171,6 +171,12 @@ class ResponseParser $groups[] = $group; } + // Apply additional role and hotel code for testing purposes when provided + if ($isAdmin && null !== $this->config['bpn_default_hotel_code']) { + $isHouseManager = true; + $hotelCode = $this->config['bpn_default_hotel_code']; + } + $response = new CrmAttributesResponse(); $response ->setAttributeGroups($groups) @@ -252,11 +258,14 @@ class ResponseParser private function resolveOptions(array $options): array { $optionsResolver = new OptionsResolver(); - $optionsResolver->setRequired(['bpn_crm_id_admin', 'bpn_crm_id_manager', 'bpn_crm_id_house_manager', 'bpn_crm_id_teamer']); + $optionsResolver->setRequired(['bpn_crm_id_admin', 'bpn_crm_id_manager', 'bpn_crm_id_teamer']); + $optionsResolver->setDefaults([ + 'bpn_default_hotel_code' => null, + ]); $optionsResolver->setAllowedTypes('bpn_crm_id_admin', 'int'); $optionsResolver->setAllowedTypes('bpn_crm_id_manager', 'int'); - $optionsResolver->setAllowedTypes('bpn_crm_id_house_manager', 'int'); $optionsResolver->setAllowedTypes('bpn_crm_id_teamer', 'int'); + $optionsResolver->setAllowedTypes('bpn_default_hotel_code', ['string', 'null']); return $optionsResolver->resolve($options); } diff --git a/src/Entity/User.php b/src/Entity/User.php index 8b6ebed..3868d22 100644 --- a/src/Entity/User.php +++ b/src/Entity/User.php @@ -42,10 +42,10 @@ class User implements UserInterface, TimestampableEntityInterface #[ORM\Column(nullable: true)] private ?\DateTimeImmutable $lastLoginAt = null; - #[ORM\OneToOne(inversedBy: 'user', cascade: ['persist', 'remove'])] + #[ORM\OneToOne(inversedBy: 'user', cascade: ['all'])] private ?Teamer $teamer = null; - #[ORM\OneToOne(inversedBy: 'user', cascade: ['persist', 'remove'])] + #[ORM\OneToOne(inversedBy: 'user', cascade: ['all'])] private ?Contact $contact = null; #[ORM\Column(length: 32, nullable: true)]