package fr.eni.enchere.controllers; import fr.eni.enchere.bll.ArticleService; import fr.eni.enchere.bll.CategorieService; import fr.eni.enchere.bll.RetraitService; import fr.eni.enchere.bll.UserService; import fr.eni.enchere.bo.Article; import fr.eni.enchere.bo.Retrait; import fr.eni.enchere.bo.UserProfil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @Controller() @RequestMapping("/article") public class ArticleController { @Autowired private final ArticleService articleService; private final UserService userService; private CategorieService categorieService; private RetraitService retraitService; public ArticleController(ArticleService articleService, UserService userService, CategorieService categorieService, RetraitService retraitService) { this.articleService = articleService; this.userService = userService; this.categorieService = categorieService; this.retraitService = retraitService; } @GetMapping public String viewArticle(Model model) { return "redirect:/accueil"; } //Affichage d'un article @GetMapping("/show") public String showArticle(@RequestParam()int id, Model model) { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (!authentication.getName().equals("anonymousUser")) { Article article = articleService.findArticleById(id); System.out.println(article); model.addAttribute("article", article); return "article"; } else { return "redirect:/accueil"; } } @GetMapping("/{slug}") public String testShowArticle(@PathVariable(name = "slug")int id, Model model) { Article article = articleService.findArticleById(id); model.addAttribute("article", article); return "article"; } //Création d'un article @GetMapping("/new") public String newArticleForm(Model model) { model.addAttribute("categories", categorieService.findAllCategories()); model.addAttribute("article", new Article()); model.addAttribute("retrait", new Retrait()); return "newArticle"; } @PostMapping("/new") public String newArticle(@ModelAttribute("article") Article article, @RequestParam("rue") String rue, @RequestParam("code_postal") String code_postal, @RequestParam("ville") String ville, @RequestParam("dateDebut") String dateDebut, @RequestParam("dateFin") String dateFin) { //Récupérer l'utilisateur pour set l'article Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); String username = authentication.getName(); UserProfil userProfile = userService.utilisateurByName(username); article.setNoUtilisateur(userProfile.getId()); //Récupérer le lieu de retrait Retrait retrait = new Retrait(); retrait.setRue(rue); retrait.setCode_postale(code_postal); retrait.setVille(ville); //Reste de l'article SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date dDateDebut = null; Date dDateFin = null; try { dDateDebut = format.parse(dateDebut); dDateFin = format.parse(dateFin); } catch (ParseException e) { e.printStackTrace(); } article.setDateDebutEnch(dDateDebut); article.setDateFinEnch(dDateFin); retrait.setNumArticle(articleService.saveArticle(article)); retraitService.setRetrait(retrait); return "redirect:/accueil"; } }