Skip to content

Commit 1643730

Browse files
committed
fix: allow to delay ticket email
fixed duplicated emails Change-Id: Id8c23e496bd8350af949c5cbc70fca5678fef5db
1 parent 2e83d76 commit 1643730

File tree

2 files changed

+37
-6
lines changed

2 files changed

+37
-6
lines changed

app/Jobs/SendAttendeeInvitationEmail.php

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
use Illuminate\Queue\SerializesModels;
2020
use Illuminate\Support\Facades\Log;
2121
use models\exceptions\EntityNotFoundException;
22+
use models\summit\ISummitAttendeeRepository;
2223
use models\summit\ISummitAttendeeTicketRepository;
24+
use models\summit\SummitAttendee;
2325
use models\summit\SummitAttendeeTicket;
2426

2527
/**
@@ -44,15 +46,22 @@ public function __construct(int $ticket_id)
4446
$this->ticket_id = $ticket_id;
4547
}
4648

49+
/**
50+
* @param ISummitAttendeeTicketRepository $ticketRepository
51+
* @param ISummitAttendeeRepository $attendeeRepository
52+
* @return void
53+
* @throws EntityNotFoundException
54+
*/
4755
public function handle
4856
(
49-
ISummitAttendeeTicketRepository $ticketRepository
57+
ISummitAttendeeTicketRepository $ticketRepository,
58+
ISummitAttendeeRepository $attendeeRepository
5059
)
5160
{
5261
Log::debug(sprintf( "SendAttendeeInvitationEmail::handle ticket_id %s", $this->ticket_id));
5362

5463
try {
55-
$ticket = $ticketRepository->getById($this->ticket_id);
64+
$ticket = $ticketRepository->getByIdRefreshed($this->ticket_id);
5665

5766
if (!$ticket instanceof SummitAttendeeTicket) {
5867

@@ -75,6 +84,28 @@ public function handle
7584

7685
$attendee = $ticket->getOwner();
7786

87+
$attendee = $attendeeRepository->getByIdRefreshed($attendee->getId());
88+
89+
if(!$attendee instanceof SummitAttendee){
90+
Log::warning
91+
(
92+
93+
"SendAttendeeInvitationEmail::handle attendee not found",
94+
);
95+
return;
96+
}
97+
98+
Log::debug
99+
(
100+
sprintf
101+
(
102+
"SendAttendeeInvitationEmail::handle sendInvitationEmail to attendee %s (%s) status %s",
103+
$attendee->getEmail(),
104+
$attendee->getId(),
105+
$attendee->getStatus()
106+
)
107+
);
108+
78109
$attendee->sendInvitationEmail($ticket);
79110
}
80111
catch (\Exception $ex){

app/Models/Foundation/Summit/Registration/Attendees/SummitAttendee.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -498,8 +498,8 @@ public function sendInvitationEmail
498498

499499
if ($this->isComplete()) {
500500
Log::debug(sprintf("SummitAttendee::sendInvitationEmail attendee %s is complete", $email));
501-
// adds a threshold of 10 minutes to avoid duplicates emails
502-
if (Cache::add(sprintf("%s_emit_ticket", $key), true, 10)) {
501+
// adds a threshold of 20 minutes to avoid duplicates emails
502+
if (Cache::add(sprintf("%s_emit_ticket", $key), true, now()->addMinutes(20))) {
503503
Log::debug(sprintf("SummitAttendee::sendInvitationEmail attendee %s ticket %s sending SummitAttendeeTicketEmail", $email, $ticket->getId()));
504504
SummitAttendeeTicketEmail::dispatch($ticket, $payload, $test_email_recipient);
505505
$ticket->getOwner()->markInvitationEmailSentDate();
@@ -515,8 +515,8 @@ public function sendInvitationEmail
515515
// they bought a ticket for themselves.
516516
if ($order->getOwnerEmail() !== $ticket->getOwnerEmail() || $overrideTicketOwnerIsSameAsOrderOwnerRule) {
517517
// no delay
518-
// adds a threshold of 10 minutes to avoid duplicates emails
519-
if (Cache::add(sprintf("%s_edit_ticket", $key), true, 10)) {
518+
// adds a threshold of 20 minutes to avoid duplicates emails
519+
if (Cache::add(sprintf("%s_edit_ticket", $key), true, now()->addMinutes(20))) {
520520
Log::debug(sprintf("SummitAttendee::sendInvitationEmail attendee %s ticket %s sending InviteAttendeeTicketEditionMail", $email, $ticket->getId()));
521521
InviteAttendeeTicketEditionMail::dispatch($ticket, $payload, $test_email_recipient);
522522
$ticket->getOwner()->markInvitationEmailSentDate();

0 commit comments

Comments
 (0)