Skip to content

Commit

Permalink
Implement Schedule #19
Browse files Browse the repository at this point in the history
  • Loading branch information
SMore-Napi committed Jan 11, 2022
1 parent f43bc68 commit 57c052a
Show file tree
Hide file tree
Showing 8 changed files with 176 additions and 63 deletions.
Original file line number Diff line number Diff line change
@@ -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,42 @@ 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;
}

@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;
}
}
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package innotutor.innotutor_backend.dto.card;

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

@Data
@NoArgsConstructor
@AllArgsConstructor
public class SessionRatingDTO {
private Long cardId;
private Integer mark;
}
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
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.

Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.Objects;

Expand All @@ -24,9 +25,8 @@ public class Session { // NOPMD - suppressed GodClass
private Long subjectId;
private Long sessionFormatId;
private Long sessionTypeId;
private Date date;
private Time startTime;
private Time endTime;
private LocalDateTime startTime;
private LocalDateTime endTime;
private String description;
private Timestamp creationDate;
private Timestamp lastUpdate;
Expand All @@ -40,9 +40,8 @@ public Session(final Long tutorId,
final Long subjectId,
final Long sessionFormatId,
final Long sessionTypeId,
final Date date,
final Time startTime,
final Time endTime,
final LocalDateTime startTime,
final LocalDateTime endTime,
final String description,
final User userByTutorId,
final Subject subjectBySubjectId,
Expand All @@ -52,7 +51,6 @@ public Session(final Long tutorId,
this.subjectId = subjectId;
this.sessionFormatId = sessionFormatId;
this.sessionTypeId = sessionTypeId;
this.date = date;
this.startTime = startTime;
this.endTime = endTime;
this.description = description;
Expand Down Expand Up @@ -113,33 +111,23 @@ public void setSessionTypeId(final Long sessionTypeId) {
this.sessionTypeId = sessionTypeId;
}

@Basic
@Column(name = "date", nullable = false)
public Date getDate() {
return date;
}

public void setDate(final Date date) {
this.date = date;
}

@Basic
@Column(name = "start_time", nullable = false)
public Time getStartTime() {
public LocalDateTime getStartTime() {
return startTime;
}

public void setStartTime(final Time startTime) {
public void setStartTime(final LocalDateTime startTime) {
this.startTime = startTime;
}

@Basic
@Column(name = "end_time", nullable = false)
public Time getEndTime() {
public LocalDateTime getEndTime() {
return endTime;
}

public void setEndTime(final Time endTime) {
public void setEndTime(final LocalDateTime endTime) {
this.endTime = endTime;
}

Expand Down Expand Up @@ -199,9 +187,6 @@ public boolean equals(final Object object) {
if (!Objects.equals(sessionTypeId, session.sessionTypeId)) {
return false;
}
if (!Objects.equals(date, session.date)) {
return false;
}
if (!Objects.equals(startTime, session.startTime)) {
return false;
}
Expand All @@ -224,7 +209,6 @@ public int hashCode() {
result = 31 * result + (subjectId == null ? 0 : subjectId.hashCode());
result = 31 * result + (sessionFormatId == null ? 0 : sessionFormatId.hashCode());
result = 31 * result + (sessionTypeId == null ? 0 : sessionTypeId.hashCode());
result = 31 * result + (date == null ? 0 : date.hashCode());
result = 31 * result + (startTime == null ? 0 : startTime.hashCode());
result = 31 * result + (endTime == null ? 0 : endTime.hashCode());
result = 31 * result + (description == null ? 0 : description.hashCode());
Expand Down

0 comments on commit 57c052a

Please sign in to comment.