Skip to content

Commit

Permalink
Merge pull request #48 from InnoTutor/develop
Browse files Browse the repository at this point in the history
Waiting list, Card info, Schedule, Session, Rating
  • Loading branch information
SMore-Napi committed Jan 12, 2022
2 parents aa4a945 + e35fdb2 commit de2e308
Show file tree
Hide file tree
Showing 29 changed files with 661 additions and 272 deletions.
@@ -1,6 +1,7 @@
package innotutor.innotutor_backend.controller;

import innotutor.innotutor_backend.dto.UserDTO;
import innotutor.innotutor_backend.dto.card.SessionRatingDTO;
import innotutor.innotutor_backend.dto.card.SubjectDTO;
import innotutor.innotutor_backend.dto.session.SessionDTO;
import innotutor.innotutor_backend.dto.session.sessionsettings.SessionFormatDTO;
Expand All @@ -18,7 +19,8 @@

@RestController
@RequestMapping(value = "/session", produces = MediaType.APPLICATION_JSON_VALUE)
@CrossOrigin(origins = "*", allowedHeaders = "*", methods = {RequestMethod.GET, RequestMethod.POST})
@CrossOrigin(origins = "*", allowedHeaders = "*",
methods = {RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT, RequestMethod.DELETE})
public class SessionController {
private final transient SessionService sessionService;
private final transient UserService userService;
Expand Down Expand Up @@ -49,25 +51,76 @@ public ResponseEntity<List<UserDTO>> getStudents(
@RequestParam(name = "format", required = false) final String format,
@RequestParam(name = "type", required = false) final String type,
@AuthenticationPrincipal final CustomPrincipal user) {
final List<UserDTO> students = sessionService.filterStudentsForSession(userService.getUserId(user), subject, format, type);
final List<UserDTO> students
= sessionService.filterStudentsForSession(userService.getUserId(user), subject, format, type);
return students == null
? new ResponseEntity<>(HttpStatus.NOT_FOUND)
: new ResponseEntity<>(students, HttpStatus.OK);
}

@PostMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<SessionDTO> postTutorCardEnroll(@RequestBody final SessionDTO sessionDTO,
@AuthenticationPrincipal final CustomPrincipal user) {
public ResponseEntity<SessionDTO> postSession(@RequestBody final SessionDTO sessionDTO,
@AuthenticationPrincipal final CustomPrincipal user) {
ResponseEntity<SessionDTO> response;
if (sessionDTO == null) {
response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
sessionDTO.setTutorId(userService.getUserId(user));
final SessionDTO result = sessionService.postSession(sessionDTO);
final SessionDTO result = sessionService.postSession(sessionDTO, userService.getUserId(user));
response = result == null
? new ResponseEntity<>(HttpStatus.BAD_REQUEST)
: new ResponseEntity<>(result, HttpStatus.CREATED);
}
return response;
}

@DeleteMapping(value = "/cancel/{sessionId}", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> cancelSession(@PathVariable final Long sessionId,
@AuthenticationPrincipal final CustomPrincipal user) {
ResponseEntity<?> response;
if (sessionId == null) {
response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
Boolean result = sessionService.cancelSession(sessionId, userService.getUserId(user));
if (result == null) {
response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
response = result
? new ResponseEntity<>(HttpStatus.OK)
: new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
return response;
}

@PutMapping(value = "/rate", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<SessionRatingDTO> rateSession(@RequestBody final SessionRatingDTO sessionRatingDTO,
@AuthenticationPrincipal final CustomPrincipal user) {
ResponseEntity<SessionRatingDTO> response;
if (sessionRatingDTO == null) {
response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
final SessionRatingDTO result = sessionService.rateSession(sessionRatingDTO, userService.getUserId(user));
if (result == null) {
response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
response = new ResponseEntity<>(result, HttpStatus.OK);
}
}
return response;
}

@DeleteMapping(value = "/rate/{sessionId}", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> deleteRating(@PathVariable final Long sessionId,
@AuthenticationPrincipal final CustomPrincipal user) {
ResponseEntity<?> response;
if (sessionId == null) {
response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
response = sessionService.deleteRating(sessionId, userService.getUserId(user))
? new ResponseEntity<>(HttpStatus.OK)
: new ResponseEntity<>(HttpStatus.NOT_FOUND);

}
return response;
}
}
@@ -1,7 +1,7 @@
package innotutor.innotutor_backend.controller.card;

import innotutor.innotutor_backend.dto.card.CardDTO;
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;
Expand All @@ -28,11 +28,11 @@ public CardController(final UserService userService, final CardService cardServi
}

@GetMapping(value = "/card/{cardId}", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<CardDTO> getCard(@PathVariable final Long cardId, @AuthenticationPrincipal final CustomPrincipal user) {
public ResponseEntity<UserCard> getCard(@PathVariable final Long cardId, @AuthenticationPrincipal final CustomPrincipal user) {
if (cardId == null) {
new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
final CardDTO card = cardService.getCardById(cardId, userService.getUserId(user));
final UserCard card = cardService.getCardFullInfoById(cardId, userService.getUserId(user));
return card == null
? new ResponseEntity<>(HttpStatus.NOT_FOUND)
: new ResponseEntity<>(card, HttpStatus.OK);
Expand Down Expand Up @@ -73,7 +73,7 @@ public ResponseEntity<?> deleteCardById(final Long cardId, final CustomPrincipal
if (cardId == null) {
response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
response = cardService.deleteCardById(userService.getUserId(user), cardId)
response = cardService.deleteCardById(cardId, userService.getUserId(user))
? new ResponseEntity<>(HttpStatus.OK)
: new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
Expand Down
@@ -1,6 +1,5 @@
package innotutor.innotutor_backend.controller.card;

import innotutor.innotutor_backend.controller.card.CardController;
import innotutor.innotutor_backend.dto.card.CardDTO;
import innotutor.innotutor_backend.dto.card.SubjectDTO;
import innotutor.innotutor_backend.security.CustomPrincipal;
Expand Down Expand Up @@ -76,8 +75,7 @@ public ResponseEntity<CardDTO> postRequestCard(@RequestBody final CardDTO cardDT
if (cardDTO == null) {
response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
cardDTO.setCreatorId(userService.getUserId(user));
final CardDTO result = cardService.postRequestCard(cardDTO);
final CardDTO result = cardService.postRequestCard(cardDTO, userService.getUserId(user));
response = result == null
? new ResponseEntity<>(HttpStatus.BAD_REQUEST)
: new ResponseEntity<>(result, HttpStatus.CREATED);
Expand All @@ -93,9 +91,7 @@ public ResponseEntity<CardDTO> putRequestCard(@PathVariable final Long cardId,
if (cardDTO == null || cardId == null) {
response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
cardDTO.setCreatorId(userService.getUserId(user));
cardDTO.setCardId(cardId);
final CardDTO result = cardService.putRequestCard(cardDTO);
final CardDTO result = cardService.putRequestCard(cardId, cardDTO, userService.getUserId(user));
if (result == null) {
response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
Expand Down
@@ -1,6 +1,5 @@
package innotutor.innotutor_backend.controller.card;

import innotutor.innotutor_backend.controller.card.CardController;
import innotutor.innotutor_backend.dto.card.CardDTO;
import innotutor.innotutor_backend.dto.card.SubjectDTO;
import innotutor.innotutor_backend.security.CustomPrincipal;
Expand Down Expand Up @@ -76,8 +75,7 @@ public ResponseEntity<CardDTO> postCvCard(@RequestBody final CardDTO cardDTO,
if (cardDTO == null) {
response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
cardDTO.setCreatorId(userService.getUserId(user));
final CardDTO result = cardService.postCvCard(cardDTO);
final CardDTO result = cardService.postCvCard(cardDTO, userService.getUserId(user));
response = result == null
? new ResponseEntity<>(HttpStatus.BAD_REQUEST)
: new ResponseEntity<>(result, HttpStatus.CREATED);
Expand All @@ -93,9 +91,7 @@ public ResponseEntity<CardDTO> putCvCard(@PathVariable final Long cardId,
if (cardDTO == null || cardId == null) {
response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
cardDTO.setCreatorId(userService.getUserId(user));
cardDTO.setCardId(cardId);
final CardDTO result = cardService.putCvCard(cardDTO);
final CardDTO result = cardService.putCvCard(cardId, cardDTO, userService.getUserId(user));
if (result == null) {
response = new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} else {
Expand Down
@@ -0,0 +1,32 @@
package innotutor.innotutor_backend.controller.user;

import innotutor.innotutor_backend.dto.session.ScheduleDTO;
import innotutor.innotutor_backend.security.CustomPrincipal;
import innotutor.innotutor_backend.service.SessionService;
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(value = "/schedule", produces = MediaType.APPLICATION_JSON_VALUE)
@CrossOrigin(origins = "*", allowedHeaders = "*", methods = {RequestMethod.GET})
public class ScheduleController {
private final transient SessionService sessionService;
private final transient UserService userService;

public ScheduleController(final SessionService sessionService, final UserService userService) {
this.sessionService = sessionService;
this.userService = userService;
}

@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<ScheduleDTO> getSchedule(@AuthenticationPrincipal final CustomPrincipal user) {
final ScheduleDTO schedule = sessionService.getSchedule(userService.getUserId(user));
return schedule == null
? new ResponseEntity<>(HttpStatus.NOT_FOUND)
: new ResponseEntity<>(schedule, HttpStatus.OK);
}
}
Expand Up @@ -14,19 +14,19 @@
@RestController
@RequestMapping(value = "/my-students", produces = MediaType.APPLICATION_JSON_VALUE)
@CrossOrigin(origins = "*", allowedHeaders = "*", methods = {RequestMethod.GET, RequestMethod.PUT, RequestMethod.DELETE})
public class MyStudentsController {
public class StudentsController {
private final transient StudentsService studentsService;
private final transient CardEnrollService cardEnrollService;
private final transient UserService userService;

public MyStudentsController(final StudentsService studentsService, final CardEnrollService cardEnrollService, final UserService userService) {
public StudentsController(final StudentsService studentsService, final CardEnrollService cardEnrollService, final UserService userService) {
this.studentsService = studentsService;
this.cardEnrollService = cardEnrollService;
this.userService = userService;
}

@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<RequestedStudentsListInfoDTO> getUserStudentsList(@AuthenticationPrincipal final CustomPrincipal user) {
public ResponseEntity<RequestedStudentsListInfoDTO> getStudentsList(@AuthenticationPrincipal final CustomPrincipal user) {
final RequestedStudentsListInfoDTO students = studentsService.getUserStudentsListFullInfo(userService.getUserId(user));
return students == null
? new ResponseEntity<>(HttpStatus.NOT_FOUND)
Expand Down
Expand Up @@ -14,21 +14,21 @@
@RestController
@RequestMapping(value = "/my-tutors", produces = MediaType.APPLICATION_JSON_VALUE)
@CrossOrigin(origins = "*", allowedHeaders = "*", methods = {RequestMethod.GET, RequestMethod.PUT, RequestMethod.DELETE})
public class MyTutorsController {
public class TutorsController {
private final transient TutorsService tutorsService;
private final transient CardEnrollService cardEnrollService;
private final transient UserService userService;

public MyTutorsController(final TutorsService tutorsService,
final CardEnrollService cardEnrollService,
final UserService userService) {
public TutorsController(final TutorsService tutorsService,
final CardEnrollService cardEnrollService,
final UserService userService) {
this.tutorsService = tutorsService;
this.cardEnrollService = cardEnrollService;
this.userService = userService;
}

@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<RespondedTutorsListInfoDTO> getUserTutorsList(
public ResponseEntity<RespondedTutorsListInfoDTO> getTutorsList(
@AuthenticationPrincipal final CustomPrincipal user) {
final RespondedTutorsListInfoDTO tutors
= tutorsService.getUserTutorsListFullInfo(userService.getUserId(user));
Expand Down
@@ -0,0 +1,14 @@
package innotutor.innotutor_backend.dto.card;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class SessionRatingDTO {
private Long sessionId;
private Integer mark;
private String feedback;
}
Expand Up @@ -10,6 +10,8 @@
@NoArgsConstructor
@AllArgsConstructor
public class WaitingListDTO {
private List<EnrollmentDTO> students;
private List<EnrollmentDTO> tutors;
private List<EnrollmentDTO> studentsRequested;
private List<EnrollmentDTO> studentsRejected;
private List<EnrollmentDTO> tutorsRequested;
private List<EnrollmentDTO> tutorsRejected;
}
@@ -0,0 +1,17 @@
package innotutor.innotutor_backend.dto.session;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ScheduleDTO {
private List<SessionDTO> studyingSessionsConducted;
private List<SessionDTO> studyingSessionsUpcoming;
private List<SessionDTO> teachingSessionsConducted;
private List<SessionDTO> teachingSessionsUpcoming;
}
Expand Up @@ -5,8 +5,7 @@
import lombok.Data;
import lombok.NoArgsConstructor;

import java.sql.Date;
import java.sql.Time;
import java.time.LocalDateTime;
import java.util.List;

@Data
Expand All @@ -17,12 +16,10 @@ public class SessionDTO {
private Long tutorId;
private List<Long> studentIDsList;
private String subject;
@JsonFormat(pattern = "dd/MM/yyyy")
private Date date;
@JsonFormat(pattern = "hh:mm:ss")
private Time startTime;
@JsonFormat(pattern = "hh:mm:ss")
private Time endTime;
@JsonFormat(pattern = "yyyy-MM-dd@HH:mm:ss.SSSSSS")
private LocalDateTime startTime;
@JsonFormat(pattern = "yyyy-MM-dd@HH:mm:ss.SSSSSS")
private LocalDateTime endTime;
private String sessionFormat;
private String sessionType;
private String description;
Expand Down

This file was deleted.

10 changes: 0 additions & 10 deletions src/main/java/innotutor/innotutor_backend/entity/card/Card.java
Expand Up @@ -27,7 +27,6 @@ public class Card { //NOPMD - suppressed ShortClassName - It has the same databa
private Request requestByCardId;
private Service serviceByCardId;
private Collection<CardEnroll> cardEnrollsByCardId;
private Collection<CardRating> cardRatingsByCardId;
private Collection<CardSessionFormat> cardSessionFormatsByCardId;
private Collection<CardSessionType> cardSessionTypesByCardId;

Expand Down Expand Up @@ -152,15 +151,6 @@ public void setCardEnrollsByCardId(final Collection<CardEnroll> cardEnrollsByCar
this.cardEnrollsByCardId = cardEnrollsByCardId;
}

@OneToMany(mappedBy = CARD_BY_CARD_ID)
public Collection<CardRating> getCardRatingsByCardId() {
return cardRatingsByCardId;
}

public void setCardRatingsByCardId(final Collection<CardRating> cardRatingsByCardId) {
this.cardRatingsByCardId = cardRatingsByCardId;
}

@OneToMany(mappedBy = CARD_BY_CARD_ID)
public Collection<CardSessionFormat> getCardSessionFormatsByCardId() {
return cardSessionFormatsByCardId;
Expand Down

0 comments on commit de2e308

Please sign in to comment.