source: Git/src/main/java/com/wediscussmovies/project/web/controller/DiscussionController.java@ e0ef1b1

main
Last change on this file since e0ef1b1 was e0ef1b1, checked in by Test <matonikolov77@…>, 2 years ago

Added CRUD for movies,persons,discussion,replies,genres
Added ajaxcalls

  • Property mode set to 100644
File size: 5.8 KB
Line 
1package com.wediscussmovies.project.web.controller;
2
3import com.wediscussmovies.project.LoggedUser;
4import com.wediscussmovies.project.model.Discussion;
5import com.wediscussmovies.project.model.Reply;
6import com.wediscussmovies.project.model.User;
7import com.wediscussmovies.project.service.DiscussionService;
8import com.wediscussmovies.project.service.MovieService;
9import com.wediscussmovies.project.service.PersonService;
10import com.wediscussmovies.project.service.ReplyService;
11import org.springframework.security.authentication.AnonymousAuthenticationToken;
12import org.springframework.security.core.Authentication;
13import org.springframework.security.core.context.SecurityContextHolder;
14import org.springframework.security.core.userdetails.UserDetails;
15import org.springframework.stereotype.Controller;
16import org.springframework.ui.Model;
17import org.springframework.web.bind.annotation.*;
18
19import java.util.List;
20
21@Controller
22@RequestMapping("/discussions")
23public class DiscussionController {
24
25 private final DiscussionService discussionService;
26 private final ReplyService replyService;
27 private final MovieService movieService;
28 private final PersonService personService;
29
30 public DiscussionController(DiscussionService discussionService, ReplyService replyService, MovieService movieService, PersonService personService) {
31 this.discussionService = discussionService;
32 this.replyService = replyService;
33 this.movieService = movieService;
34 this.personService = personService;
35 }
36
37 @GetMapping()
38 public String getDiscussions(@RequestParam(required = false) String titleSearch,
39 Model model){
40 /* 1.Validacija i na frontend so, da ne se isprakja baranjeto, ako titleSearch e null ili empty
41 da ne se preoptovaruva serverot so baranja za titleSearch koga e null!
42
43 */
44 List<Discussion> discussions = discussionService.listAllByTitle(titleSearch);
45 model.addAttribute("discussions", discussions);
46 model.addAttribute("contentTemplate", "discussionsList");
47 model.addAttribute("user",LoggedUser.getLoggedUser());
48 return "template";
49 }
50
51 @GetMapping("/{id}")
52 public String getDiscussion(
53 @PathVariable Integer id,
54 Model model){
55 /*
56 2. Moze da se vrati indikator deka takva diskusija ne postoi! - postaveno
57 */
58 try {
59 Discussion disc = discussionService.findById(id);
60 model.addAttribute("disc", disc);
61 model.addAttribute("contentTemplate", "discussion");
62 model.addAttribute("user",LoggedUser.getLoggedUser());
63 model.addAttribute("replies",this.replyService.findAllByDiscussion(disc));
64
65 return "template";
66 }
67 catch (RuntimeException exception){
68 return "redirect:/discussions?error="+exception.getMessage();
69
70 }
71 }
72 @GetMapping("/all/{id}")
73 public String getDiscussionForId(@PathVariable Integer id,@RequestParam Character type, Model model){
74
75 model.addAttribute("discussions", this.discussionService.findAllForPersonOrMovie(id,type));
76 model.addAttribute("contentTemplate", "discussionForType");
77 return "template";
78
79 }
80
81 @GetMapping("/{id}/replies")
82 public String getRepliesToDiscussion(
83 @PathVariable Integer id,
84 Model model){
85
86 try {
87 Discussion discussion = discussionService.findById(id);
88 model.addAttribute("discussion", discussion);
89 model.addAttribute("contentTemplate", "discussionReply");
90 return "template";
91 }
92 catch (RuntimeException exception){
93 return "redirect:/discussions?error="+exception.getMessage();
94
95 }
96
97 }
98
99
100 @GetMapping("/add/{id}")
101 public String getFormForEdit(Model model,
102 @PathVariable Integer id)
103 {
104 Discussion discussion = this.discussionService.findById(id);
105 setModelPropertiesForForm(model);
106 model.addAttribute("discussion", discussion);
107
108 return "template";
109 }
110 @GetMapping("/add")
111 public String getFormForAdd(Model model)
112 {
113 setModelPropertiesForForm(model);
114
115 return "template";
116 }
117
118
119 @PostMapping("/save")
120 public String saveDiscussion(
121 @RequestParam Integer idDiscussed,
122 @RequestParam String title,
123 @RequestParam String text,
124 @RequestParam Character type ){
125
126
127
128 try{
129
130 discussionService.save(type,idDiscussed, title, text, LoggedUser.getLoggedUser());
131 return "redirect:/discussions";
132
133 }
134
135 catch (RuntimeException exc){
136 return "redirect:/discussions?error="+exc.getMessage();
137
138 }
139 }
140
141 @PostMapping("/save/{discussionId}/")
142 public String editDiscussion(
143 @PathVariable Integer discussionId,
144 @RequestParam String title,
145 @RequestParam String text,
146 @RequestParam Character type,
147 @RequestParam Integer idDiscussed
148 ){
149
150
151
152
153 try{
154
155
156 discussionService.edit(discussionId,type,idDiscussed, title, text);
157 return "redirect:/discussions";
158
159 }
160
161 catch (RuntimeException exc){
162 return "redirect:/discussions?error="+exc.getMessage();
163
164 }
165 }
166
167 private void setModelPropertiesForForm(Model model){
168 model.addAttribute("movies",this.movieService.listAll());
169 model.addAttribute("persons",this.personService.findAll());
170 model.addAttribute("contentTemplate", "discussionsAdd");
171
172 }
173
174
175}
Note: See TracBrowser for help on using the repository browser.