feat: multiple hotelcodes assignable to users

This commit is contained in:
Björn Fromme committed 2025-01-08 10:07:19 +01:00
1 parent 5a07d95837
commit c15188c43c
16 files changed
+256 -67

No files matched your search

+23 -11
View File
@@ -38,24 +38,30 @@ class FeedbackReminderService
continue;
}
// Get hotel base code to find hotel manager later
$hotelBaseCode = substr($hotel->getCode(), 0, 3);
// Get hotel code to find hotel manager later
$hotelCode = $hotel->getCode();
if (false === array_key_exists($hotelBaseCode, $sortedFeedbacks)) {
$sortedFeedbacks[$hotelBaseCode] = [];
if (false === array_key_exists($hotelCode, $sortedFeedbacks)) {
$sortedFeedbacks[$hotelCode] = [];
}
// Sort feedback by hotel base code
$sortedFeedbacks[$hotelBaseCode][] = $disposition;
$sortedFeedbacks[$hotelCode][] = $disposition;
}
// Determine hotel managers to notify
$hotelBaseCodes = array_keys($sortedFeedbacks);
// find hotel managers by hotel codes starting or ending with base code
$hotelCodes = array_keys($sortedFeedbacks);
$hotelBaseCodes = [];
foreach ($hotelCodes as $hotelCode) {
$hotelBaseCodes[] = substr($hotelCode, 0, 3);
$hotelBaseCodes[] = substr($hotelCode, -3, 3);
}
/** @var User[] $hotelManagers */
$hotelManagers = $this->userRepository->findBy([
'hotelCode' => $hotelBaseCodes,
]);
$hotelManagers = $this
->userRepository
->getUsersByRoleAndHotelCode('ROLE_HOTEL_MANAGER', $hotelBaseCodes)
;
if (0 === count($hotelManagers)) {
return 'No feedback reminders to be sent to hotel managers';
@@ -65,8 +71,14 @@ class FeedbackReminderService
if (true === $manager->isMuteNotifications()) {
continue;
}
$feedbackKeys = array_filter(array_keys($sortedFeedbacks), function (string $key) use ($manager) {
return $manager->hasHotelCodeMatch($key);
});
$feedbacksForManager = array_filter($sortedFeedbacks, function ($key) use ($feedbackKeys) {
return in_array($key, $feedbackKeys);
}, ARRAY_FILTER_USE_KEY);
$this->mailer->createAndSendEmail([
'feedbacks' => $sortedFeedbacks[$manager->getHotelCode()],
'feedbacks' => $feedbacksForManager,
], [
'to' => $manager->getEmail(),
'subject' => 'Reminder: Offene Feedbacks',