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

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

Changed DiscussionRepository and DiscussionServiceImpl for fetching likes

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