Changeset 7a0bf79 in Git for src/main/java/com/wediscussmovies/project/web/controller
- Timestamp:
- 01/16/22 03:40:31 (3 years ago)
- Branches:
- main
- Children:
- 2a5d6a3
- Parents:
- 839f96a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/main/java/com/wediscussmovies/project/web/controller/MovieController.java
r839f96a r7a0bf79 1 1 package com.wediscussmovies.project.web.controller; 2 2 3 import com.wediscussmovies.project.model.Genre; 3 4 import com.wediscussmovies.project.model.Movie; 5 import com.wediscussmovies.project.model.Person; 6 import com.wediscussmovies.project.model.exception.MovieIdNotFoundException; 7 import com.wediscussmovies.project.service.GenreService; 4 8 import com.wediscussmovies.project.service.MovieService; 9 import com.wediscussmovies.project.service.PersonService; 5 10 import org.springframework.stereotype.Controller; 6 11 import org.springframework.ui.Model; 7 import org.springframework.web.bind.annotation. GetMapping;8 import org.springframework.web.bind.annotation.RequestMapping; 9 import org.springframework.web.bind.annotation.RequestParam;10 12 import org.springframework.web.bind.annotation.*; 13 14 import java.sql.Date; 15 import java.util.LinkedList; 11 16 import java.util.List; 17 import java.util.Optional; 12 18 13 19 @Controller … … 15 21 public class MovieController { 16 22 private final MovieService movieService; 17 18 public MovieController(MovieService movieService) { 23 private final GenreService genreService; 24 private final PersonService personService; 25 26 public MovieController(MovieService movieService, GenreService genreService, PersonService personService) { 19 27 this.movieService = movieService; 28 this.genreService = genreService; 29 this.personService = personService; 20 30 } 21 31 … … 29 39 movies = movieService.searchByTitle(titleQuery); 30 40 } 41 42 movies.sort(Movie.comparatorTitle); 43 31 44 model.addAttribute("movies", movies); 32 45 model.addAttribute("contentTemplate", "moviesList"); … … 34 47 } 35 48 49 50 @GetMapping("/add") 51 public String addMovie(Model model){ 52 model.addAttribute("directors", personService.findAllDirectors()); 53 model.addAttribute("actors", personService.findAllActors()); 54 model.addAttribute("genres", genreService.findAll()); 55 model.addAttribute("contentTemplate", "moviesAdd"); 56 return "template"; 57 } 58 59 60 @PostMapping("/{id}/delete") 61 public String addMovie(@PathVariable int id){ 62 Optional<Movie> movie = movieService.findById(id); 63 if(movie.isPresent()){ 64 movieService.deleteById(movie.get().getMovie_id()); 65 } 66 return "redirect:/movies"; 67 } 68 69 @PostMapping("/add/confirm") 70 public String addMoviePost(@RequestParam String title, 71 @RequestParam String description, 72 @RequestParam String image_url, 73 @RequestParam Date airing_date, 74 @RequestParam Float rating, 75 @RequestParam Integer director_id, 76 @RequestParam List<Integer> actors, 77 @RequestParam List<Integer> genres, 78 Model model){ 79 if(title == null || title.isEmpty() || 80 description == null || description.isEmpty() || 81 image_url == null || image_url.isEmpty() || 82 airing_date == null || 83 rating == null || 84 director_id == null || 85 actors == null || actors.size() == 0 || 86 genres == null || genres.size() == 0) 87 { 88 model.addAttribute("error", "Not enough attributes, make sure all values are inputted, all of them are required"); 89 model.addAttribute("hasError", true); 90 return "redirect:/add"; 91 } 92 List<Person> actorsList = new LinkedList<>(); 93 for(Integer id: actors){ 94 Optional<Person> person = personService.findActorById(id); 95 if(person.isEmpty()){ 96 model.addAttribute("error", "The actor with ID {" + id + "} was not found."); 97 model.addAttribute("hasError", true); 98 return "redirect:/add"; 99 } 100 actorsList.add(person.get()); 101 } 102 103 List<Genre> genreList = new LinkedList<>(); 104 for(Integer id: genres){ 105 Optional<Genre> genre = genreService.findById(id); 106 if(genre.isEmpty()){ 107 model.addAttribute("error", "The genre with ID {" + id + "} was not found."); 108 model.addAttribute("hasError", true); 109 return "redirect:/add"; 110 } 111 genreList.add(genre.get()); 112 } 113 114 Optional<Person> directorOp = personService.findDirectorById(director_id); 115 if(directorOp.isEmpty()){ 116 model.addAttribute("error", "The director with ID {" + director_id + "} was not found."); 117 model.addAttribute("hasError", true); 118 return "redirect:/add"; 119 } 120 121 Person director = directorOp.get(); 122 123 Movie movie = new Movie(title, description, image_url, airing_date, 124 rating, director, actorsList, genreList); 125 126 movieService.save(movie); 127 128 return "redirect:/movies"; 129 } 130 131 @PostMapping("/edit/confirm") 132 public String editMoviePost( 133 @RequestParam Integer movie_id, 134 @RequestParam String title, 135 @RequestParam String description, 136 @RequestParam String image_url, 137 @RequestParam Date airing_date, 138 @RequestParam Float rating, 139 @RequestParam Integer director_id, 140 @RequestParam List<Integer> actors, 141 @RequestParam List<Integer> genres, 142 Model model){ 143 if( 144 movie_id == null || 145 title == null || title.isEmpty() || 146 description == null || description.isEmpty() || 147 image_url == null || image_url.isEmpty() || 148 airing_date == null || 149 rating == null || 150 director_id == null || 151 actors == null || actors.size() == 0 || 152 genres == null || genres.size() == 0) 153 { 154 model.addAttribute("error", "Not enough attributes, make sure all values are inputted, all of them are required"); 155 model.addAttribute("hasError", true); 156 return "redirect:/edit"; 157 } 158 159 Optional<Movie> movieOptional = movieService.findById(movie_id); 160 if(movieOptional.isEmpty()){ 161 model.addAttribute("error", "The movie with ID {" + movie_id + "} was not found."); 162 model.addAttribute("hasError", true); 163 return "redirect:/edit"; 164 } 165 Movie movie = movieOptional.get(); 166 167 List<Person> actorsList = new LinkedList<>(); 168 for(Integer id: actors){ 169 Optional<Person> person = personService.findActorById(id); 170 if(person.isEmpty()){ 171 model.addAttribute("error", "The actor with ID {" + id + "} was not found."); 172 model.addAttribute("hasError", true); 173 return "redirect:/edit"; 174 } 175 actorsList.add(person.get()); 176 } 177 178 List<Genre> genreList = new LinkedList<>(); 179 for(Integer id: genres){ 180 Optional<Genre> genre = genreService.findById(id); 181 if(genre.isEmpty()){ 182 model.addAttribute("error", "The genre with ID {" + id + "} was not found."); 183 model.addAttribute("hasError", true); 184 return "redirect:/edit"; 185 } 186 genreList.add(genre.get()); 187 } 188 189 Optional<Person> directorOp = personService.findDirectorById(director_id); 190 if(directorOp.isEmpty()){ 191 model.addAttribute("error", "The director with ID {" + director_id + "} was not found."); 192 model.addAttribute("hasError", true); 193 return "redirect:/edit"; 194 } 195 196 Person director = directorOp.get(); 197 198 movieService.deleteById(movie_id); 199 200 movie.setActors(actorsList); 201 movie.setDirector(director); 202 movie.setGenres(genreList); 203 movie.setTitle(title); 204 movie.setDescription(description); 205 movie.setAiring_date(airing_date); 206 movie.setImage_url(image_url); 207 movie.setImdb_rating(rating); 208 209 movieService.save(movie); 210 211 return "redirect:/movies"; 212 } 213 214 @GetMapping("/{id}/edit") 215 public String editMovie(@PathVariable Integer id, Model model){ 216 Movie movie = movieService.findById(id).orElseThrow(() -> new MovieIdNotFoundException(id)); 217 model.addAttribute("directors", personService.findAllDirectors()); 218 model.addAttribute("actors", personService.findAllActors()); 219 model.addAttribute("genres", genreService.findAll()); 220 model.addAttribute("movie", movie); 221 model.addAttribute("contentTemplate", "moviesEdit"); 222 return "template"; 223 } 36 224 }
Note:
See TracChangeset
for help on using the changeset viewer.