Skip to content

Commit

Permalink
[FEATURE] Added waitlist notification filter to backend module
Browse files Browse the repository at this point in the history
Refs #1204
  • Loading branch information
derhansen committed Mar 10, 2024
1 parent 3a4541e commit a64d37d
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 16 deletions.
12 changes: 12 additions & 0 deletions Classes/Controller/AdministrationController.php
Original file line number Diff line number Diff line change
Expand Up @@ -386,6 +386,18 @@ public function getNotificationRecipients(): array
self::LANG_FILE . 'administration.notify.recipients.' . CustomNotification::RECIPIENTS_UNCONFIRMED
),
],
[
'value' => CustomNotification::RECIPIENTS_WAITLIST_CONFIRMED,
'label' => $this->getLanguageService()->sL(
self::LANG_FILE . 'administration.notify.recipients.' . CustomNotification::RECIPIENTS_WAITLIST_CONFIRMED
),
],
[
'value' => CustomNotification::RECIPIENTS_WAITLIST_UNCONFIRMED,
'label' => $this->getLanguageService()->sL(
self::LANG_FILE . 'administration.notify.recipients.' . CustomNotification::RECIPIENTS_WAITLIST_UNCONFIRMED
),
],
];
}

Expand Down
2 changes: 2 additions & 0 deletions Classes/Domain/Model/Dto/CustomNotification.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ class CustomNotification
public const RECIPIENTS_ALL = 0;
public const RECIPIENTS_CONFIRMED = 1;
public const RECIPIENTS_UNCONFIRMED = 2;
public const RECIPIENTS_WAITLIST_CONFIRMED = 3;
public const RECIPIENTS_WAITLIST_UNCONFIRMED = 4;

protected string $template = '';
protected int $recipients = self::RECIPIENTS_CONFIRMED;
Expand Down
22 changes: 18 additions & 4 deletions Classes/Domain/Repository/RegistrationRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,24 @@ public function findNotificationRegistrations(
$constraints[] = $query->equals('event', $event);
$constraints[] = $query->equals('ignoreNotifications', false);

if ($customNotification->getRecipients() === CustomNotification::RECIPIENTS_CONFIRMED) {
$constraints[] = $query->equals('confirmed', true);
} elseif ($customNotification->getRecipients() === CustomNotification::RECIPIENTS_UNCONFIRMED) {
$constraints[] = $query->equals('confirmed', false);
switch ($customNotification->getRecipients()) {
case CustomNotification::RECIPIENTS_CONFIRMED:
$constraints[] = $query->equals('confirmed', true);
$constraints[] = $query->equals('waitlist', false);
break;
case CustomNotification::RECIPIENTS_UNCONFIRMED:
$constraints[] = $query->equals('confirmed', false);
$constraints[] = $query->equals('waitlist', false);
break;
case CustomNotification::RECIPIENTS_WAITLIST_CONFIRMED:
$constraints[] = $query->equals('confirmed', true);
$constraints[] = $query->equals('waitlist', true);
break;
case CustomNotification::RECIPIENTS_WAITLIST_UNCONFIRMED:
$constraints[] = $query->equals('confirmed', false);
$constraints[] = $query->equals('waitlist', true);
break;
default:
}

if (!is_array($findConstraints) || count($findConstraints) === 0) {
Expand Down
6 changes: 6 additions & 0 deletions Resources/Private/Language/locallang_be.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,12 @@
<trans-unit id="administration.notify.recipients.2">
<source>Unconfirmed participants</source>
</trans-unit>
<trans-unit id="administration.notify.recipients.3">
<source>Confirmed waitlist participants</source>
</trans-unit>
<trans-unit id="administration.notify.recipients.4">
<source>Unconfirmed waitlist participants</source>
</trans-unit>
<trans-unit id="administration.notify.label.template">
<source>Template:</source>
</trans-unit>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
"tx_sfeventmgt_domain_model_registration"
,"uid","hidden","event","confirmed","confirmation_until","paid","notes"
,1,0,0,0,1402740000,0,"Confirmation until: 14.06.2014 10:00 AM / unconfirmed"
,2,0,0,1,1402740000,0,"Confirmation until: 14.06.2014 10:00 AM / confirmed"
,3,0,0,0,1402743600,0,"Confirmation until: 14.06.2014 11:00 AM / unconfirmed"
,4,0,0,0,1402743600,0,"Confirmation until: 14.06.2014 11:00 AM / unconfirmed"
,5,1,0,0,1402743600,0,"Confirmation until: 14.06.2014 11:00 AM / unconfirmed / hidden"
tx_sfeventmgt_domain_model_registration,,,,,,,,
,uid,hidden,event,confirmed,confirmation_until,paid,notes,waitlist
,1,0,50,0,1402740000,0,Confirmation until: 14.06.2014 10:00 AM / unconfirmed,0
,2,0,50,1,1402740000,0,Confirmation until: 14.06.2014 10:00 AM / confirmed,0
,3,0,50,0,1402743600,0,Confirmation until: 14.06.2014 11:00 AM / unconfirmed,0
,4,0,50,0,1402743600,0,Confirmation until: 14.06.2014 11:00 AM / unconfirmed,0
,5,1,50,0,1402743600,0,Confirmation until: 14.06.2014 11:00 AM / unconfirmed / hidden,0
,6,0,50,0,1402740000,0,Confirmation until: 14.06.2014 10:00 AM / unconfirmed,1
,7,0,50,1,1402740000,0,Confirmation until: 14.06.2014 10:00 AM / confirmed,1
18 changes: 13 additions & 5 deletions Tests/Functional/Repository/RegistrationRepositoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,22 @@ public static function confirmedAndUnconfirmedDataProvider(): array
return [
'all registrations' => [
0,
3,
6,
],
'confirmed' => [
1,
2,
1,
],
'unconfirmed' => [
2,
3,
],
'confirmed waitlist' => [
3,
1,
],
'unconfirmed waitlist' => [
4,
1,
],
];
Expand All @@ -83,9 +91,9 @@ public static function confirmedAndUnconfirmedDataProvider(): array
public function findNotificationRegistrationsReturnsConfirmedAndUnconfirmed($recipientSetting, $expected): void
{
$event = $this->getMockBuilder(Event::class)->getMock();
$event->expects(self::once())->method('getUid')->willReturn(20);
$customNotification = $this->getMockBuilder(CustomNotification::class)->getMock();
$customNotification->expects(self::any())->method('getRecipients')->willReturn($recipientSetting);
$event->expects(self::once())->method('getUid')->willReturn(50);
$customNotification = new CustomNotification();
$customNotification->setRecipients($recipientSetting);
$registrations = $this->registrationRepository->findNotificationRegistrations($event, $customNotification, []);
self::assertSame($expected, $registrations->count());
}
Expand Down

0 comments on commit a64d37d

Please sign in to comment.