Skip to content

Commit

Permalink
[Referrals] Send email when adhesion finished (#11526)
Browse files Browse the repository at this point in the history
Co-authored-by: Rémi <[email protected]>
  • Loading branch information
Remg and Rémi authored Feb 26, 2025
1 parent bbd688d commit 5dbbb08
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/Adherent/Referral/Notifier.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use App\Entity\Referral;
use App\Mailer\MailerService;
use App\Mailer\Message\Renaissance\Referral\ReferralAdhesionCreatedMessage;
use App\Mailer\Message\Renaissance\Referral\ReferralAdhesionFinishedMessage;
use App\Mailer\Message\Renaissance\Referral\ReferralReportedMessage;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;

Expand Down Expand Up @@ -56,6 +57,21 @@ public function sendReportMessage(Referral $referral): void
);
}

public function sendAdhesionFinishedMessage(Referral $referral): void
{
if (!$referral->referrer) {
return;
}

$this->transactionalMailer->sendMessage(
ReferralAdhesionFinishedMessage::create(
$referral->referrer->getEmailAddress(),
$referral->referrer->getFirstName(),
$referral->firstName
)
);
}

private function generateUrl(string $routeName, array $parameters = []): string
{
return $this->urlGenerator->generate($routeName, $parameters, UrlGeneratorInterface::ABSOLUTE_URL);
Expand Down
15 changes: 15 additions & 0 deletions src/Adherent/Referral/Subscriber/AdhesionSubscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

namespace App\Adherent\Referral\Subscriber;

use App\Adherent\Referral\Notifier;
use App\Adherent\Referral\StatusEnum;
use App\Adhesion\Events\NewCotisationEvent;
use App\Entity\Referral;
use App\Membership\Event\UserEvent;
use App\Membership\UserEvents;
use App\Repository\ReferralRepository;
Expand All @@ -15,19 +17,32 @@ class AdhesionSubscriber implements EventSubscriberInterface
public function __construct(
private readonly ReferralRepository $referralRepository,
private readonly EntityManagerInterface $em,
private readonly Notifier $notifier,
) {
}

public function updateReferrals(UserEvent $event): void
{
$adherent = $event->getAdherent();

/** @var Referral[] $referrals */
$referrals = $this->referralRepository->findBy(['emailAddress' => $adherent->getEmailAddress()]);

foreach ($referrals as $referral) {
if (
!\in_array($referral->status, [
StatusEnum::INVITATION_SENT,
StatusEnum::ACCOUNT_CREATED,
])
) {
continue;
}

if ($adherent->isRenaissanceAdherent()) {
$referral->status = StatusEnum::ADHESION_FINISHED;

$this->notifier->sendAdhesionFinishedMessage($referral);

continue;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace App\Mailer\Message\Renaissance\Referral;

use App\Mailer\Message\Renaissance\AbstractRenaissanceMessage;
use Ramsey\Uuid\Uuid;

class ReferralAdhesionFinishedMessage extends AbstractRenaissanceMessage
{
public static function create(
string $referrerFirstName,
string $referredEmail,
string $referredFirstName,
): self {
return new self(
Uuid::uuid4(),
$referredEmail,
$referredFirstName,
'Parrainage terminé',
[],
[
'referrer_first_name' => self::escape($referrerFirstName),
'referred_first_name' => self::escape($referredFirstName),
]
);
}
}

0 comments on commit 5dbbb08

Please sign in to comment.