feat: multiple hotelcodes assignable to users
This commit is contained in:
1 parent
5a07d95837
commit
c15188c43c
16 files changed
+256
-67
No files matched your search
@@ -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',
|
||||
|
||||
Reference in new issue
Block a user