diff --git a/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java index 583acd4..7961630 100755 --- a/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/CommisionController.java @@ -42,6 +42,7 @@ import java.util.HashMap; import java.util.Iterator; import com.plannaplan.responses.mappers.AssignmentResponseMappers; +import com.plannaplan.responses.models.AssignmentDetailedResponse; import com.plannaplan.responses.models.AssignmentResponse; /** @@ -161,6 +162,28 @@ public class CommisionController extends TokenBasedController { } return new ResponseEntity<>(result, HttpStatus.OK); + + } + + /** + * @return list of user latests assignmets + * @throws UserNotFoundException if user was not found bny token + */ + @GetMapping("/user/assignments") + @ApiOperation("Return list of latest user commision assignments. User is recognized via token") + public ResponseEntity> getAllAssignmets() throws UserNotFoundException { + final User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException()); + + final Optional latestCommision = this.commisionService.getNewestCommision(user); + + if (latestCommision.isEmpty()) { + return new ResponseEntity<>(new ArrayList<>(), HttpStatus.OK); + } + + final List response = AssignmentResponseMappers + .mapAssignmetnToDetialedResponse(latestCommision.get().getAssignments()); + + return new ResponseEntity<>(response, HttpStatus.OK); } /** diff --git a/restservice/src/main/java/com/plannaplan/responses/mappers/AssignmentResponseMappers.java b/restservice/src/main/java/com/plannaplan/responses/mappers/AssignmentResponseMappers.java index eb54a19..5302068 100755 --- a/restservice/src/main/java/com/plannaplan/responses/mappers/AssignmentResponseMappers.java +++ b/restservice/src/main/java/com/plannaplan/responses/mappers/AssignmentResponseMappers.java @@ -4,10 +4,13 @@ import java.util.List; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; import com.plannaplan.entities.Assignment; import com.plannaplan.entities.Course; import com.plannaplan.entities.Groups; +import com.plannaplan.responses.models.AssignmentDetailedResponse; import com.plannaplan.responses.models.AssignmentResponse; import com.plannaplan.types.GroupType; @@ -69,4 +72,15 @@ public class AssignmentResponseMappers { } return response; } + + /** + * map assignmetn to detailed response + * + * @param assignments list of assignments to map + * @return list of responses + */ + public static final List mapAssignmetnToDetialedResponse(List assignments) { + return assignments.stream().filter(Objects::nonNull).map(AssignmentDetailedResponse::new) + .collect(Collectors.toList()); + } } diff --git a/restservice/src/main/java/com/plannaplan/responses/models/AssignmentDetailedResponse.java b/restservice/src/main/java/com/plannaplan/responses/models/AssignmentDetailedResponse.java new file mode 100755 index 0000000..0c86f5b --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/responses/models/AssignmentDetailedResponse.java @@ -0,0 +1,71 @@ +package com.plannaplan.responses.models; + +import com.plannaplan.entities.Assignment; +import com.plannaplan.entities.Groups; + +/** + * Assignment detailed response for api + */ +public class AssignmentDetailedResponse { + public Long id; + public String name; + private int day; + private String time; + private String endTime; + private String lecturer; + + /** + * @param assignment Assignment instance to map + */ + public AssignmentDetailedResponse(Assignment assignment) { + final Groups group = assignment.getGroup(); + this.id = assignment.getId(); + this.name = group.getCourseId().getName(); + this.day = group.getDay().label; + this.time = group.getTimeString(); + this.endTime = group.getEndTimeString(); + this.lecturer = group.getLecturer().toString(); + } + + /** + * @return day as a value from 0-6 + */ + public int getDay() { + return day; + } + + /** + * @return lecturer string fromated + */ + public String getLecturer() { + return lecturer; + } + + /** + * @return time formated string + */ + public String getEndTime() { + return endTime; + } + + /** + * @return time formated string + */ + public String getTime() { + return time; + } + + /** + * @return name of course that group belongs to + */ + public String getName() { + return this.name; + } + + /** + * @return db id of assignment + */ + public Long getId() { + return this.id; + } +}