From 908660c67f86d1119224b234370f2fd119476224 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= <xpokorn8@fi.muni.cz> Date: Tue, 21 Mar 2023 23:11:33 +0100 Subject: [PATCH] Lecture Controller CRUD --- .../model/dto/lecture/LectureCreateDto.java | 20 ++++++ .../fuseri/model/dto/lecture/LectureDto.java | 25 +++++++ .../modulelanguageschool/lecture/Lecture.java | 49 +++++++++++++ .../lecture/LectureController.java | 70 +++++++++++++++++++ 4 files changed, 164 insertions(+) create mode 100644 application/model/src/main/java/org/fuseri/model/dto/lecture/LectureCreateDto.java create mode 100644 application/model/src/main/java/org/fuseri/model/dto/lecture/LectureDto.java create mode 100644 application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/lecture/Lecture.java create mode 100644 application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/lecture/LectureController.java diff --git a/application/model/src/main/java/org/fuseri/model/dto/lecture/LectureCreateDto.java b/application/model/src/main/java/org/fuseri/model/dto/lecture/LectureCreateDto.java new file mode 100644 index 00000000..36b7bf9b --- /dev/null +++ b/application/model/src/main/java/org/fuseri/model/dto/lecture/LectureCreateDto.java @@ -0,0 +1,20 @@ +package org.fuseri.model.dto.lecture; + +import lombok.Getter; +import lombok.Setter; +import org.fuseri.model.dto.common.DomainObjectDto; +import org.fuseri.model.dto.course.CourseDto; + +import java.time.LocalDateTime; + +@Getter +@Setter +public class LectureCreateDto extends DomainObjectDto { + + private LocalDateTime from; + private LocalDateTime to; + + private Integer capacity; + + private CourseDto course; +} diff --git a/application/model/src/main/java/org/fuseri/model/dto/lecture/LectureDto.java b/application/model/src/main/java/org/fuseri/model/dto/lecture/LectureDto.java new file mode 100644 index 00000000..4ebf4eb3 --- /dev/null +++ b/application/model/src/main/java/org/fuseri/model/dto/lecture/LectureDto.java @@ -0,0 +1,25 @@ +package org.fuseri.model.dto.lecture; + +import lombok.Getter; +import lombok.Setter; +import org.fuseri.model.dto.common.DomainObjectDto; +import org.fuseri.model.dto.user.UserDto; + +import java.time.LocalDateTime; +import java.util.List; + +@Getter +@Setter +public class LectureDto extends DomainObjectDto { + + private LocalDateTime from; + private LocalDateTime to; + + private Integer capacity; + + private UserDto lecturer; + + private String courseId; + + private List<UserDto> users; +} diff --git a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/lecture/Lecture.java b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/lecture/Lecture.java new file mode 100644 index 00000000..cafca6ec --- /dev/null +++ b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/lecture/Lecture.java @@ -0,0 +1,49 @@ +package org.fuseri.modulelanguageschool.lecture; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.ManyToOne; +import lombok.*; +import org.fuseri.modulelanguageschool.common.DomainObject; +import org.fuseri.modulelanguageschool.course.Course; +import org.fuseri.modulelanguageschool.user.User; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * This class represents a lecture entity in the domain model. + */ +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Entity +public class Lecture extends DomainObject { + + /** + * The start time of the lecture. + */ + @Column(name = "lecture_from") + private LocalDateTime from; + + /** + * The end time of the lecture. + */ + @Column(name = "lecture_to") + private LocalDateTime to; + + /** + * The course that the lecture is associated with. + */ + @ManyToOne + private Course course; + + /** + * The list of users attending the lecture. + */ + @ManyToMany + private List<User> user; +} diff --git a/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/lecture/LectureController.java b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/lecture/LectureController.java new file mode 100644 index 00000000..54c0f1d3 --- /dev/null +++ b/application/module-language-school/src/main/java/org/fuseri/modulelanguageschool/lecture/LectureController.java @@ -0,0 +1,70 @@ +package org.fuseri.modulelanguageschool.lecture; + +import org.fuseri.model.dto.common.Result; +import org.fuseri.model.dto.lecture.LectureCreateDto; +import org.fuseri.model.dto.lecture.LectureDto; +import org.springframework.web.bind.annotation.*; + +/** + * This class represents a RESTful controller for Lecture resources. + * It handles incoming HTTP requests related to lectures, and delegates them to the appropriate service method. + */ +@RestController +@RequestMapping("/lectures") +public class LectureController { + + /** + * Finds a lecture resource by its ID. + * + * @param id the ID of the lecture to find + * @return the LectureDto representing the found lecture + */ + @GetMapping("/{id}") + public LectureDto find(@PathVariable String id) { + return new LectureDto(); + } + + /** + * Creates a new lecture resource by delegating to the LectureService's create method. + * + * @param lecture the LectureDto representing the lecture to be created + * @return the LectureDto representing the newly created lecture + */ + @PostMapping("/create") + public LectureDto create(@RequestBody LectureCreateDto lecture) { + return new LectureDto(); + } + + /** + * Updates an existing lecture resource by delegating to the LectureService's update method. + * + * @param lecture the CourseCreateDto representing the updated lecture + * @return the LectureDto representing the updated lecture + */ + @PutMapping("/update/{id}") + public LectureDto update(@PathVariable String id, @RequestBody LectureCreateDto lecture) { + return new LectureDto(); + } + + /** + * Deletes a lecture resource by its ID. + * + * @param id the ID of the lecture to delete + * @return a boolean indicating whether the deletion was successful or not + */ + @DeleteMapping("/delete/{id}") + public boolean delete(@PathVariable String id) { + return true; + } + + /** + * Retrieves a paginated list of lecture resources by delegating to the LectureService's findAll method. + * + * @param page the page number to retrieve + * @return the Result object containing a list of LectureDtos and pagination information + */ + @GetMapping("/findAll") + public Result<LectureDto> findAll(@RequestParam int page) { + return new Result<>(); + } +} \ No newline at end of file -- GitLab