From 7e02a2dd2a1fca493245632d2b4b31f9f733b52a Mon Sep 17 00:00:00 2001 From: Yohann Date: Fri, 13 Dec 2019 19:50:32 +0100 Subject: [PATCH] =?UTF-8?q?Mails=20group=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server_files/classes/Team.php | 14 +++++++++++ server_files/controllers/probleme.php | 10 ++++++++ .../controllers/suivi_correspondances.php | 25 +++++++++++-------- server_files/views/equipe.php | 4 +++ server_files/views/probleme.php | 5 ++++ server_files/views/suivi_correspondances.php | 1 + 6 files changed, 49 insertions(+), 10 deletions(-) diff --git a/server_files/classes/Team.php b/server_files/classes/Team.php index bf610d8..12ede92 100644 --- a/server_files/classes/Team.php +++ b/server_files/classes/Team.php @@ -237,4 +237,18 @@ class Team return $docs; } + + public function getAllEmails() + { + $emails = []; + if ($this->getEncadrantId() != null) + $emails[] = User::fromId($this->getEncadrantId())->getEmail(); + + foreach ($this->getParticipants() as $participantId) { + if ($participantId != 0) + $emails[] = User::fromId($participantId)->getEmail(); + } + + return $emails; + } } diff --git a/server_files/controllers/probleme.php b/server_files/controllers/probleme.php index 42085a2..59130b8 100644 --- a/server_files/controllers/probleme.php +++ b/server_files/controllers/probleme.php @@ -13,4 +13,14 @@ $error_message = null; $teams = Team::getAllTeams($problem); +$validated_emails = []; +$not_validated_emails = []; + +foreach ($teams as $team) { + if ($team->getValidationStatus() == ValidationStatus::VALIDATED) + $validated_emails = array_merge($validated_emails, $team->getAllEmails()); + else + $not_validated_emails = array_merge($not_validated_emails, $team->getAllEmails()); +} + require_once "server_files/views/probleme.php"; diff --git a/server_files/controllers/suivi_correspondances.php b/server_files/controllers/suivi_correspondances.php index e76005d..fe77bb6 100644 --- a/server_files/controllers/suivi_correspondances.php +++ b/server_files/controllers/suivi_correspondances.php @@ -54,15 +54,16 @@ for ($problem = 1; $problem <= 4; ++$problem) $videos[] = Video::getVideos(Reason::SOLUTION, $problem); $waiting_teams = []; +$waiting_emails = []; switch (Phase::getCurrentPhase()) { case Phase::PHASE1: - $req = $DB->query("SELECT DISTINCT `teams`.`id` FROM `teams` WHERE `validation_status` = '" . ValidationStatus::getName(ValidationStatus::VALIDATED) . "'" + $req = $DB->query("SELECT DISTINCT `teams`.`id`, `teams`.`problem`, `teams`.`trigram` FROM `teams` WHERE `validation_status` = '" . ValidationStatus::getName(ValidationStatus::VALIDATED) . "'" . " AND `id` NOT IN (SELECT DISTINCT `team` FROM `videos` WHERE `reason` = 'SOLUTION' AND `validation` = " . Video::ACCEPTED . ")" - . " AND `year` = $YEAR;"); + . " AND `year` = $YEAR ORDER BY `problem`, `trigram`;"); break; case Phase::PHASE2: - $req = $DB->query("SELECT DISTINCT `teams`.`id` FROM `teams`" + $req = $DB->query("SELECT DISTINCT `teams`.`id`, `teams`.`problem`, `teams`.`trigram` FROM `teams`" . " WHERE `id` NOT IN (SELECT `q1`.`from` FROM `questions` AS `q1`" . " JOIN `questions` AS `q2` ON `q2`.`from` = `q1`.`from` AND `q2`.`number` = 2" . " JOIN `questions` AS `q3` ON `q3`.`from` = `q1`.`from` AND `q3`.`number` = 3" @@ -77,10 +78,10 @@ switch (Phase::getCurrentPhase()) { . " OR `q5`.`question` IS NOT NULL" . " OR `q6`.`question` IS NOT NULL))" . " AND `validation_status` = '" . ValidationStatus::getName(ValidationStatus::VALIDATED) . "'" - . " AND `year` = $YEAR;"); + . " AND `year` = $YEAR ORDER BY `problem`, `trigram`;"); break; case Phase::PHASE3: - $req = $DB->query("SELECT DISTINCT `teams`.`id` FROM `teams`" + $req = $DB->query("SELECT DISTINCT `teams`.`id`, `teams`.`problem`, `teams`.`trigram` FROM `teams`" . " WHERE `id` NOT IN (SELECT `q1`.`to` FROM `questions` AS `q1`" . " JOIN `questions` AS `q2` ON `q2`.`to` = `q1`.`to` AND `q2`.`number` = 2" . " JOIN `questions` AS `q3` ON `q3`.`to` = `q1`.`to` AND `q3`.`number` = 3" @@ -95,19 +96,23 @@ switch (Phase::getCurrentPhase()) { . " OR `q5`.`answer` IS NOT NULL" . " OR `q6`.`answer` IS NOT NULL))" . " AND `validation_status` = '" . ValidationStatus::getName(ValidationStatus::VALIDATED) . "'" - . " AND `year` = $YEAR;"); + . " AND `year` = $YEAR ORDER BY `problem`, `trigram`;"); break; case Phase::PHASE4: - $req = $DB->query("SELECT DISTINCT `teams`.`id` FROM `teams` WHERE `validation_status` = '" . ValidationStatus::getName(ValidationStatus::VALIDATED) . "'" + $req = $DB->query("SELECT DISTINCT `teams`.`id`, `teams`.`problem`, `teams`.`trigram` FROM `teams` WHERE `validation_status` = '" . ValidationStatus::getName(ValidationStatus::VALIDATED) . "'" . " AND (`id` NOT IN (SELECT DISTINCT `team` FROM `videos` WHERE `reason` = 'ANSWER1' AND `validation` = " . Video::ACCEPTED . ")" . " OR `id` NOT IN (SELECT DISTINCT `team` FROM `videos` WHERE `reason` = 'ANSWER2' AND `validation` = " . Video::ACCEPTED . "))" - . " AND `year` = $YEAR;"); + . " AND `year` = $YEAR ORDER BY `problem`, `trigram`;"); break; } if (isset($req)) { - while (($data = $req->fetch()) !== false) - $waiting_teams[] = Team::fromId($data["id"]); + $waiting_emails = []; + while (($data = $req->fetch()) !== false) { + $team = Team::fromId($data["id"]); + $waiting_teams[] = $team; + $waiting_emails = array_merge($waiting_emails, $team->getAllEmails()); + } } require_once "server_files/views/suivi_correspondances.php"; \ No newline at end of file diff --git a/server_files/views/equipe.php b/server_files/views/equipe.php index c4e5f92..bd21aea 100644 --- a/server_files/views/equipe.php +++ b/server_files/views/equipe.php @@ -53,6 +53,10 @@ Autorise Animath à diffuser les vidéos : allowPublish() ? "oui" : "non" ?> +
+ subject=Correspondances de Jeunes Mathématicien·ne·s" target="_blank">Envoyer un mail à toute l'équipe +
+ getValidationStatus() == ValidationStatus::VALIDATED) { ?>
diff --git a/server_files/views/probleme.php b/server_files/views/probleme.php index 256a109..6cea739 100644 --- a/server_files/views/probleme.php +++ b/server_files/views/probleme.php @@ -10,6 +10,11 @@

Équipes inscrites 0 ? "pour ce problème" : "sans problème choisi" ?> :

+
+ subject=Correspondances de Jeunes Mathématicien·ne·s" target="_blank">Envoyer un mail à toutes les équipes validées
+ subject=Correspondances de Jeunes Mathématicien·ne·s" target="_blank">Envoyer un mail à toutes les équipes non validées +
+ diff --git a/server_files/views/suivi_correspondances.php b/server_files/views/suivi_correspondances.php index 9fe9fa3..0e73663 100644 --- a/server_files/views/suivi_correspondances.php +++ b/server_files/views/suivi_correspondances.php @@ -20,6 +20,7 @@ if (sizeof($waiting_teams) > 0) { ?> + subject=Correspondances de Jeunes Mathématicien·ne·s" target="_blank">Leur envoyer un mail