Skip to content

Commit e2b142d

Browse files
authored
Merge pull request #18 from CodeURJC-DAW-2021-22/feature/apigraph
Add graph data to API
2 parents f34ccd7 + 5336907 commit e2b142d

File tree

5 files changed

+75
-17
lines changed

5 files changed

+75
-17
lines changed

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

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.youdemy.model.Course;
44
import com.youdemy.model.CourseBoughtTimes;
5+
import com.youdemy.service.CourseBoughtTimesService;
56
import com.youdemy.service.CourseService;
67
import com.youdemy.service.OrderPService;
78
import com.youdemy.service.UserService;
@@ -38,7 +39,7 @@ public class UserController {
3839
private PasswordEncoder passwordEncoder;
3940

4041
@Autowired
41-
private CourseService courseService;
42+
private CourseBoughtTimesService courseBoughtTimesService;
4243

4344
@ModelAttribute
4445
public void addAttributes(Model model, HttpServletRequest request) {
@@ -108,14 +109,8 @@ public String showUserInfo(Model model, @PathVariable long id, HttpServletReques
108109
}
109110

110111
if (model.getAttribute("teacher").equals(true)) {
111-
ArrayList<Course> teacherCourses = (ArrayList<Course>) courseService.findByAuthor(user);
112-
ArrayList<CourseBoughtTimes> coursesBoughtTimes = new ArrayList<>();
113-
114-
teacherCourses.forEach(course -> {
115-
CourseBoughtTimes courseBoughtTimes = new CourseBoughtTimes(course.getTitle(), orderPService.countByCourse(course.getId()));
116-
117-
coursesBoughtTimes.add(courseBoughtTimes);
118-
});
112+
ArrayList<CourseBoughtTimes> coursesBoughtTimes =
113+
new ArrayList<>(courseBoughtTimesService.getCourseBoughtTimes(user));
119114

120115
model.addAttribute("coursesBoughtTimes", coursesBoughtTimes);
121116
}

backend/src/main/java/com/youdemy/controller/api/UserRestController.java

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,22 @@
22

33
import java.net.URI;
44
import java.security.Principal;
5+
import java.util.ArrayList;
6+
import java.util.List;
57

68
import javax.servlet.http.HttpServletRequest;
79

10+
import com.youdemy.model.Course;
11+
import com.youdemy.model.CourseBoughtTimes;
12+
import com.youdemy.service.CourseBoughtTimesService;
13+
import com.youdemy.service.CourseService;
14+
import com.youdemy.service.OrderPService;
815
import org.springframework.beans.factory.annotation.Autowired;
916
import org.springframework.data.domain.Page;
1017
import org.springframework.http.HttpStatus;
1118
import org.springframework.http.ResponseEntity;
1219
import org.springframework.security.crypto.password.PasswordEncoder;
20+
import org.springframework.ui.Model;
1321
import org.springframework.web.bind.annotation.DeleteMapping;
1422
import org.springframework.web.bind.annotation.GetMapping;
1523
import org.springframework.web.bind.annotation.PathVariable;
@@ -35,6 +43,12 @@ public class UserRestController {
3543

3644
@Autowired
3745
private UserService userService;
46+
47+
@Autowired
48+
private CourseService courseService;
49+
50+
@Autowired
51+
private CourseBoughtTimesService courseBoughtTimesService;
3852

3953
@Autowired
4054
private PasswordEncoder passwordEncoder;
@@ -75,7 +89,6 @@ public ResponseEntity<User> registerNewUser(@RequestBody User user) {
7589
if(user.getName().isBlank() || userService.existByEmail(user.getEmail())){
7690
return new ResponseEntity<>(null, HttpStatus.NOT_ACCEPTABLE);
7791
} else {
78-
7992
user.setEncodedPassword(passwordEncoder.encode(user.getEncodedPassword()));
8093
userService.save(user);
8194
URI location = fromCurrentRequest().path("/{id}").buildAndExpand(user.getId()).toUri();
@@ -91,10 +104,25 @@ public ResponseEntity<User> deleteUser(@PathVariable long id) {
91104
return new ResponseEntity<>(null, HttpStatus.OK);
92105
} else {
93106
return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);
94-
}
107+
}
108+
}
109+
110+
@RequestMapping("/{id}/graph")
111+
public ResponseEntity<List<CourseBoughtTimes>> graph(@PathVariable long id) {
112+
if (userService.exist(id)) {
113+
User user = userService.findById(id).get();
114+
115+
if (user.getRoles().contains("TEACHER")) {
116+
ArrayList<CourseBoughtTimes> coursesBoughtTimes =
117+
new ArrayList<>(courseBoughtTimesService.getCourseBoughtTimes(user));
118+
URI location = fromCurrentRequest().path("/{id}").buildAndExpand(user.getId()).toUri();
119+
120+
return ResponseEntity.created(location).body(coursesBoughtTimes);
121+
}
122+
}
123+
124+
return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);
95125
}
96-
97-
98126

99127
}
100128

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.youdemy.service;
2+
3+
import com.youdemy.model.Course;
4+
import com.youdemy.model.CourseBoughtTimes;
5+
import com.youdemy.model.User;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.stereotype.Service;
8+
9+
import java.util.ArrayList;
10+
import java.util.List;
11+
12+
@Service
13+
public class CourseBoughtTimesService {
14+
15+
@Autowired
16+
private CourseService courseService;
17+
18+
@Autowired
19+
private OrderPService orderPService;
20+
21+
public List<CourseBoughtTimes> getCourseBoughtTimes(User user) {
22+
ArrayList<Course> teacherCourses = (ArrayList<Course>) courseService.findByAuthor(user);
23+
ArrayList<CourseBoughtTimes> coursesBoughtTimes = new ArrayList<>();
24+
25+
teacherCourses.forEach(course -> {
26+
CourseBoughtTimes courseBoughtTimes = new CourseBoughtTimes(course.getTitle(), orderPService.countByCourse(course.getId()));
27+
28+
coursesBoughtTimes.add(courseBoughtTimes);
29+
});
30+
31+
return coursesBoughtTimes;
32+
}
33+
34+
}

backend/src/main/resources/application.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ spring.mustache.suffix=.html
22
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
33
spring.datasource.driver-class-name=org.postgresql.Driver
44
spring.datasource.username=postgres
5-
spring.datasource.password=1234
5+
spring.datasource.password=pass
66
spring.jpa.hibernate.ddl-auto=create-drop
77
spring.datasource.hikari.auto-commit=false
88
spring.mustache.cache=false

backend/target/classes/application.properties

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
spring.mustache.suffix=.html
2-
spring.datasource.url=jdbc:postgresql://172.17.0.2/youdemydb
2+
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
3+
spring.datasource.driver-class-name=org.postgresql.Driver
34
spring.datasource.username=postgres
4-
spring.datasource.password=password
5+
spring.datasource.password=pass
56
spring.jpa.hibernate.ddl-auto=create-drop
67
spring.datasource.hikari.auto-commit=false
78
spring.mustache.cache=false
@@ -14,7 +15,7 @@ spring.jpa.properties.hibernate.format_sql=true
1415
logging.level.org.hibernate.SQL=DEBUG
1516
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
1617

17-
server.port = 8443
18+
server.port = ${PORT:8080}
1819
server.ssl.key-store = classpath:keystore.jks
1920
server.ssl.key-store-password = password
2021
server.ssl.key-password = secret

0 commit comments

Comments
 (0)