Untitled
unknown
java
3 years ago
4.3 kB
3
Indexable
package me.xander.filmfestival; import me.xander.filmfestival.domain.Film; import me.xander.filmfestival.domain.Score; import me.xander.filmfestival.service.FilmFestivalService; import me.xander.filmfestival.validator.FilmValidator; import me.xander.filmfestival.validator.ScoreValidator; 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.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.Comparator; import java.util.List; @Controller @RequestMapping("/films") @SessionAttributes() public class FilmFestivalController { @Autowired private FilmValidator filmValidator; @Autowired private ScoreValidator scoreValidator; @Autowired private FilmFestivalService filmFestivalService; @GetMapping("/overzicht") public String overzicht(Model model, String addedFilm, String addedScore) { final List<Film> filmListSorted = filmFestivalService.getFilms().stream().sorted(Comparator.comparing(Film::getName)).toList(); model.addAttribute("filmList", filmListSorted); model.addAttribute("magToevoegen", SecurityContextHolder.getContext().getAuthentication().getAuthorities().stream().anyMatch(grantedAuthority -> grantedAuthority.getAuthority().equals("ROLE_ADMIN"))); if (addedFilm != null) model.addAttribute("addedFilm", addedFilm); if (addedScore != null) model.addAttribute("addedScore", addedScore); return "films/overzicht"; } @GetMapping("/ranking") public String ranking(Model model, String addedFilm, String addedScore) { final List<Film> filmListSorted = filmFestivalService.getFilms().stream() .sorted(Comparator.comparingInt(Film::getTotalScore).reversed().thenComparing(Film::getName)) .toList(); model.addAttribute("filmList", filmListSorted); return "films/ranking"; } @GetMapping("/{id}") public String filmDetail(@PathVariable String id, Model model) { id = id.toLowerCase(); if (!id.matches("[a-z][a-z]\\d\\d\\d")) { return "redirect:/films/overzicht"; } final Film film = filmFestivalService.getFilm(id); if (film == null) return "redirect:/films/overzicht"; Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); model.addAttribute("score", filmFestivalService.getScoreFromUsername(film, authentication.getName())); model.addAttribute("film", film); model.addAttribute("algemeneScore", filmFestivalService.getScore(film)); return "films/detail"; } @GetMapping("/voegtoe") public String voegToe(Model model) { model.addAttribute("film", new Film()); return "films/voegtoe"; } @PostMapping("/voegtoe") public String voeg(@Valid Film film, BindingResult result, Model model) { filmValidator.validate(film, result); if (filmFestivalService.getFilms().stream().anyMatch(film1 -> film1.getFilmCode().equals(film.getFilmCode()))) { result.rejectValue("filmCode", "validation.filmcode.uniek"); } if (result.hasErrors()) return "films/voegtoe"; filmFestivalService.voegFilmToe(film); return "redirect:overzicht?addedFilm=" + film.getName(); } @PostMapping("/addScore/{id}") public String addScore(Score score, @PathVariable String id, BindingResult result, Model model) { scoreValidator.validate(score, result); if (result.hasErrors()) return "/" + id; final Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); final Film film = filmFestivalService.getFilm(id); filmFestivalService.addScore(film, authentication.getName(), score.getScore()); return "redirect:/films/overzicht?addedScore=" + film.getName(); } }
Editor is loading...