Comus Party 1.0.0
Application web de mini-jeux en ligne
Chargement...
Recherche...
Aucune correspondance
ControllerDashboard.class.php
Aller à la documentation de ce fichier.
1<?php
9
10namespace ComusParty\Controllers;
11
12use ComusParty\App\MessageHandler;
13use ComusParty\Models\PlayerDAO;
14use ComusParty\Models\ReportDAO;
15use ComusParty\Models\SuggestionDAO;
16use DateMalformedStringException;
17use Twig\Environment;
18use Twig\Error\LoaderError;
19use Twig\Error\RuntimeError;
20use Twig\Error\SyntaxError;
21use Twig\Loader\FilesystemLoader;
22
28{
34 public function __construct(FilesystemLoader $loader, Environment $twig)
35 {
36 parent::__construct($loader, $twig);
37 }
38
47 public function showDashboard()
48 {
49 $suggestsManager = new SuggestionDAO($this->getPdo());
50 $suggestions = $suggestsManager->findAllWaiting();
51
52 $reportsManager = new ReportDAO($this->getPdo());
53 $reports = $reportsManager->findAllWaiting();
54
55 $template = $this->getTwig()->load('moderator/dashboard.twig');
56 echo $template->render(array(
57 "suggestions" => $suggestions,
58 "reports" => $reports
59 ));
60 }
61
67 public function denySuggestion(int $id)
68 {
69 $suggestsManager = new SuggestionDAO($this->getPdo());
70 if ($suggestsManager->deny($id)) {
71 echo MessageHandler::sendJsonMessage("La suggestion a bien été refusée");
72 } else {
73 MessageHandler::sendJsonCustomException(500, "Une erreur est survenue lors du refus de la suggestion");
74 }
75 }
76
82 public function acceptSuggestion(int $id)
83 {
84 $suggestsManager = new SuggestionDAO($this->getPdo());
85 if ($suggestsManager->accept($id)) {
86 echo MessageHandler::sendJsonMessage("La suggestion a bien été acceptée");
87 } else {
88 MessageHandler::sendJsonCustomException(500, "Une erreur est survenue lors de l'acceptation de la suggestion");
89 }
90 exit;
91 }
92
99 public function getSuggestionInfo(?int $id)
100 {
101 $suggestsManager = new SuggestionDAO($this->getPdo());
102 $suggestion = $suggestsManager->findById($id);
103 echo MessageHandler::sendJsonMessage("Informations récupérées", [
104 "suggestion" => [
105 "id" => $suggestion->getId(),
106 "object" => $suggestion->getObject()->name,
107 "content" => $suggestion->getContent(),
108 "author_username" => $suggestion->getAuthorUsername(),
109 ],
110 ]);
111 exit;
112 }
113
118 public function getAllSuggestionsWaiting(): void
119 {
120 $suggestsManager = new SuggestionDAO($this->getPdo());
121 $suggestions = $suggestsManager->findAllWaiting();
122 if (empty($suggestions)) {
123 echo MessageHandler::sendJsonMessage("Aucune suggestion en attente", [
124 "suggestions" => null,
125 ]);
126 exit;
127 }
128 echo MessageHandler::sendJsonMessage("Suggestions récupérées", [
129 "suggestions" => array_map(fn($suggestion) => [
130 "id" => $suggestion->getId(),
131 "object" => $suggestion->getObject()->name,
132 "content" => $suggestion->getContent(),
133 "author_username" => $suggestion->getAuthorUsername(),
134 "created_at" => $suggestion->getCreatedAt()->getTimestamp() * 1000,
135 ], $suggestions),
136 ]);
137 exit;
138 }
139
145 public function getReportInformations(?int $id)
146 {
147 $reportsManager = new ReportDAO($this->getPdo());
148 $playerManager = new PlayerDAO($this->getPdo());
149 $report = $reportsManager->findById($id);
150 echo MessageHandler::sendJsonMessage("Informations récupérées", [
151 "report" => [
152 "id" => $report->getId(),
153 "object" => $report->getObject()->name,
154 "description" => $report->getDescription(),
155 "author_uuid" => $report->getSenderUuid(),
156 "author_username" => $playerManager->findByUuid($report->getSenderUuid())->getUsername(),
157 "reported_uuid" => $report->getReportedUuid(),
158 "reported_username" => $playerManager->findByUuid($report->getReportedUuid())->getUsername(),
159 "created_at" => $report->getCreatedAt()->getTimestamp() * 1000,
160 ],
161 ]);
162 exit;
163 }
164
170 public function getAllReportsWaiting(): void
171 {
172 $reportsManager = new ReportDAO($this->getPdo());
173 $reports = $reportsManager->findAllWaiting();
174 if (empty($reports)) {
175 echo MessageHandler::sendJsonMessage("Aucun signalement en attente", [
176 "reports" => null,
177 ]);
178 exit;
179 }
180 echo MessageHandler::sendJsonMessage("Signalements récupérés", [
181 "reports" => array_map(fn($report) => [
182 "id" => $report->getId(),
183 "object" => $report->getObject()->name,
184 "description" => $report->getDescription(),
185 "author_uuid" => $report->getSenderUuid(),
186 "author_username" => (new PlayerDAO($this->getPdo()))->findByUuid($report->getSenderUuid())->getUsername(),
187 "reported_uuid" => $report->getReportedUuid(),
188 "reported_username" => (new PlayerDAO($this->getPdo()))->findByUuid($report->getReportedUuid())->getUsername(),
189 "created_at" => $report->getCreatedAt()->getTimestamp() * 1000,
190 ], $reports),
191 ]);
192 exit;
193 }
194}
getSuggestionInfo(?int $id)
Récupère les informations à propos d'une sugestion et les renvoi sous format JSON.
getAllSuggestionsWaiting()
Récupère toutes les suggestions en attente et les renvois sous format JSON.
__construct(FilesystemLoader $loader, Environment $twig)
Constructeur de la classe ControllerDashboard.
showDashboard()
Affiche la page d'accueil du dashboard.
getReportInformations(?int $id)
Retourne les informations au format JSON à propos d'un signalement.
denySuggestion(int $id)
Refuse une suggestion et affiche le résultat de l'exécution de la requête en base de données.
getAllReportsWaiting()
Renvoi les informations au format JSON de tous les signalements en attente.
acceptSuggestion(int $id)
Accepte une suggestion et affiche le résultat de l'exécution de la requête en base de données.
getTwig()
Retourne l'attribut twig, correspondant à l'environnement de Twig.
getPdo()
Retourne l'attribut PDO, correspondant à la connexion à la base de données.