-
Notifications
You must be signed in to change notification settings - Fork 0
/
CardController.java
82 lines (74 loc) · 3.92 KB
/
CardController.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package innotutor.innotutor_backend.controller.card;
import innotutor.innotutor_backend.dto.enrollment.EnrollmentDTO;
import innotutor.innotutor_backend.dto.searcher.UserCard;
import innotutor.innotutor_backend.security.CustomPrincipal;
import innotutor.innotutor_backend.service.CardEnrollService;
import innotutor.innotutor_backend.service.CardService;
import innotutor.innotutor_backend.service.UserService;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE)
@CrossOrigin(origins = "*", allowedHeaders = "*", methods = {RequestMethod.GET, RequestMethod.POST, RequestMethod.DELETE})
public class CardController {
private final transient UserService userService;
private final transient CardService cardService;
private final transient CardEnrollService cardEnrollService;
public CardController(final UserService userService, final CardService cardService, final CardEnrollService cardEnrollService) {
this.userService = userService;
this.cardService = cardService;
this.cardEnrollService = cardEnrollService;
}
@GetMapping(value = "/card/{cardId}", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<UserCard> getCard(@PathVariable final Long cardId, @AuthenticationPrincipal final CustomPrincipal user) {
if (cardId == null) {
new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
final UserCard card = cardService.getCardFullInfoById(cardId, userService.getUserId(user));
return card == null
? new ResponseEntity<>(HttpStatus.NOT_FOUND)
: new ResponseEntity<>(card, HttpStatus.OK);
}
@PostMapping(value = "/enroll", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<EnrollmentDTO> postTutorCardEnroll(@RequestBody final EnrollmentDTO enrollmentDTO,
@AuthenticationPrincipal final CustomPrincipal user) {
ResponseEntity<EnrollmentDTO> responseEntity;
if (enrollmentDTO == null) {
responseEntity = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
enrollmentDTO.setEnrollerId(userService.getUserId(user));
final EnrollmentDTO result = cardEnrollService.postCardEnroll(enrollmentDTO);
responseEntity = result == null
? new ResponseEntity<>(HttpStatus.BAD_REQUEST)
: new ResponseEntity<>(result, HttpStatus.CREATED);
}
return responseEntity;
}
@DeleteMapping(value = "/unenroll/{cardId}", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> deleteCardEnrollByCardId(@PathVariable final Long cardId,
@AuthenticationPrincipal final CustomPrincipal user) {
ResponseEntity<?> response;
if (cardId == null) {
response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
response = cardEnrollService.deleteCardEnrollByCardId(userService.getUserId(user), cardId)
? new ResponseEntity<>(HttpStatus.OK)
: new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
return response;
}
public ResponseEntity<?> deleteCardById(final Long cardId, final CustomPrincipal user) {
ResponseEntity<?> response;
if (cardId == null) {
response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
response = cardService.deleteCardById(cardId, userService.getUserId(user))
? new ResponseEntity<>(HttpStatus.OK)
: new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
return response;
}
}