From 7512de70c2f4cfd7f5dbf0018939906bc282b606 Mon Sep 17 00:00:00 2001 From: "ityurner02@mail.ru" Date: Wed, 24 May 2023 17:26:29 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=A05=20=D1=87=D1=83=D1=82=D1=8C-=D1=87?= =?UTF-8?q?=D1=83=D1=82=D1=8C=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D1=83=20=D1=87=D0=B5?= =?UTF-8?q?=D0=BA=D0=B1=D0=BE=D0=BA=D1=81=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data.mv.db | Bin 90112 -> 90112 bytes .../controller/CollectionMvcController.java | 8 ++++++++ .../controller/FilmMvcController.java | 8 ++++++++ .../is/lab1/DataBase/service/FilmService.java | 15 +++++++++++++++ src/main/resources/templates/view-films.html | 6 ++++++ src/main/resources/templates/view-genres.html | 6 ++++++ 6 files changed, 43 insertions(+) diff --git a/data.mv.db b/data.mv.db index 047e6f692a8242ea9b6a1ce1c214f48c8dc62101..945a1d335379f3b044f46bcc8cf7ec0c9528d1af 100644 GIT binary patch literal 90112 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

~cG=c`kR|l*p*s8lZo)ayH)7VGi2a7j` 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 films = collectionService.getFilmsFromCollection(id); model.addAttribute("films", films); + model.addAttribute("collectionId", id); return "view-films"; } @@ -91,4 +92,11 @@ public class CollectionMvcController { collectionService.addFilm(id, filmIdAsLong); return "redirect:../films/{id}"; } + + @PostMapping(value = "/del_film/{id}/{filmId}") + public String deleteFilm(@PathVariable(value = "id") Long id, + @PathVariable(value = "filmId") Long filmId) { + collectionService.deleteFilm(id, filmId); + return "redirect:/collection/films/{id}"; + } } 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 e01fb04..29d97c2 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 @@ -37,6 +37,7 @@ public class FilmMvcController { public String getGenresFromFilm(@PathVariable Long id, Model model) { List genres = filmService.getGenresFromFilm(id); model.addAttribute("genres", genres); + model.addAttribute("filmId", id); return "view-genres"; } @@ -94,4 +95,11 @@ public class FilmMvcController { filmService.addGenres(id, genreIdsAsLong); return "redirect:../genres/{id}"; } + + @PostMapping(value = "/del_genre/{id}/{genreId}") + public String deleteFilm(@PathVariable(value = "id") Long id, + @PathVariable(value = "genreId") Long genreId) { + filmService.deleteGenre(id, genreId); + return "redirect:/film/genres/{id}"; + } } 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 2bfd868..a4d92d5 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 @@ -82,6 +82,21 @@ public class FilmService { return filmRepository.save(film); } + @Transactional + public Film deleteGenre(Long filmId, Long genreId) { + Film film = findFilm(filmId); + if (film == null) { + throw new EntityNotFoundException(String.format("Film with id [%s] is not found", filmId)); + } + final Genre genre = genreService.findGenre(genreId); + if (genre == null) { + throw new EntityNotFoundException(String.format("Genre with id [%s] is not found", genreId)); + } + + film.removeGenre(genre); + return filmRepository.save(film); + } + @Transactional public List getGenresFromFilm(Long filmId){ Optional filmOptional = filmRepository.findById(filmId); diff --git a/src/main/resources/templates/view-films.html b/src/main/resources/templates/view-films.html index a04e1ab..367bf39 100644 --- a/src/main/resources/templates/view-films.html +++ b/src/main/resources/templates/view-films.html @@ -11,11 +11,17 @@ Название + + +

+ +
+ diff --git a/src/main/resources/templates/view-genres.html b/src/main/resources/templates/view-genres.html index a161db9..35febbf 100644 --- a/src/main/resources/templates/view-genres.html +++ b/src/main/resources/templates/view-genres.html @@ -11,11 +11,17 @@ Название + + +
+ +
+