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