Skip to content

Commit 2d20009

Browse files
authored
Merge pull request #14 from CodeURJC-DAW-2021-22/bug/courseInfoNotShowing
Bug/course info not showing
2 parents 023619e + 9b01d49 commit 2d20009

31 files changed

+385
-288
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.youdemy.controller;
2+
3+
import com.youdemy.service.UserService;
4+
import org.springframework.ui.Model;
5+
6+
import javax.servlet.http.HttpServletRequest;
7+
import java.security.Principal;
8+
9+
public class BasicAttributes {
10+
11+
public static void addAttributes(Model model, HttpServletRequest request, UserService userService) {
12+
Principal principal = request.getUserPrincipal();
13+
14+
if (principal != null) {
15+
16+
model.addAttribute("logged", true);
17+
model.addAttribute("userName", principal.getName());
18+
model.addAttribute("admin", request.isUserInRole("ADMIN"));
19+
model.addAttribute("teacher", request.isUserInRole("TEACHER"));
20+
model.addAttribute("user", request.isUserInRole("USER"));
21+
model.addAttribute("isTeacherOrAdmin", (request.isUserInRole("ADMIN") || request.isUserInRole("TEACHER")));
22+
model.addAttribute("userId", userService.findByFirstName(principal.getName()).getId());
23+
24+
} else {
25+
model.addAttribute("logged", false);
26+
}
27+
}
28+
29+
}

backend/src/main/java/com/youdemy/controller/CourseController.java

Lines changed: 66 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55

66
import com.fasterxml.jackson.databind.ObjectMapper;
77
import com.youdemy.model.Lesson;
8+
import com.youdemy.model.OrderP;
89
import com.youdemy.model.User;
910
import com.youdemy.repository.UserRepository;
11+
import com.youdemy.service.OrderPService;
1012
import com.youdemy.service.UserService;
1113

12-
import org.json.JSONObject;
1314
import org.springframework.beans.factory.annotation.Autowired;
1415
import org.springframework.data.domain.Page;
1516
import org.springframework.data.domain.PageRequest;
@@ -41,24 +42,12 @@ public class CourseController {
4142
@Autowired
4243
private UserRepository userRepository;
4344

45+
@Autowired
46+
private OrderPService orderPService;
47+
4448
@ModelAttribute
4549
public void addAttributes(Model model, HttpServletRequest request) {
46-
Principal principal = request.getUserPrincipal();
47-
48-
if (principal != null) {
49-
Optional<User> user = userRepository.findByFirstName(principal.getName());
50-
51-
model.addAttribute("logged", true);
52-
model.addAttribute("userName", principal.getName());
53-
model.addAttribute("userId", user.get().getId());
54-
model.addAttribute("admin", request.isUserInRole("ADMIN"));
55-
model.addAttribute("teacher", request.isUserInRole("TEACHER"));
56-
model.addAttribute("user", request.isUserInRole("USER"));
57-
model.addAttribute("isTeacherOrAdmin", (request.isUserInRole("ADMIN") || request.isUserInRole("TEACHER")));
58-
59-
} else {
60-
model.addAttribute("logged", false);
61-
}
50+
BasicAttributes.addAttributes(model, request, userService);
6251
}
6352

6453
@GetMapping(value = {
@@ -78,6 +67,45 @@ public String showCourses(Model model,
7867
return "courses";
7968
}
8069

70+
@GetMapping("/user/{userId}")
71+
public String showCourses(Model model,
72+
@PathVariable long userId,
73+
@RequestParam Optional<String> search,
74+
HttpServletRequest request) {
75+
if(model.getAttribute("logged").equals(true)) {
76+
boolean isAdmin = model.getAttribute("admin").equals(true);
77+
Optional<User> user = userRepository.findByFirstName(model.getAttribute("userName").toString());
78+
79+
if (isAdmin) return "redirect:/admin";
80+
81+
if (user.get().getId() != userId) return "redirect:/courses";
82+
83+
if (model.getAttribute("teacher").equals(true)) {
84+
Page<Course> teacherCourses = courseService.findByAuthor(user.get(),
85+
PageRequest.of(0, 6));
86+
87+
model.addAttribute("teacherCourses", teacherCourses);
88+
model.addAttribute("coursesNumResults", teacherCourses.getTotalElements());
89+
model.addAttribute("totalPages", teacherCourses.getTotalPages());
90+
}
91+
92+
if (model.getAttribute("user").equals(true)) {
93+
Page<Course> userCourses = courseService.findByUser(userId,
94+
PageRequest.of(0, 6));
95+
96+
model.addAttribute("courses", userCourses);
97+
model.addAttribute("coursesNumResults", userCourses.getTotalElements());
98+
model.addAttribute("totalPages", userCourses.getTotalPages());
99+
}
100+
101+
model.addAttribute("search", search.orElse(null));
102+
103+
return "myCourses";
104+
}
105+
106+
return "redirect:/courses";
107+
}
108+
81109
@RequestMapping(value = "/page", method = RequestMethod.GET)
82110
@ResponseBody
83111
public Page<Course> getCoursesInPage(@RequestParam Optional<Integer> page,
@@ -108,16 +136,32 @@ public String showCourse(Model model, @PathVariable long id, HttpServletRequest
108136
if(principal != null) {
109137
String userName = principal.getName();
110138
Optional<User> user = userRepository.findByFirstName(userName);
111-
long userId;
112-
userId = user.get().getId();
139+
long userId = user.get().getId();
113140
model.addAttribute("userId", userId);
114-
model.addAttribute("userName", userName);
141+
115142
if(course.get().getAuthor().getId() == userId) {
116143
model.addAttribute("owner", true);
144+
model.addAttribute("hasAccess", true);
117145
}
118-
146+
147+
ArrayList<OrderP> orders = new ArrayList<>(orderPService.findByUserId(userId));
148+
149+
orders.forEach(order -> {
150+
Course orderCourse = courseService.findById(order.getCourse()).get();
151+
if(orderCourse.getId() == course.get().getId())
152+
model.addAttribute("hasAccess", true);
153+
});
119154
}
120-
155+
156+
// Empty lesson video urls if user doesn't have access to course
157+
if(model.getAttribute("hasAccess") == null) {
158+
course.get().getLessons().forEach(lesson -> {
159+
lesson.setVideoUrl("");
160+
});
161+
}
162+
163+
model.addAttribute("course", course.get());
164+
121165
return "course";
122166
} else {
123167
return "redirect:/courses";

backend/src/main/java/com/youdemy/controller/HomeController.java

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import com.youdemy.model.Lesson;
1717
import com.youdemy.model.OrderP;
1818
import com.youdemy.model.User;
19-
import com.youdemy.repository.UserRepository;
2019
import com.youdemy.service.CourseService;
2120
import com.youdemy.service.LessonService;
2221
import com.youdemy.service.UserService;
@@ -37,28 +36,10 @@ public class HomeController {
3736

3837
@Autowired
3938
private OrderPService orderService;
40-
41-
@Autowired
42-
private UserRepository userRepository;
4339

4440
@ModelAttribute
4541
public void addAttributes(Model model, HttpServletRequest request) {
46-
Principal principal = request.getUserPrincipal();
47-
48-
if (principal != null) {
49-
Optional<User> user = userRepository.findByFirstName(principal.getName());
50-
51-
model.addAttribute("logged", true);
52-
model.addAttribute("userName", principal.getName());
53-
model.addAttribute("userId", user.get().getId());
54-
model.addAttribute("admin", request.isUserInRole("ADMIN"));
55-
model.addAttribute("teacher", request.isUserInRole("TEACHER"));
56-
model.addAttribute("user", request.isUserInRole("USER"));
57-
model.addAttribute("isTeacherOrAdmin", (request.isUserInRole("ADMIN") || request.isUserInRole("TEACHER")));
58-
59-
} else {
60-
model.addAttribute("logged", false);
61-
}
42+
BasicAttributes.addAttributes(model, request, userService);
6243
}
6344

6445

backend/src/main/java/com/youdemy/controller/OrderPController.java

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -44,45 +44,27 @@ public class OrderPController {
4444
@Autowired
4545
private UserService userService;
4646

47-
@Autowired
48-
private OrderPRepository orderRepository;
49-
5047
@Autowired
5148
private UserRepository userRepository;
52-
49+
5350
@ModelAttribute
5451
public void addAttributes(Model model, HttpServletRequest request) {
55-
Principal principal = request.getUserPrincipal();
56-
57-
if (principal != null) {
58-
Optional<User> user = userRepository.findByFirstName(principal.getName());
59-
60-
model.addAttribute("logged", true);
61-
model.addAttribute("userName", principal.getName());
62-
model.addAttribute("userId", user.get().getId());
63-
model.addAttribute("admin", request.isUserInRole("ADMIN"));
64-
model.addAttribute("teacher", request.isUserInRole("TEACHER"));
65-
model.addAttribute("user", request.isUserInRole("USER"));
66-
model.addAttribute("isTeacherOrAdmin", (request.isUserInRole("ADMIN") || request.isUserInRole("TEACHER")));
67-
68-
} else {
69-
model.addAttribute("logged", false);
70-
}
52+
BasicAttributes.addAttributes(model, request, userService);
7153
}
7254

7355
@GetMapping(value = {
7456
"/",
7557
""
7658
})
7759
public String showOrders(Model model, HttpServletRequest request) {
78-
60+
7961
Principal principal = request.getUserPrincipal();
80-
62+
8163
if (principal != null) { //checkin if user registered can is trying to access to other users orders
8264
String userName = principal.getName();
8365
Optional<User> pUser = userRepository.findByFirstName(userName);
84-
long userId = pUser.get().getId();
85-
model.addAttribute("orders", orderRepository.findByUser(userId));
66+
long userId = pUser.get().getId();
67+
model.addAttribute("orders", orderService.findByUserId(userId));
8668
}
8769

8870
return "orders";
@@ -152,7 +134,7 @@ public String createOrder(Model model, @RequestParam long userId ,
152134
dbOrder.setUserName(uname);
153135
dbOrder.setCourseTitle(ctitle);
154136
dbOrder.setDataCard(ccnumber);
155-
orderRepository.save(dbOrder);
137+
orderService.save(dbOrder);
156138

157139
model.addAttribute("order", dbOrder);
158140
model.addAttribute("user", dbUser);

backend/src/main/java/com/youdemy/controller/UserController.java

Lines changed: 18 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.youdemy.controller;
22

3+
import com.youdemy.service.OrderPService;
4+
import com.youdemy.service.UserService;
35
import org.springframework.beans.factory.annotation.Autowired;
46
import org.springframework.security.crypto.password.PasswordEncoder;
57
import org.springframework.stereotype.Controller;
@@ -10,50 +12,28 @@
1012
import org.springframework.web.bind.annotation.RequestMapping;
1113
import org.springframework.web.bind.annotation.RequestParam;
1214

13-
import com.youdemy.model.Course;
14-
import com.youdemy.model.OrderP;
1515
import com.youdemy.model.User;
16-
import com.youdemy.repository.CourseRepository;
17-
import com.youdemy.repository.OrderPRepository;
18-
import com.youdemy.repository.UserRepository;
19-
import com.youdemy.service.CourseService;
20-
import com.youdemy.service.UserService;
21-
22-
import antlr.collections.List;
2316

2417
import javax.servlet.http.HttpServletRequest;
2518
import java.security.Principal;
2619
import java.util.ArrayList;
2720
import java.util.Objects;
28-
import java.util.Optional;
2921

3022
@Controller
3123
public class UserController {
32-
24+
3325
@Autowired
34-
private UserRepository userRepository;
35-
26+
private UserService userService;
27+
3628
@Autowired
37-
private OrderPRepository orderRepository;
29+
private OrderPService orderPService;
3830

3931
@Autowired
4032
private PasswordEncoder passwordEncoder;
4133

4234
@ModelAttribute
4335
public void addAttributes(Model model, HttpServletRequest request) {
44-
Principal principal = request.getUserPrincipal();
45-
46-
if (principal != null) {
47-
Optional<User> user = userRepository.findByFirstName(principal.getName());
48-
49-
model.addAttribute("logged", true);
50-
model.addAttribute("userName", principal.getName());
51-
model.addAttribute("userId", user.get().getId());
52-
model.addAttribute("admin", request.isUserInRole("ADMIN"));
53-
54-
} else {
55-
model.addAttribute("logged", false);
56-
}
36+
BasicAttributes.addAttributes(model, request, userService);
5737
}
5838

5939
@RequestMapping("/signin")
@@ -101,25 +81,25 @@ public String userError() {
10181
@PostMapping("/signup")
10282
public String registerUser(@RequestParam String userFirstName, @RequestParam String userLastName, @RequestParam String userEmail, @RequestParam String userPassword, @RequestParam String userRole) {
10383
User user = new User(userFirstName, userLastName, userEmail, passwordEncoder.encode(userPassword), userRole);
104-
userRepository.save(user);
84+
userService.save(user);
10585
return "signin";
10686
}
107-
87+
10888
@RequestMapping("/myaccount/{id}")
109-
public String showUserInfo(Model model, @PathVariable long id, HttpServletRequest request) {
89+
public String showUserInfo(Model model, @PathVariable long id, HttpServletRequest request) {
11090
Principal principal = request.getUserPrincipal();
111-
91+
11292
if(principal != null) {
11393
String userName = principal.getName();
114-
Optional<User> user = userRepository.findByFirstName(userName);
94+
User user = userService.findByFirstName(userName);
11595
long userId;
116-
userId = user.get().getId();
96+
userId = user.getId();
11797
if (userId != id) {
11898
return "accessDenied";
119-
}
120-
model.addAttribute("orders", (ArrayList) orderRepository.findByUser(userId));
121-
model.addAttribute("user", user.get());
122-
}
99+
}
100+
model.addAttribute("orders", orderPService.findByUserId(userId));
101+
model.addAttribute("user", user);
102+
}
123103
return "myAccount";
124104
}
125-
}
105+
}

0 commit comments

Comments
 (0)