You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
7.4 KiB
191 lines
7.4 KiB
from django.core.mail import EmailMessage
|
|
from django.utils import timezone
|
|
from django.urls import reverse
|
|
|
|
class TournamentEmailService:
|
|
@staticmethod
|
|
def send_registration_confirmation(request, tournament, team_registration):
|
|
waiting_list_position = tournament.get_waiting_list_position()
|
|
tournament_details_str = tournament.build_tournament_details_str()
|
|
name_str = tournament.build_name_details_str()
|
|
|
|
email_subject = TournamentEmailService._build_email_subject(
|
|
tournament_details_str,
|
|
name_str,
|
|
waiting_list_position
|
|
)
|
|
|
|
email_body = TournamentEmailService._build_email_body(
|
|
request,
|
|
tournament,
|
|
team_registration,
|
|
tournament_details_str,
|
|
name_str,
|
|
waiting_list_position
|
|
)
|
|
|
|
email = EmailMessage(
|
|
subject=email_subject,
|
|
body=email_body,
|
|
to=[request.user.email]
|
|
)
|
|
email.send()
|
|
|
|
@staticmethod
|
|
def _build_email_subject(tournament_details_str, name_str, waiting_list_position):
|
|
base_subject = f"Confirmation d'inscription au tournoi {tournament_details_str} {name_str}"
|
|
if waiting_list_position >= 0:
|
|
base_subject = f"En liste d'attente du tournoi {tournament_details_str} {name_str}"
|
|
return base_subject
|
|
|
|
@staticmethod
|
|
def _build_email_body(request, tournament, team_registration, tournament_details_str,
|
|
name_str, waiting_list_position):
|
|
inscription_date = timezone.now().strftime("%d/%m/%Y à %H:%M")
|
|
team_members = [player.name() for player in team_registration.playerregistration_set.all()]
|
|
team_members_str = " et ".join(team_members)
|
|
|
|
body_parts = []
|
|
body_parts.append("Bonjour,\n")
|
|
|
|
if waiting_list_position >= 0:
|
|
body_parts.append(f"Votre inscription en liste d'attente du tournoi {tournament_details_str} {name_str} est confirmée.")
|
|
else:
|
|
body_parts.append(f"Votre inscription au tournoi {tournament_details_str} {name_str} est confirmée.")
|
|
|
|
body_parts.extend([
|
|
f"\nDate d'inscription: {inscription_date}",
|
|
f"\nÉquipe inscrite: {team_members_str}",
|
|
f"\nLe tournoi commencera le {tournament.start_date.strftime('%d/%m/%Y')} au club {tournament.event.club.name}",
|
|
f"\nVoir les informations sur {request.build_absolute_uri(f'/tournament/{tournament.id}/')}",
|
|
"\nPour toute question, veuillez contacter votre juge-arbitre. Si vous n'êtes pas à l'origine de cette inscription, merci de le contacter rapidement.",
|
|
f"\n{tournament.event.creator.full_name()}\n{tournament.event.creator.email}",
|
|
"\nCeci est un e-mail automatique, veuillez ne pas y répondre.",
|
|
"\nCordialement,\n\nPadel Club"
|
|
])
|
|
|
|
return "\n".join(body_parts)
|
|
|
|
@staticmethod
|
|
def send_unregistration_confirmation(captain, tournament, other_player):
|
|
tournament_details_str = tournament.build_tournament_details_str()
|
|
name_str = tournament.build_name_details_str()
|
|
|
|
email_subject = f"Confirmation de désistement du tournoi {tournament_details_str} {name_str}"
|
|
email_body = TournamentEmailService._build_unregistration_email_body(
|
|
tournament,
|
|
captain,
|
|
tournament_details_str,
|
|
name_str,
|
|
other_player
|
|
)
|
|
|
|
email = EmailMessage(
|
|
subject=email_subject,
|
|
body=email_body,
|
|
to=[captain.email]
|
|
)
|
|
email.send()
|
|
|
|
if other_player.email is not None:
|
|
email_body = TournamentEmailService._build_unregistration_email_body(
|
|
tournament,
|
|
other_player,
|
|
tournament_details_str,
|
|
name_str,
|
|
captain
|
|
)
|
|
|
|
email = EmailMessage(
|
|
subject=email_subject,
|
|
body=email_body,
|
|
to=[other_player.email]
|
|
)
|
|
email.send()
|
|
|
|
@staticmethod
|
|
def send_out_of_waiting_list_confirmation(captain, tournament, other_player):
|
|
tournament_details_str = tournament.build_tournament_details_str()
|
|
name_str = tournament.build_name_details_str()
|
|
|
|
email_subject = f"Participation au tournoi {tournament_details_str} {name_str}"
|
|
email_body = TournamentEmailService._buil_out_of_waiting_list_email_body(
|
|
tournament,
|
|
captain,
|
|
tournament_details_str,
|
|
name_str,
|
|
other_player
|
|
)
|
|
|
|
email = EmailMessage(
|
|
subject=email_subject,
|
|
body=email_body,
|
|
to=[captain.email]
|
|
)
|
|
email.send()
|
|
|
|
if other_player.email is not None:
|
|
email_body = TournamentEmailService._buil_out_of_waiting_list_email_body(
|
|
tournament,
|
|
other_player,
|
|
tournament_details_str,
|
|
name_str,
|
|
captain
|
|
)
|
|
|
|
email = EmailMessage(
|
|
subject=email_subject,
|
|
body=email_body,
|
|
to=[other_player.email]
|
|
)
|
|
email.send()
|
|
|
|
|
|
@staticmethod
|
|
def _build_unregistration_email_body(tournament, captain, tournament_details_str, name_str, other_player):
|
|
body_parts = [
|
|
"Bonjour,\n",
|
|
f"Votre inscription au tournoi {tournament_details_str} {name_str}, prévu le {tournament.start_date.strftime('%d/%m/%Y')} au club {tournament.event.club.name} a été annulée"
|
|
]
|
|
|
|
if other_player is not None:
|
|
body_parts.append(
|
|
f"\n\nVous étiez inscrit avec {other_player.name()}, n'oubliez pas de prévenir votre partenaire."
|
|
)
|
|
|
|
body_parts.extend([
|
|
"\n\nPour toute question, veuillez contacter votre juge-arbitre. "
|
|
"Si vous n'êtes pas à l'origine de cette inscription, merci de le contacter rapidement.",
|
|
f"\n{tournament.event.creator.full_name()}\n{tournament.event.creator.email}",
|
|
"\n\nCeci est un e-mail automatique, veuillez ne pas y répondre."
|
|
])
|
|
|
|
return "".join(body_parts)
|
|
|
|
@staticmethod
|
|
def _buil_out_of_waiting_list_email_body(tournament, captain, tournament_details_str, name_str, other_player):
|
|
body_parts = [
|
|
"Bonjour,\n",
|
|
f"Suite au désistement d'une paire, vous êtes maintenant inscrit au tournoi {tournament_details_str} {name_str}, prévu le {tournament.start_date.strftime('%d/%m/%Y')} au club {tournament.event.club.name}"
|
|
]
|
|
|
|
# Make it an absolute URL by adding the domain
|
|
absolute_url = f"https://xlr.alwaysdata.net/tournament/{tournament.id}/info" # Replace with your domain
|
|
|
|
if other_player is not None:
|
|
body_parts.append(
|
|
f"\nVoici le partenaire indiqué dans l'inscription : {other_player.name()}, n'oubliez pas de le prévenir."
|
|
)
|
|
|
|
|
|
body_parts.append(
|
|
"\nSi vous n'êtes plus disponible pour participer à ce tournoi, cliquez sur ce lien ou contactez rapidement le juge-arbitre."
|
|
f"\n{absolute_url}"
|
|
)
|
|
|
|
body_parts.extend([
|
|
f"\n\n{tournament.event.creator.full_name()}\n{tournament.event.creator.email}",
|
|
"\n\nCeci est un e-mail automatique, veuillez ne pas y répondre."
|
|
])
|
|
|
|
return "".join(body_parts)
|
|
|