diff --git a/config/routes.yaml b/config/routes.yaml index eaea01c73b4b1e33a76f49d05303d699270480fa..4ebe8e065a5748ae2e6154c426e22ae0e97a0936 100644 --- a/config/routes.yaml +++ b/config/routes.yaml @@ -22,4 +22,8 @@ filtmes_annonces_filtres: filtmes_annonces_repondues_filtres: path: /mes_annonces_repondues/filtres/ - controller: App\Controller\ModifUserController::mesAnnoncesReponduesFiltres \ No newline at end of file + controller: App\Controller\ModifUserController::mesAnnoncesReponduesFiltres + +filtmes_annonces_likees_filtres: + path: /mes_annonces_likees/filtres/ + controller: App\Controller\ModifUserController::mesAnnoncesLikeesFiltres \ No newline at end of file diff --git a/src/Controller/ModifUserController.php b/src/Controller/ModifUserController.php index 388ad12bf7ab8b176af878c23d046b998a970f27..ac3119bea3954c7fde43f3abe4c8a806ea41b262 100644 --- a/src/Controller/ModifUserController.php +++ b/src/Controller/ModifUserController.php @@ -101,7 +101,7 @@ class ModifUserController extends AbstractController } #[Route('/mettreCompteSommeil/{errorType}', name: 'app_compte_sommeil')] - public function mettreCompteSommeil(Request $request, UserPasswordHasherInterface $userPasswordHasher, EntityManagerInterface $entityManager, $errorType): Response + public function mettreCompteSommeil(Request $request, EntityManagerInterface $entityManager, $errorType): Response { $user = $this->getUser(); $form = $this->createForm(CompteSommeilFormType::class, $user); @@ -159,7 +159,7 @@ class ModifUserController extends AbstractController } #[Route('/mes_annonces', name: 'app_mes_annonces')] - public function mesAnnonces(Request $request, EntityManagerInterface $entityManager, PrestationsRepository $prestationsRepository): Response + public function mesAnnonces(EntityManagerInterface $entityManager, PrestationsRepository $prestationsRepository): Response { $user = $this->getUser(); @@ -175,11 +175,33 @@ class ModifUserController extends AbstractController 'prets' => $prets, 'services' => $services, 'prestations' => $prestations, + 'publiee' => true, + 'reservee' => false, + 'likee' => false, + ]); + } + + #[Route('/mes_likes', name: 'app_mes_likes')] + public function mesLikes(EntityManagerInterface $entityManager): Response + { + $prestations = $this->getUser()->getPrestationsAimees(); + $entrees = $entityManager->getRepository(Prestations::class)->findAll(); + $prets = $entityManager->getRepository(Pret::class)->findAll(); + $services = $entityManager->getRepository(Services::class)->findAll(); + + return $this->render('security/mes_annonces_likes.html.twig', [ + 'entrees' => $entrees, + 'prets' => $prets, + 'services' => $services, + 'prestations' => $prestations, + 'publiee' => false, + 'reservee' => false, + 'likee' => true, ]); } #[Route('/mes_annonces_repondues', name: 'app_mes_annonces_repondues')] - public function mesAnnoncesRepondues(Request $request, EntityManagerInterface $entityManager, PrestationsRepository $prestationsRepository): Response + public function mesAnnoncesRepondues(EntityManagerInterface $entityManager, PrestationsRepository $prestationsRepository): Response { $user = $this->getUser(); @@ -195,6 +217,9 @@ class ModifUserController extends AbstractController 'prets' => $prets, 'services' => $services, 'prestations' => $prestations, + 'publiee' => false, + 'reservee' => true, + 'likee' => false, ]); } @@ -231,6 +256,9 @@ class ModifUserController extends AbstractController 'prets' => $prets, 'services' => $services, 'prestations' => $res, + 'publiee' => true, + 'reservee' => false, + 'likee' => false, ]); } @@ -262,11 +290,51 @@ class ModifUserController extends AbstractController $services = $entityManager->getRepository(Services::class)->findAll(); return $this->render('security/mes_annonces_repondues.html.twig', [ + 'entrees' => $entrees, + 'prets' => $prets, + 'services' => $services, + 'prestations' => $res, + 'publiee' => false, + 'reservee' => true, + 'likee' => false, + ]); + } + + #[Route('', name: 'mes_annonces_likees_filtres')] + public function mesAnnoncesLikeesFiltres(Request $request, EntityManagerInterface $entityManager, PrestationsRepository $prestationsRepository): Response + { + $user = $this->getUser(); + $keyword = $request->query->get('keyword'); + $prixMin = $request->query->get('prixMin'); + $prixMax = $request->query->get('prixMax'); + $typePrestation = $request->query->get('type_prestation'); + if ($prixMin == '') $prixMin = null; + if ($prixMax == '') $prixMax = null; + + $res = []; + $prestations = $user->getPrestationsAimees(); + $prestations2 = $prestationsRepository->findFilteredPrestations($keyword, $prixMin, $prixMax, $typePrestation); + + foreach ($prestations as $pres) { + foreach ($prestations2 as $pres2) { + if ($pres === $pres2) + array_push($res,$pres); + } + } + + $entrees = $entityManager->getRepository(Prestations::class)->findAll(); + $prets = $entityManager->getRepository(Pret::class)->findAll(); + $services = $entityManager->getRepository(Services::class)->findAll(); + + return $this->render('security/mes_annonces.html.twig', [ 'controller_name' => 'ModifUserController', 'entrees' => $entrees, 'prets' => $prets, 'services' => $services, 'prestations' => $res, + 'publiee' => false, + 'reservee' => false, + 'likee' => true, ]); } diff --git a/templates/security/entete_mes_annonces.html.twig b/templates/security/entete_mes_annonces.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..d9003d9aa8a22af5448b66576e57ceef93f0e5d8 --- /dev/null +++ b/templates/security/entete_mes_annonces.html.twig @@ -0,0 +1,59 @@ +{% block body %} +<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é"> + <input class="txt_form prix" type="number" name="prixMin" value="{{ app.request.query.get('prixMin') }}" placeholder="€ minimum"> + <input class="txt_form prix" type="number" name="prixMax" value="{{ app.request.query.get('prixMax') }}" placeholder="€ maximum"> + <select class="txt_form" name="type_prestation"> + <option value="">Tous les types de prestation</option> + <option value="pret" {% if app.request.query.get('type_prestation') == 'pret' %} selected {% endif %}>Prêts</option> + <option value="service" {% if app.request.query.get('type_prestation') == 'service' %} selected {% endif %}>Services</option> + </select> + <button type="submit" class="btn_recherche">Filtrer</button> + </form> + + <script> + document.getElementById("filterForm").addEventListener("submit", function(event) { + event.preventDefault(); + + var keyword = document.getElementsByName("keyword")[0].value; + var prixMin = document.getElementsByName("prixMin")[0].value; + var prixMax = document.getElementsByName("prixMax")[0].value; + var typePrestation = document.getElementsByName("type_prestation")[0].value; + + {% if publiee %} + var url = "../../mes_annonces/filtres/?keyword=" + encodeURIComponent(keyword) + "&prixMin=" + encodeURIComponent(prixMin) + "&prixMax=" + encodeURIComponent(prixMax) + "&type_prestation=" + encodeURIComponent(typePrestation); + {% else %} + {% if reservee %} + var url = "../../mes_annonces_repondues/filtres/?keyword=" + encodeURIComponent(keyword) + "&prixMin=" + encodeURIComponent(prixMin) + "&prixMax=" + encodeURIComponent(prixMax) + "&type_prestation=" + encodeURIComponent(typePrestation); + {% else %} + var url = "../../mes_annonces_likees/filtres/?keyword=" + encodeURIComponent(keyword) + "&prixMin=" + encodeURIComponent(prixMin) + "&prixMax=" + encodeURIComponent(prixMax) + "&type_prestation=" + encodeURIComponent(typePrestation); + {% endif %} + {% endif %} + + window.location.href = url; + }); + </script> +</div> + +<div class="container-mes-annonces"> + {% if publiee %} + <a id="btnPostees" class="btn-navigation active" href="{{ path('app_mes_annonces') }}">Annonces postées</a> + {% else %} + <a id="btnPostees" class="btn-navigation" href="{{ path('app_mes_annonces') }}">Annonces postées</a> + {% endif %} + + {% if reservee %} + <a id="btnRepondues" class="btn-navigation active" href="{{ path('app_mes_annonces_repondues') }}">Annonces répondues</a> + {% else %} + <a id="btnRepondues" class="btn-navigation" href="{{ path('app_mes_annonces_repondues') }}">Annonces répondues</a> + {% endif %} + + {% if likee %} + <a id="btnRepondues" class="btn-navigation active" href="{{ path('app_mes_likes') }}">Annonces likées</a> + {% else %} + <a id="btnRepondues" class="btn-navigation" href="{{ path('app_mes_likes') }}">Annonces likées</a> + {% endif %} +</div> + +{% endblock %} \ No newline at end of file diff --git a/templates/security/mes_annonces.html.twig b/templates/security/mes_annonces.html.twig index 5fcd4108f2663746ade2211e147bc9e3ec276ed5..35d1f2adfcdae052149acdb1da2a01b5b4965455 100644 --- a/templates/security/mes_annonces.html.twig +++ b/templates/security/mes_annonces.html.twig @@ -3,39 +3,8 @@ {% block title %}Mes annonces{% endblock %} {% block body %} -<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é"> - <input class="txt_form prix" type="number" name="prixMin" value="{{ app.request.query.get('prixMin') }}" placeholder="€ minimum"> - <input class="txt_form prix" type="number" name="prixMax" value="{{ app.request.query.get('prixMax') }}" placeholder="€ maximum"> - <select class="txt_form" name="type_prestation"> - <option value="">Tous les types de prestation</option> - <option value="pret" {% if app.request.query.get('type_prestation') == 'pret' %} selected {% endif %}>Prêts</option> - <option value="service" {% if app.request.query.get('type_prestation') == 'service' %} selected {% endif %}>Services</option> - </select> - <button type="submit" class="btn_recherche">Filtrer</button> - </form> - <script> - document.getElementById("filterForm").addEventListener("submit", function(event) { - event.preventDefault(); - - var keyword = document.getElementsByName("keyword")[0].value; - var prixMin = document.getElementsByName("prixMin")[0].value; - var prixMax = document.getElementsByName("prixMax")[0].value; - var typePrestation = document.getElementsByName("type_prestation")[0].value; - - var url = "../../mes_annonces/filtres/?keyword=" + encodeURIComponent(keyword) + "&prixMin=" + encodeURIComponent(prixMin) + "&prixMax=" + encodeURIComponent(prixMax) + "&type_prestation=" + encodeURIComponent(typePrestation); - - window.location.href = url; - }); - </script> -</div> - -<div class="container-mes-annonces"> - <a id="btnPostees" class="btn-navigation active" href="{{ path('app_mes_annonces') }}">Annonces postées</a> - <a id="btnRepondues" class="btn-navigation" href="{{ path('app_mes_annonces_repondues') }}">Annonces répondues</a> -</div> +{% include 'security/entete_mes_annonces.html.twig' %} <div class="prestations"> {% for prestation in prestations %} diff --git a/templates/security/mes_annonces_likes.html.twig b/templates/security/mes_annonces_likes.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..91b13cb6ce8c78f41119d57dd78b9004644d93f9 --- /dev/null +++ b/templates/security/mes_annonces_likes.html.twig @@ -0,0 +1,40 @@ +{% extends 'base.html.twig' %} + +{% block title %}Mes annonces{% endblock %} + +{% block body %} + +{% include 'security/entete_mes_annonces.html.twig' %} +<div class="prestations"> + {% for prestation in prestations %} + <div class="prestation"> + {% if prestation.getType() == 'Pret' %} + <p class="tag_pret" id="tag">Prêt</p> + <p>{{ prestation.titre }}</p> + <p>{{ prestation.CoutPrestation }} florains</p> + <a href="{{ path('annonce_detail', {'id': prestation.id}) }}"><button class="tag_pret">Voir le détail >></button></a> + {% elseif prestation.getType() == 'Service' %} + <p class="tag_service" id="tag">Service</p> + <p>{{ prestation.titre }}</p> + <p>{{ prestation.CoutPrestation }} florains</p> + <a href="{{ path('annonce_detail', {'id': prestation.id}) }}"><button class="tag_service">Voir le détail >></button></a> + {% endif %} + </div> + {% endfor %} +</div> + +<script> + const btnPostees = document.getElementById('btnPostees'); + const btnRepondues = document.getElementById('btnRepondues'); + + btnPostees.addEventListener('click', () => { + btnPostees.classList.add('active'); + btnRepondues.classList.remove('active'); + }); + + btnRepondues.addEventListener('click', () => { + btnRepondues.classList.add('active'); + btnPostees.classList.remove('active'); + }); +</script> +{% endblock %} \ No newline at end of file diff --git a/templates/security/mes_annonces_repondues.html.twig b/templates/security/mes_annonces_repondues.html.twig index 031c8c3f21573418a916ee807013bb72d2175182..35d1f2adfcdae052149acdb1da2a01b5b4965455 100644 --- a/templates/security/mes_annonces_repondues.html.twig +++ b/templates/security/mes_annonces_repondues.html.twig @@ -3,39 +3,8 @@ {% block title %}Mes annonces{% endblock %} {% block body %} -<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é"> - <input class="txt_form prix" type="number" name="prixMin" value="{{ app.request.query.get('prixMin') }}" placeholder="€ minimum"> - <input class="txt_form prix" type="number" name="prixMax" value="{{ app.request.query.get('prixMax') }}" placeholder="€ maximum"> - <select class="txt_form" name="type_prestation"> - <option value="">Tous les types de prestation</option> - <option value="pret" {% if app.request.query.get('type_prestation') == 'pret' %} selected {% endif %}>Prêts</option> - <option value="service" {% if app.request.query.get('type_prestation') == 'service' %} selected {% endif %}>Services</option> - </select> - <button type="submit" class="btn_recherche">Filtrer</button> - </form> - <script> - document.getElementById("filterForm").addEventListener("submit", function(event) { - event.preventDefault(); - - var keyword = document.getElementsByName("keyword")[0].value; - var prixMin = document.getElementsByName("prixMin")[0].value; - var prixMax = document.getElementsByName("prixMax")[0].value; - var typePrestation = document.getElementsByName("type_prestation")[0].value; - - var url = "../../mes_annonces_repondues/filtres/?keyword=" + encodeURIComponent(keyword) + "&prixMin=" + encodeURIComponent(prixMin) + "&prixMax=" + encodeURIComponent(prixMax) + "&type_prestation=" + encodeURIComponent(typePrestation); - - window.location.href = url; - }); - </script> -</div> - -<div class="container-mes-annonces"> - <a id="btnPostees" class="btn-navigation" href="{{ path('app_mes_annonces') }}">Annonces postées</a> - <a id="btnRepondues" class="btn-navigation active" href="{{ path('app_mes_annonces_repondues') }}">Annonces répondues</a> -</div> +{% include 'security/entete_mes_annonces.html.twig' %} <div class="prestations"> {% for prestation in prestations %} diff --git a/templates/security/modifUser.html.twig b/templates/security/modifUser.html.twig index d485e88d69369d05c1fd13ad0ca31d376f7dd34f..988c60379a98a9f2d8ebe5bc4daed49e63510d66 100644 --- a/templates/security/modifUser.html.twig +++ b/templates/security/modifUser.html.twig @@ -16,8 +16,8 @@ <div class="container-connexion3"> <div class="container-connexion"> <div class="container-connexion2"> - <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_user_coord") }}'">Consulter mon profil</button> + <button class="btn-connexion2" onclick="window.location.href='{{ path("app_mes_annonces") }}'">Consulter mes annonces</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_abonnement") }}'">Modifier mon abonnement</button> <button class="btn-connexion2" onclick="window.location.href='{{ path("app_modif_user_mdp") }}'">Modifier mon mot de passe</button>