Comus Party 1.0.0
Application web de mini-jeux en ligne
Chargement...
Recherche...
Aucune correspondance
ControllerBasket.class.php
Aller à la documentation de ce fichier.
1<?php
9
10namespace ComusParty\Controllers;
11
12use ComusParty\App\MessageHandler;
13use ComusParty\App\Exceptions\NotFoundException;
14use ComusParty\Models\ArticleDAO;
15use DateMalformedStringException;
16use PHPUnit\Event\Test\AfterLastTestMethodErroredSubscriber;
17use Twig\Environment;
18use Twig\Error\LoaderError;
19use Twig\Error\RuntimeError;
20use Twig\Error\SyntaxError;
21use Twig\Loader\FilesystemLoader;
22
23
29{
35 public function __construct(FilesystemLoader $loader, Environment $twig)
36 {
37 parent::__construct($loader, $twig);
38 }
39
47 public function show(): void
48 {
49 $template = $this->getTwig()->load('player/basket.twig');
50
51
52 $managerArticle = new ArticleDAO($this->getPdo());
53
54 $articles = $managerArticle->findArticlesWithIds($_SESSION['basket']);
55 $totalPriceBasket = 0;
56 if ($articles) {
57 foreach ($articles as $article) {
58 $totalPriceBasket += $article->getPriceEuro();
59 }
60 }
61
62 echo $template->render(
63 array(
64 'articles' => $articles,
65 'totalPriceBasket' => $totalPriceBasket,
66 )
67 );
68 }
69
70
81 function addArticleToBasket(): void
82 {
83 $managerArticle = new ArticleDAO($this->getPdo());
84 $pfpsOwned = $managerArticle->findAllPfpsOwnedByPlayer($_SESSION['uuid']);
85 $idsPfpsOwned = [];
86 foreach ($pfpsOwned as $pfpOwned) {
87 $idsPfpsOwned[] = $pfpOwned->getId();
88 }
89
90 $bannersOwned = $managerArticle->findAllBannersOwnedByPlayer($_SESSION['uuid']);
91 $idsBannersOwned = [];
92 foreach ($bannersOwned as $bannerOwned) {
93 $idsBannersOwned[] = $bannerOwned->getId();
94 }
95
96 if (isset($_POST['id_article'])) {
97 $id_article = intval($_POST['id_article']);
98 if(!in_array($id_article, $idsPfpsOwned) && !in_array($id_article, $idsBannersOwned)){
99 if (!isset($_SESSION['basket'])) {
100 $_SESSION['basket'] = array();
101 }
102 if (!in_array($id_article, $_SESSION['basket'])) {
103 $_SESSION['basket'][] = $id_article;
104 $numberArticlesInBasket = count($_SESSION['basket']);
105 echo MessageHandler::sendJsonMessage("Article ajouté au panier !", ['numberArticlesInBasket' => $numberArticlesInBasket]);
106 exit;
107 } else {
108 $numberArticlesInBasket = count($_SESSION['basket']);
109 echo MessageHandler::sendJsonMessage("L'article est déjà dans le panier.", ['numberArticlesInBasket' => $numberArticlesInBasket]);
110 exit;
111 }
112 }
113 } else {
114 MessageHandler::sendJsonCustomException(400, "ID de l'article non spécifié.");
115 }
116 }
117
123 public function removeArticleBasket(int $id): void
124 {
125
126 if ($id != null) {
127 $id_article = intval($id);
128
129 // Retirer l'ID de l'article au basket s'il n'y est pas déjà
130 if (in_array($id_article, $_SESSION['basket'])) {
131 $key = array_search($id_article, $_SESSION['basket'], true);
132 if ($key !== false) {
133 // Supprimer cette clé
134 unset($_SESSION['basket'][$key]);
135 }
136 $managerArticle = new ArticleDAO($this->getPdo());
137 $article = $managerArticle->findById($id_article);
138 $priceEuroArticle = $article->getPriceEuro();
139 $numberArticlesInBasket = count($_SESSION['basket']);
140 echo MessageHandler::sendJsonMessage("Article supprimé du panier !", [
141 'priceEuroArticle' => $priceEuroArticle,
142 'numberArticlesInBasket' => $numberArticlesInBasket
143 ]);
144 exit;
145 } else {
146 MessageHandler::sendJsonCustomException(400, "L'article n'est pas dans le panier.");
147 }
148 } else {
149 MessageHandler::sendJsonCustomException(400, "ID de l'article non spécifié.");
150 }
151 }
152
153
154}
show()
Affiche le panier avec la liste des articles (si article dans panier)
__construct(FilesystemLoader $loader, Environment $twig)
Constructeur de la classe ControllerBasket.
removeArticleBasket(int $id)
Permet de supprimer un article du panier.
addArticleToBasket()
Permet d'ajouter un article au panier.
getTwig()
Retourne l'attribut twig, correspondant à l'environnement de Twig.
getPdo()
Retourne l'attribut PDO, correspondant à la connexion à la base de données.