From d4bbc190d4e202241f8997228fffd16eddcd3353 Mon Sep 17 00:00:00 2001
From: collinot4u <baptiste.collinot1@etu.univ-lorraine.fr>
Date: Wed, 3 Apr 2024 09:17:43 +0100
Subject: [PATCH] modifier abonnement + affichage solde
---
src/Controller/ModifUserController.php | 34 +++++++++++++
templates/header.html.twig | 3 ++
templates/security/mes_annonces.html.twig | 3 --
templates/security/modifUser.html.twig | 2 +-
.../security/modifUserAbonnement.html.twig | 49 +++++++++++++++++++
5 files changed, 87 insertions(+), 4 deletions(-)
create mode 100644 templates/security/modifUserAbonnement.html.twig
diff --git a/src/Controller/ModifUserController.php b/src/Controller/ModifUserController.php
index af8fbfa6..4dcd861a 100644
--- a/src/Controller/ModifUserController.php
+++ b/src/Controller/ModifUserController.php
@@ -8,6 +8,7 @@ use App\Entity\Administrateur;
use App\Entity\Pret;
use App\Entity\Services;
use App\Form\ModifUserCoordFormType;
+use App\Form\ModifUserAbonnementFormType;
use App\Form\ModifPasswordType;
use App\Form\CompteSommeilFormType;
use App\Repository\PrestationsRepository;
@@ -20,6 +21,7 @@ use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
use Symfony\Component\Validator\Constraints\DateTime;
use Symfony\Component\Form\FormError;
+use Symfony\Component\HttpFoundation\JsonResponse;
class ModifUserController extends AbstractController
{
@@ -221,4 +223,36 @@ class ModifUserController extends AbstractController
'user' => $user,
]);
}
+
+ #[Route('/modifUserAbonnement', name: 'app_modif_user_abonnement')]
+ public function modifUserAbonnement(Request $request, UserPasswordHasherInterface $userPasswordHasher, EntityManagerInterface $entityManager): Response
+ {
+ $user = $this->getUser();
+
+ return $this->render('security/modifUserAbonnement.html.twig', [
+ 'user' => $user,
+ ]);
+ }
+
+ #[Route('/ameliorerAbonnement', name: 'app_ameliorer_abonnement')]
+ public function ameliorer(EntityManagerInterface $entityManager): JsonResponse
+ {
+ $user = $this->getUser();
+ $user->setStatusAbonnement(1);
+ $entityManager->flush();
+
+ return new JsonResponse(['success' => true]);
+ }
+
+ #[Route('/retrograderAbonnement', name: 'app_retrograder_abonnement')]
+ public function retrograder(EntityManagerInterface $entityManager): JsonResponse
+ {
+ $user = $this->getUser();
+ $user->setStatusAbonnement(0);
+ $nbFlorains = $user->getNbFlorains();
+ $user->setNbFlorains($nbFlorains + 500);
+ $entityManager->flush();
+
+ return new JsonResponse(['success' => true]);
+ }
}
diff --git a/templates/header.html.twig b/templates/header.html.twig
index d9a0afee..e4ea5150 100644
--- a/templates/header.html.twig
+++ b/templates/header.html.twig
@@ -11,6 +11,9 @@
<p>{{ app.user.login }}</p>
<a href="{{ path("app_notifications")}}"><img src={{asset('/img/notifs.png')}} alt="logo profil" width="35px"/></a>
<a href="{{ path("app_modif_user")}}" ><img src={{asset('/img/bonhomme.png')}} alt="logo profil" width="50px"/></a>
+ {% if not is_granted('ROLE_ADMIN') %}
+ <p>Solde: {{ app.user.getNbFlorains() }}</p>
+ {% endif %}
{% else %}
<div>
<a href="{{ path("app_login")}}"><button class="creation_annonce">Publier une annonce</button></a>
diff --git a/templates/security/mes_annonces.html.twig b/templates/security/mes_annonces.html.twig
index fee9ae6e..3f88c312 100644
--- a/templates/security/mes_annonces.html.twig
+++ b/templates/security/mes_annonces.html.twig
@@ -8,9 +8,6 @@
.example-wrapper code { padding: 2px 6px; }
.footer { margin: 15px; position: absolute; bottom: 0; }
</style>
-
-<h1>Mes annonces</h1>
-
<div class="container-recherche">
<form id="filterForm" method="post">
<input class="txt_form" type="text" name="keyword" value="{{ app.request.query.get('keyword') }}" placeholder="Mot-clé">
diff --git a/templates/security/modifUser.html.twig b/templates/security/modifUser.html.twig
index cf8080bc..d485e88d 100644
--- a/templates/security/modifUser.html.twig
+++ b/templates/security/modifUser.html.twig
@@ -19,7 +19,7 @@
<button class="btn-connexion2" onclick="window.location.href='{{ path("app_user_coord") }}'">Mon profil</button>
<button class="btn-connexion2" onclick="window.location.href='{{ path("app_mes_annonces") }}'">Consulter mes transactions</button>
<button class="btn-connexion2" onclick="window.location.href='{{ path("app_modif_user_coord") }}'">Modifier mes coordonnées</button>
- <button class="btn-connexion2" onclick="window.location.href='{{ path("app_modif_user_coord") }}'">Modifier mon abonnement</button>
+ <button class="btn-connexion2" onclick="window.location.href='{{ path("app_modif_user_abonnement") }}'">Modifier mon abonnement</button>
<button class="btn-connexion2" onclick="window.location.href='{{ path("app_modif_user_mdp") }}'">Modifier mon mot de passe</button>
{% if app.user.isSommeil()%}
diff --git a/templates/security/modifUserAbonnement.html.twig b/templates/security/modifUserAbonnement.html.twig
new file mode 100644
index 00000000..e2d258bf
--- /dev/null
+++ b/templates/security/modifUserAbonnement.html.twig
@@ -0,0 +1,49 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Modif abonnement{% endblock %}
+
+{% block body %}
+<div class="container-connexion3">
+ <div class="container-connexion">
+ <div class="container-connexion2">
+ <h1>Mon abonnement</h1>
+ {% if user.statusabonnement == 0 %}
+ <p><strong>Statut abonnement:</strong> Abonnement standard</p>
+ <p>Passez à un abonnement premium pour 10€</p>
+ <button type="button" class="btn-connexion" onclick="ameliorer()">Modifier mon abonnement (-10€)</button>
+ {% else %}
+ <p><strong>Statut abonnement:</strong> Abonnement premium</p>
+ <p>Rétrogradez à un abonnement standard et obtenez 500 florains </p>
+ <button type="button" class="btn-connexion" onclick="retrograder()">Modifier mon abonnement (+500 florains)</button>
+ {% endif %}
+ </div>
+ <button class="btn-connexion2" onclick="window.location.href='{{ path("app_modif_user") }}'">Retour</button>
+ </div>
+</div>
+
+<script>
+ function ameliorer() {
+ fetch('{{ path("app_ameliorer_abonnement") }}', { method: 'POST' })
+ .then(response => {
+ if (response.ok) {
+ window.location.reload();
+ } else {
+ console.error('Échec de la mise à niveau de l\'abonnement');
+ }
+ })
+ .catch(error => console.error('Erreur :', error));
+ }
+
+ function retrograder() {
+ fetch('{{ path("app_retrograder_abonnement") }}', { method: 'POST' })
+ .then(response => {
+ if (response.ok) {
+ window.location.reload();
+ } else {
+ console.error('Échec de la rétrogradation de l\'abonnement');
+ }
+ })
+ .catch(error => console.error('Erreur :', error));
+ }
+</script>
+{% endblock %}
--
GitLab