diff --git a/data.mv.db b/data.mv.db index b997069..94f20c8 100644 Binary files a/data.mv.db and b/data.mv.db differ diff --git a/src/main/java/ru/ulstu/is/lab1/DataBase/controller/FilmMvcController.java b/src/main/java/ru/ulstu/is/lab1/DataBase/controller/FilmMvcController.java index 588b787..e01fb04 100644 --- a/src/main/java/ru/ulstu/is/lab1/DataBase/controller/FilmMvcController.java +++ b/src/main/java/ru/ulstu/is/lab1/DataBase/controller/FilmMvcController.java @@ -6,6 +6,7 @@ import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import ru.ulstu.is.lab1.DataBase.service.FilmService; import ru.ulstu.is.lab1.DataBase.service.GenreService; +import ru.ulstu.is.lab1.DataBase.model.Genre; import javax.validation.Valid; import java.util.List; @@ -32,6 +33,23 @@ public class FilmMvcController { return "film"; } + @GetMapping("/genres/{id}") + public String getGenresFromFilm(@PathVariable Long id, Model model) { + List genres = filmService.getGenresFromFilm(id); + model.addAttribute("genres", genres); + return "view-genres"; + } + + @GetMapping("getGenres/{id}") + public String getGenres(@PathVariable Long id, Model model) { + model.addAttribute("genres", + genreService.findAllGenres().stream() + .map(GenreDTO::new) + .toList()); + model.addAttribute("filmId", id); + return "add-genre"; + } + @GetMapping(value = {"/edit", "/edit/{id}"}) public String editFilm(@PathVariable(required = false) Long id, Model model) { @@ -74,6 +92,6 @@ public class FilmMvcController { .map(Long::parseLong) .collect(Collectors.toList()); filmService.addGenres(id, genreIdsAsLong); - return "redirect:/film"; + return "redirect:../genres/{id}"; } } diff --git a/src/main/java/ru/ulstu/is/lab1/DataBase/controller/GenreMvcController.java b/src/main/java/ru/ulstu/is/lab1/DataBase/controller/GenreMvcController.java index 46b29c5..288dbd0 100644 --- a/src/main/java/ru/ulstu/is/lab1/DataBase/controller/GenreMvcController.java +++ b/src/main/java/ru/ulstu/is/lab1/DataBase/controller/GenreMvcController.java @@ -5,8 +5,10 @@ import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import ru.ulstu.is.lab1.DataBase.service.GenreService; +import ru.ulstu.is.lab1.DataBase.service.FilmService; import javax.validation.Valid; +import java.util.List; @Controller @RequestMapping("/genre") @@ -59,4 +61,13 @@ public class GenreMvcController { genreService.deleteGenre(id); return "redirect:/genre"; } + @GetMapping("/report/{id}") + public String findWorkersOnWorkplace(@PathVariable(required = false) Long id, Model model){ + model.addAttribute("cathegory", "Фильмы по жанру: " + genreService.findGenre(id).getName()); + model.addAttribute("films", genreService.findFilmOnGenre(id).stream() + .map(FilmDTO::new) + .toList()); + model.addAttribute("page", "genre"); + return "report"; + } } diff --git a/src/main/java/ru/ulstu/is/lab1/DataBase/service/FilmService.java b/src/main/java/ru/ulstu/is/lab1/DataBase/service/FilmService.java index 74bb293..2bfd868 100644 --- a/src/main/java/ru/ulstu/is/lab1/DataBase/service/FilmService.java +++ b/src/main/java/ru/ulstu/is/lab1/DataBase/service/FilmService.java @@ -81,4 +81,15 @@ public class FilmService { } return filmRepository.save(film); } + + @Transactional + public List getGenresFromFilm(Long filmId){ + Optional filmOptional = filmRepository.findById(filmId); + if (filmOptional.isPresent()) { + Film film = filmOptional.get(); + return film.getGenres(); + } else { + throw new IllegalArgumentException("Film not found with id: " + filmId); + } + } } diff --git a/src/main/resources/templates/add-genre.html b/src/main/resources/templates/add-genre.html new file mode 100644 index 0000000..74ac7d6 --- /dev/null +++ b/src/main/resources/templates/add-genre.html @@ -0,0 +1,33 @@ + + + + + +
+
+
+
+

Выберите жанры:

+
    +
  • +
    + + +
    +
  • +
+
+
+ + + Назад + +
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/error.html b/src/main/resources/templates/error.html new file mode 100644 index 0000000..7d31c40 --- /dev/null +++ b/src/main/resources/templates/error.html @@ -0,0 +1,13 @@ + + + + + +
+
+ На главную +
+ + \ No newline at end of file diff --git a/src/main/resources/templates/film.html b/src/main/resources/templates/film.html index 258624e..3e319b1 100644 --- a/src/main/resources/templates/film.html +++ b/src/main/resources/templates/film.html @@ -34,6 +34,12 @@ th:attr="onclick=|confirm('Удалить запись?') && document.getElementById('remove-${film.id}').click()|"> Удалить + + Посмотреть жанры + + Добавить жанры
+ + Отчет +