diff --git a/src/main/java/fr/eni/enchere/controllers/AccueilController.java b/src/main/java/fr/eni/enchere/controllers/AccueilController.java index 23ad943..125d280 100644 --- a/src/main/java/fr/eni/enchere/controllers/AccueilController.java +++ b/src/main/java/fr/eni/enchere/controllers/AccueilController.java @@ -8,6 +8,7 @@ import fr.eni.enchere.bo.Article; import fr.eni.enchere.bo.SearchArticleCritere; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.domain.Page; @@ -17,6 +18,7 @@ import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.support.SessionStatus; import org.springframework.web.servlet.i18n.SessionLocaleResolver; import org.springframework.web.servlet.mvc.support.RedirectAttributes; @@ -27,7 +29,6 @@ import java.util.Locale; @Controller -@SessionAttributes({"searchTitle", "searchCategory", "venteOptions", "achatOptions", "typeTransaction"}) public class AccueilController { private static final Logger logger = LoggerFactory.getLogger(AccueilController.class); @@ -35,7 +36,6 @@ public class AccueilController { private CategorieService categorieService; private UserService userService; - public AccueilController(ArticleService articleService, CategorieService categorieService, UserService userService) { super(); this.categorieService = categorieService; @@ -43,21 +43,27 @@ public class AccueilController { this.userService = userService; } - @GetMapping({"/", "/enchere"}) public String viewAccueil(HttpServletRequest request, @AuthenticationPrincipal UserDetails userDetails, - @RequestParam(required = false) String searchTitle, @RequestParam(required = false) Integer searchCategory, @RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "6") int size, Model model, - @RequestParam(value = "venteOption", required = false) String[] venteOptions, - @RequestParam(value = "achatOption", required = false) String[] achatOptions, - @RequestParam(required = false) String typeTransaction) { + HttpSession session) { logger.error("test du logger"); - model.addAttribute("categories", categorieService.findAllCategories()); - model.addAttribute("requestURI", request.getRequestURI()); + + // Récupérer les critères de recherche de la session + String searchTitle = (String) session.getAttribute("searchTitle"); + Integer searchCategory = (Integer) session.getAttribute("searchCategory"); + String[] venteOptions = (String[]) session.getAttribute("venteOptions"); + String[] achatOptions = (String[]) session.getAttribute("achatOptions"); + String typeTransaction = (String) session.getAttribute("typeTransaction"); + model.addAttribute("SessionTypeTransaction", typeTransaction); + model.addAttribute("sessionVenteOptions", venteOptions); + model.addAttribute("sessionAchatOptions", achatOptions); + + // Utiliser les valeurs des critères de recherche dans votre logique métier SearchArticleCritere critere = new SearchArticleCritere(); critere.setNoCategorie(searchCategory); critere.setTitle(searchTitle); - if(userDetails != null) { + if (userDetails != null) { critere.setNoVendeur(userService.utilisateurByName(userDetails.getUsername()).getId()); } critere.setVenteOptions(venteOptions); @@ -75,24 +81,28 @@ public class AccueilController { model.addAttribute("currentPage", currentPage); model.addAttribute("critere", critere); model.addAttribute("totalPages", articlePage.getTotalPages()); + model.addAttribute("categories", categorieService.findAllCategories()); + model.addAttribute("requestURI", request.getRequestURI()); return "accueil"; } @PostMapping("/enchere") - public String handleSearch(HttpServletRequest request, @AuthenticationPrincipal UserDetails userDetails, @RequestParam(required = false) String searchTitle, @RequestParam(required = false) Integer searchCategory, @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "6") int size, Model model, @RequestParam(value = "venteOption", required = false) String[] venteOptions, @RequestParam(value = "achatOption", required = false) String[] achatOptions, @RequestParam(required = false) String typeTransaction) { + public String handleSearch(HttpServletRequest request, @AuthenticationPrincipal UserDetails userDetails, + @RequestParam(required = false) String searchTitle, @RequestParam(required = false) Integer searchCategory, + @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "6") int size, Model model, + @RequestParam(value = "venteOption", required = false) String[] venteOptions, + @RequestParam(value = "achatOption", required = false) String[] achatOptions, + @RequestParam(required = false) String typeTransaction, HttpSession session) { - // Mettre à jour la catégorie dans la session - model.addAttribute("searchCategory", searchCategory); + // Mettre à jour les critères de recherche dans la session + session.setAttribute("searchCategory", searchCategory); + session.setAttribute("searchTitle", searchTitle); + session.setAttribute("venteOptions", venteOptions); + session.setAttribute("achatOptions", achatOptions); + session.setAttribute("typeTransaction", typeTransaction); - model.addAttribute("searchTitle", searchTitle); - - model.addAttribute("venteOptions", venteOptions); - model.addAttribute("achatOptions", achatOptions); - model.addAttribute("typeTransaction", typeTransaction); - - return viewAccueil(request, userDetails, searchTitle, searchCategory, page, size, model, venteOptions, achatOptions, typeTransaction); + // Rediriger vers la page d'accueil + return "redirect:/enchere"; } - - } diff --git a/src/main/resources/static/js/toggleCheckbox.js b/src/main/resources/static/js/toggleCheckbox.js index 375057c..e924cd3 100644 --- a/src/main/resources/static/js/toggleCheckbox.js +++ b/src/main/resources/static/js/toggleCheckbox.js @@ -1,21 +1,27 @@ document.addEventListener('DOMContentLoaded', function() { window.toggleCheckbox = function(value) { - console.log("toggleCheckbox called with value:", value); + console.log("toggleCheckbox called with value:", value); - // Logique pour désactiver/activer les checkboxes - const achatsCheckboxes = document.querySelectorAll('#achatsOptions input[type=checkbox]'); - const ventesCheckboxes = document.querySelectorAll('#ventesOptions input[type=checkbox]'); + // Logique pour désactiver/activer les checkboxes + const achatsCheckboxes = document.querySelectorAll('#achatsOptions input[type=checkbox]'); + const ventesCheckboxes = document.querySelectorAll('#ventesOptions input[type=checkbox]'); - if (value === 'achats') { - achatsCheckboxes.forEach(checkbox => checkbox.disabled = false); - ventesCheckboxes.forEach(checkbox => checkbox.disabled = true); - } else if (value === 'ventes') { - achatsCheckboxes.forEach(checkbox => checkbox.disabled = true); - ventesCheckboxes.forEach(checkbox => checkbox.disabled = false); - } + if (value === 'achats') { + achatsCheckboxes.forEach(checkbox => checkbox.disabled = false); + ventesCheckboxes.forEach(checkbox => { + checkbox.checked = false; + checkbox.disabled = true; + }); + } else if (value === 'ventes') { + achatsCheckboxes.forEach(checkbox => { + checkbox.checked = false; + checkbox.disabled = true; + }); + ventesCheckboxes.forEach(checkbox => checkbox.disabled = false); + } - // Log pour voir l'état des checkboxes - console.log("Achats checkboxes disabled:", achatsCheckboxes[0].disabled); - console.log("Ventes checkboxes disabled:", ventesCheckboxes[0].disabled); + // Log pour voir l'état des checkboxes + console.log("Achats checkboxes disabled:", achatsCheckboxes[0].disabled); + console.log("Ventes checkboxes disabled:", ventesCheckboxes[0].disabled); }; }); \ No newline at end of file diff --git a/src/main/resources/templates/accueil.html b/src/main/resources/templates/accueil.html index 1218a49..cca192a 100644 --- a/src/main/resources/templates/accueil.html +++ b/src/main/resources/templates/accueil.html @@ -17,30 +17,28 @@