source: Git/src/main/java/com/wediscussmovies/project/web/controller/DiscussionsController.java@ 7bc8942

main
Last change on this file since 7bc8942 was 2a5d6a3, checked in by Petar Partaloski <ppartaloski@…>, 2 years ago

Controller, Repository and Service layer improvements, Entity updating

  • Property mode set to 100644
File size: 5.9 KB
Line 
1package com.wediscussmovies.project.web.controller;
2
3import com.wediscussmovies.project.model.*;
4import com.wediscussmovies.project.service.DiscussionService;
5import com.wediscussmovies.project.service.MovieService;
6import com.wediscussmovies.project.service.PersonService;
7import com.wediscussmovies.project.service.ReplyService;
8import org.springframework.stereotype.Controller;
9import org.springframework.ui.Model;
10import org.springframework.web.bind.annotation.*;
11
12import javax.servlet.http.HttpServletRequest;
13import java.sql.Date;
14import java.time.LocalDate;
15import java.util.List;
16import java.util.Optional;
17
18@Controller
19@RequestMapping("/discussions")
20public class DiscussionsController {
21 private final DiscussionService discussionService;
22 private final ReplyService replyService;
23 private final MovieService movieService;
24 private final PersonService personService;
25 public DiscussionsController(DiscussionService discussionService, ReplyService replyService, MovieService movieService, PersonService personService) {
26 this.discussionService = discussionService;
27 this.replyService = replyService;
28 this.movieService = movieService;
29 this.personService = personService;
30 }
31
32 @GetMapping("/")
33 public String getDiscussions(@RequestParam(required = false) String titleSearch,
34 Model model){
35 List<Discussion> discussions = discussionService.listAll();
36 if(titleSearch != null && !titleSearch.isEmpty()){
37 discussions = discussionService.listAllByTitle(titleSearch);
38 }
39 model.addAttribute("discussions", discussions);
40 model.addAttribute("contentTemplate", "discussionsList");
41 return "template";
42 }
43
44 @GetMapping("/{id}")
45 public String getDiscussion(
46 @PathVariable Integer id,
47 Model model){
48 Optional<Discussion> discussion = discussionService.findById(id);
49 if(discussion.isEmpty())
50 return "redirect:/discussions";
51 model.addAttribute("discussion", discussion);
52 model.addAttribute("contentTemplate", "discussionsDiscussion");
53 return "template";
54 }
55
56 @GetMapping("/{id}/reply")
57 public String getReplyToDiscussion(
58 @PathVariable Integer id,
59 Model model){
60 Optional<Discussion> discussion = discussionService.findById(id);
61 if(discussion.isEmpty())
62 return "redirect:/discussions";
63 model.addAttribute("discussion", discussion);
64 model.addAttribute("contentTemplate", "discussionsReply");
65 return "template";
66 }
67 @PostMapping("/{id}/reply/confirm")
68 public String getReplyToDiscussionConfirm(
69 @PathVariable Integer id,
70 @RequestParam String text,
71 HttpServletRequest request){
72 Optional<Discussion> discussion = discussionService.findById(id);
73 User user = (User) request.getSession().getAttribute("user");
74 if(user == null){
75 return "redirect:/login";
76 }
77 Date date = Date.valueOf(LocalDate.now());
78 if(discussion.isEmpty())
79 return "redirect:/discussions";
80 Reply reply = new Reply(discussion.get(), user, date, text);
81 replyService.save(reply);
82 return "redirect:/discussions/"+id;
83 }
84
85 @GetMapping("/movies/add/{id}")
86 public String getAddDiscussionForMovie(Model model,
87 @PathVariable Integer id,
88 HttpServletRequest request){
89 model.addAttribute("contentTemplate", "discussionsAdd");
90 request.setAttribute("movieId", id);
91 return "template";
92 }
93
94 @PostMapping("/movies/add/confirm")
95 public String getAddDiscussionMovieConfirm(Model model,
96 HttpServletRequest request,
97 @RequestParam String title,
98 @RequestParam String text){
99 User user = (User) request.getSession().getAttribute("user");
100 if(user == null){
101 return "redirect:/login";
102 }
103 Integer movie_id = (Integer) request.getSession().getAttribute("movieId");
104 request.getSession().setAttribute("movieId", null);
105 Optional<Movie> movieOp = movieService.findById(movie_id);
106 if(movieOp.isEmpty())
107 return "redirect:/movies";
108 Discussion discussion = new Discussion(title, text, user, movieOp.get(), Date.valueOf(LocalDate.now()));
109 discussionService.save(discussion);
110 return "redirect:/discussions";
111 }
112
113
114 @GetMapping("/persons/add/{id}")
115 public String getAddDiscussionForPerson(Model model,
116 @PathVariable Integer id,
117 HttpServletRequest request){
118 model.addAttribute("contentTemplate", "discussionsAdd");
119 request.setAttribute("personId", id);
120 return "template";
121 }
122
123 @PostMapping("/persons/add/confirm")
124 public String getAddDiscussionForPersonConfirm(Model model,
125 HttpServletRequest request,
126 @RequestParam String title,
127 @RequestParam String text){
128 User user = (User) request.getSession().getAttribute("user");
129 if(user == null){
130 return "redirect:/login";
131 }
132 Integer person_id = (Integer) request.getSession().getAttribute("personId");
133 Optional<Person> personOp = personService.findById(person_id);
134 request.getSession().setAttribute("personId", null);
135 if(personOp.isEmpty())
136 return "redirect:/discussions";
137 Discussion discussion = new Discussion(title, text, user, personOp.get(), Date.valueOf(LocalDate.now()));
138 discussionService.save(discussion);
139 return "redirect:/discussions";
140 }
141
142
143}
Note: See TracBrowser for help on using the repository browser.