Skip to content

Commit

Permalink
fix: allow to delay ticket email
Browse files Browse the repository at this point in the history
fixed duplicated emails

Change-Id: Id8c23e496bd8350af949c5cbc70fca5678fef5db
  • Loading branch information
smarcet committed Dec 19, 2023
1 parent 2e83d76 commit 1643730
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 6 deletions.
35 changes: 33 additions & 2 deletions app/Jobs/SendAttendeeInvitationEmail.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
use models\exceptions\EntityNotFoundException;
use models\summit\ISummitAttendeeRepository;
use models\summit\ISummitAttendeeTicketRepository;
use models\summit\SummitAttendee;
use models\summit\SummitAttendeeTicket;

/**
Expand All @@ -44,15 +46,22 @@ public function __construct(int $ticket_id)
$this->ticket_id = $ticket_id;
}

/**
* @param ISummitAttendeeTicketRepository $ticketRepository
* @param ISummitAttendeeRepository $attendeeRepository
* @return void
* @throws EntityNotFoundException
*/
public function handle
(
ISummitAttendeeTicketRepository $ticketRepository
ISummitAttendeeTicketRepository $ticketRepository,
ISummitAttendeeRepository $attendeeRepository
)
{
Log::debug(sprintf( "SendAttendeeInvitationEmail::handle ticket_id %s", $this->ticket_id));

try {
$ticket = $ticketRepository->getById($this->ticket_id);
$ticket = $ticketRepository->getByIdRefreshed($this->ticket_id);

if (!$ticket instanceof SummitAttendeeTicket) {

Expand All @@ -75,6 +84,28 @@ public function handle

$attendee = $ticket->getOwner();

$attendee = $attendeeRepository->getByIdRefreshed($attendee->getId());

if(!$attendee instanceof SummitAttendee){
Log::warning
(

"SendAttendeeInvitationEmail::handle attendee not found",
);
return;
}

Log::debug
(
sprintf
(
"SendAttendeeInvitationEmail::handle sendInvitationEmail to attendee %s (%s) status %s",
$attendee->getEmail(),
$attendee->getId(),
$attendee->getStatus()
)
);

$attendee->sendInvitationEmail($ticket);
}
catch (\Exception $ex){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -498,8 +498,8 @@ public function sendInvitationEmail

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

0 comments on commit 1643730

Please sign in to comment.