Files
ENI-enchere/src/main/java/fr/eni/enchere/controllers/ArticleController.java
2024-04-24 16:55:25 +02:00

111 lines
4.1 KiB
Java

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";
}
}