Validation paiements

This commit is contained in:
Yohann D'ANELLO 2020-01-14 12:21:18 +01:00
parent 4b6d6f24ea
commit b86675ba98
6 changed files with 198 additions and 9 deletions

View File

@ -16,6 +16,12 @@ if ($user === null)
$team = Team::fromId($user->getTeamId()); $team = Team::fromId($user->getTeamId());
if ($team != null) {
$documents = $user->getAllDocuments($team->getTournamentId());
$payment = $user->getPayment();
$tournament = Tournament::fromId($team->getTournamentId());
}
$has_error = false; $has_error = false;
$error_message = null; $error_message = null;
@ -41,6 +47,17 @@ if (isset($_POST["attribute_team"])) {
} }
} }
if (isset($_POST["validate_payment"])) {
$validate_payment = new ValidatePayment($_POST);
try {
$validate_payment->makeVerifications();
$validate_payment->validate();
} catch (AssertionError $e) {
$has_error = true;
$error_message = $e->getMessage();
}
}
if (isset($_POST["view_as"]) && $_SESSION["role"] == Role::ADMIN) { if (isset($_POST["view_as"]) && $_SESSION["role"] == Role::ADMIN) {
if (!isset($_SESSION["admin"])) if (!isset($_SESSION["admin"]))
$_SESSION["admin"] = $_SESSION["user_id"]; $_SESSION["admin"] = $_SESSION["user_id"];
@ -109,7 +126,39 @@ class AttributeTeam
} }
} }
if ($team != null) class ValidatePayment
$documents = $user->getAllDocuments($team->getTournamentId()); {
private $accept, $reject;
private $message;
private $payment;
public function __construct($data)
{
global $user;
foreach ($data as $key => $value)
$this->$key = $value;
$this->payment = $user->getPayment();
}
public function makeVerifications()
{
ensure($this->payment->getValidationStatus() == ValidationStatus::WAITING, "Le paiement n'était pas en attente.");
ensure(isset($this->accept) ^ isset($this->reject), "La sélection de validation est invalide.");
}
public function validate()
{
global $user, $team, $tournament;
if ($this->accept)
$this->payment->setValidationStatus(ValidationStatus::VALIDATED);
else
$this->payment->setValidationStatus(ValidationStatus::NOT_READY);
Mailer::sendValidatePayment($user, $team, $tournament, $this->payment, $this->message);
}
}
require_once "server_files/views/informations.php"; require_once "server_files/views/informations.php";

View File

@ -11,7 +11,8 @@ if (!isset($_SESSION["user_id"]))
$user = $_SESSION["user"]; $user = $_SESSION["user"];
$team = $_SESSION["team"]; $team = $_SESSION["team"];
$tournament = Tournament::fromId($team->getTournamentId()); if ($team != null)
$tournament = Tournament::fromId($team->getTournamentId());
$has_error = false; $has_error = false;
$error_message = null; $error_message = null;
@ -208,8 +209,10 @@ class SendDocument
} }
} }
$documents = $user->getAllDocuments($team->getTournamentId()); if ($team != null) {
if ($team->isSelectedForFinal()) $documents = $user->getAllDocuments($team->getTournamentId());
if ($team->isSelectedForFinal())
$documents_final = $user->getAllDocuments($FINAL->getId()); $documents_final = $user->getAllDocuments($FINAL->getId());
}
require_once "server_files/views/mon_compte.php"; require_once "server_files/views/mon_compte.php";

View File

@ -127,4 +127,47 @@ class Mailer
self::sendMail($organizer->getEmail(), "Ajout d'un organisateur pour le tournoi " . $tournament->getName() . " TFJM² $YEAR", $content); self::sendMail($organizer->getEmail(), "Ajout d'un organisateur pour le tournoi " . $tournament->getName() . " TFJM² $YEAR", $content);
} }
public static function requestPaymentValidation(User $user, Team $team, Tournament $tournament, Payment $payment)
{
global $YEAR, $URL_BASE;
$content = self::getTemplate("request_payment_validation");
$content = preg_replace("#{USER_FIRST_NAME}#", $user->getFirstName(), $content);
$content = preg_replace("#{USER_SURNAME}#", $user->getSurname(), $content);
$content = preg_replace("#{TEAM_NAME}#", $team->getName(), $content);
$content = preg_replace("#{TRIGRAM}#", $team->getTrigram(), $content);
$content = preg_replace("#{TOURNAMENT_NAME}#", $tournament->getName(), $content);
$content = preg_replace("#{AMOUNT}#", $payment->getAmount(), $content);
$content = preg_replace("#{PAYMENT_METHOD}#", PaymentMethod::getTranslatedName($payment->getMethod()), $content);
if ($payment->getMethod() == PaymentMethod::SCHOLARSHIP)
$content = preg_replace("#{PAYMENT_INFOS}#", "<a href=\"$URL_BASE/file/" . $payment->getTransactionInfos() . "\">Voir la notification de bourse</a>", $content);
else
$content = preg_replace("#{PAYMENT_INFOS}#", $payment->getTransactionInfos(), $content);
self::sendMail($user->getEmail(), "Demande de validation de paiement pour le tournoi " . $tournament->getName() . " TFJM² $YEAR", $content);
}
public static function sendValidatePayment(User $user, Team $team, Tournament $tournament, Payment $payment, $message)
{
global $YEAR, $URL_BASE;
$content = self::getTemplate($payment->getValidationStatus() == ValidationStatus::VALIDATED ? "validate_payment" : "unvalidate_payment");
$content = preg_replace("#{FIRST_NAME}#", $user->getFirstName(), $content);
$content = preg_replace("#{SURNAME}#", $user->getSurname(), $content);
$content = preg_replace("#{TEAM_NAME}#", $team->getName(), $content);
$content = preg_replace("#{TRIGRAM}#", $team->getTrigram(), $content);
$content = preg_replace("#{TOURNAMENT_NAME}#", $tournament->getName(), $content);
$content = preg_replace("#{AMOUNT}#", $payment->getAmount(), $content);
$content = preg_replace("#{PAYMENT_METHOD}#", PaymentMethod::getTranslatedName($payment->getMethod()), $content);
if ($payment->getMethod() == PaymentMethod::SCHOLARSHIP)
$content = preg_replace("#{PAYMENT_INFOS}#", "<a href=\"$URL_BASE/file/" . $payment->getTransactionInfos() . "\">Voir la notification de bourse</a>", $content);
else
$content = preg_replace("#{PAYMENT_INFOS}#", $payment->getTransactionInfos(), $content);
if (isset($message) && strlen($message) > 0) {
$content = preg_replace("#{MESSAGE}#", "L'équipe d'organisation vous transmet les informations suivantes :<br /><br />" . $message . "<br />", $content);
}
self::sendMail($user->getEmail(), "Paiement pour le tournoi " . $tournament->getName() . " TFJM² $YEAR", $content);
}
} }

View File

@ -0,0 +1,24 @@
<!DOCTYPE html>
<!--suppress HtmlUnknownTarget -->
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Non-validation du paiement pour le TFJM² {YEAR}</title>
</head>
<body>
Bonjour {FIRST_NAME} {SURNAME},<br />
<br />
Votre paiement pour le TFJM² {YEAR} a malheureusement été rejeté. Pour rappel, vous aviez fourni ces informations :<br /><br />
<strong>Équipe :</strong> {TEAM_NAME} ({TRIGRAM})<br />
<strong>Tournoi :</strong> {TOURNAMENT_NAME}<br />
<strong>Moyen de paiement :</strong> {PAYMENT_METHOD}<br />
<strong>Montant :</strong> {AMOUNT} €<br />
<strong>Informations sur le paiement :</strong> {PAYMENT_INFOS}<br />
<br />
{MESSAGE}
<br />
Cordialement,
<br />
Le comité national d'organisation du TFJM<sup>2</sup>
</body>
</html>

View File

@ -0,0 +1,24 @@
<!DOCTYPE html>
<!--suppress HtmlUnknownTarget -->
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Validation du paiement pour le TFJM² {YEAR}</title>
</head>
<body>
Bonjour {FIRST_NAME} {SURNAME},<br />
<br />
Votre paiement pour le TFJM² {YEAR} a bien été validé. Pour rappel, vous aviez fourni ces informations :<br /><br />
<strong>Équipe :</strong> {TEAM_NAME} ({TRIGRAM})<br />
<strong>Tournoi :</strong> {TOURNAMENT_NAME}<br />
<strong>Moyen de paiement :</strong> {PAYMENT_METHOD}<br />
<strong>Montant :</strong> {AMOUNT} €<br />
<strong>Informations sur le paiement :</strong> {PAYMENT_INFOS}<br />
<br />
{MESSAGE}
<br />
Cordialement,
<br />
Le comité national d'organisation du TFJM<sup>2</sup>
</body>
</html>

View File

@ -14,9 +14,12 @@ if (!$has_error) {
<div class="alert alert-success"> <div class="alert alert-success">
La personne a bien rejoint l'équipe ! La personne a bien rejoint l'équipe !
</div> </div>
<?php } <?php } elseif (isset($validate_payment)) { ?>
} <div class="alert alert-success">
?> La paiement a bien été validé / rejeté ! Un mail a été transmis au participant.
</div>
<?php } ?>
<?php } ?>
<div class="alert alert-info"> <div class="alert alert-info">
<strong>Rôle :</strong> <?= Role::getTranslatedName($user->getRole()) ?> <strong>Rôle :</strong> <?= Role::getTranslatedName($user->getRole()) ?>
@ -101,6 +104,49 @@ if (!$has_error) {
Adresse e-mail du responsable légal : <a href="mailto:<?= $user->getResponsibleEmail() ?>"><?= $user->getResponsibleEmail() ?></a> Adresse e-mail du responsable légal : <a href="mailto:<?= $user->getResponsibleEmail() ?>"><?= $user->getResponsibleEmail() ?></a>
</div> </div>
<div class="alert alert-info">
<strong>Récapitulatif du paiement :</strong><br /><br />
<?php if ($payment->getValidationStatus() == ValidationStatus::NOT_READY) { ?>
<div class="alert alert-danger">
Cette personne n'a pas encore payé sa participation.
</div>
<?php } else { ?>
<strong>Tournoi :</strong> <?= $tournament->getName() ?><br />
<strong>Montant :</strong> <?= $payment->getAmount() ?> €<br />
<strong>Moyen de paiement :</strong> <?= PaymentMethod::getTranslatedName($payment->getMethod()) ?><br />
<?php if ($payment->getMethod() == PaymentMethod::SCHOLARSHIP) { ?>
<strong>Notification de bourse :</strong> <a href="/file/<?= $payment->getTransactionInfos() ?>">Télécharger</a><br /><br />
<?php } else { ?>
<strong>Informations sur le paiement :</strong> <?= $payment->getTransactionInfos() ?><br /><br />
<?php }
if ($payment->getValidationStatus() == ValidationStatus::WAITING) { ?>
<div class="alert alert-warning">
Le paiement n'a pas encore été validé.
<form method="POST">
<input type="hidden" name="validate_payment" value=""/>
<div class="form-group row">
<label for="message">Message à adresser au participant :</label>
<textarea class="form-control" id="message" name="message"></textarea>
</div>
<input class="btn btn-primary btn-lg" style="width: 49%;"
type="submit" name="accept" value="Valider le paiement"/>
<input class="btn btn-light btn-lg" style="width: 49%;" type="submit" name="reject"
value="Rejeter le paiement"/>
</form>
</div>
<?php } else { ?>
<div class="alert alert-success">
Le paiement a été validé.
</div>
<?php } ?>
<?php } ?>
</div>
<?php } elseif ($user->getDescription() != "") { ?> <?php } elseif ($user->getDescription() != "") { ?>
<div class="alert alert-info"> <div class="alert alert-info">
Description : <?= $user->getDescription() ?> Description : <?= $user->getDescription() ?>