diff --git a/src/main/java/nl/tudelft/ewi/queue/DatabaseLoader.java b/src/main/java/nl/tudelft/ewi/queue/DatabaseLoader.java index ba4f68446ffc9480496dbde8b3d61fd7008e0baf..78519c7c39de0a10cd0ce0b41ed89e4a80561de3 100644 --- a/src/main/java/nl/tudelft/ewi/queue/DatabaseLoader.java +++ b/src/main/java/nl/tudelft/ewi/queue/DatabaseLoader.java @@ -1,26 +1,7 @@ package nl.tudelft.ewi.queue; -import nl.tudelft.ewi.queue.model.Assignment; -import nl.tudelft.ewi.queue.model.Assistant; -import nl.tudelft.ewi.queue.model.Course; -import nl.tudelft.ewi.queue.model.DefaultRole; -import nl.tudelft.ewi.queue.model.Direction; -import nl.tudelft.ewi.queue.model.Lab; -import nl.tudelft.ewi.queue.model.LabSlot; -import nl.tudelft.ewi.queue.model.Manager; -import nl.tudelft.ewi.queue.model.Request; -import nl.tudelft.ewi.queue.model.RequestType; -import nl.tudelft.ewi.queue.model.Room; -import nl.tudelft.ewi.queue.model.Student; -import nl.tudelft.ewi.queue.model.Teacher; -import nl.tudelft.ewi.queue.model.User; -import nl.tudelft.ewi.queue.repository.AssignmentRepository; -import nl.tudelft.ewi.queue.repository.CourseRepository; -import nl.tudelft.ewi.queue.repository.LabRepository; -import nl.tudelft.ewi.queue.repository.RequestRepository; -import nl.tudelft.ewi.queue.repository.RequestTypeRepository; -import nl.tudelft.ewi.queue.repository.RoomRepository; -import nl.tudelft.ewi.queue.repository.UserRepository; +import nl.tudelft.ewi.queue.model.*; +import nl.tudelft.ewi.queue.repository.*; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -55,6 +36,11 @@ public class DatabaseLoader { @Autowired private RoomRepository roomRepository; + @Autowired + private FirstYearMentorGroupRepository firstYearMentorGroupRepository; + + @Autowired FirstYearStudentRepository firstYearStudentRepository; + private static final Logger logger = LoggerFactory.getLogger(DatabaseLoader.class); @Autowired @@ -172,6 +158,19 @@ public class DatabaseLoader { userRepository.save(student4); } + FirstYearMentorGroup mentorGroup = new FirstYearMentorGroup(); + mentorGroup.setName("a1"); + firstYearMentorGroupRepository.save(mentorGroup); + FirstYearMentorGroup mentorGroup1 = new FirstYearMentorGroup(); + mentorGroup1.setName("a2"); + firstYearMentorGroupRepository.save(mentorGroup1); + + FirstYearStudent firstYearStudent = new FirstYearStudent(students.get(0), mentorGroup); + firstYearStudentRepository.save(firstYearStudent); + FirstYearStudent firstYearStudent1 = new FirstYearStudent(students.get(1), mentorGroup1); + firstYearStudentRepository.save(firstYearStudent1); + + assistant1.addRole(new Assistant(assistant1, course1)); assistant2.addRole(new Assistant(assistant2, course1)); assistant3.addRole(new Assistant(assistant3, course1)); diff --git a/src/main/java/nl/tudelft/ewi/queue/controller/CourseController.java b/src/main/java/nl/tudelft/ewi/queue/controller/CourseController.java index 61781478289ba4e217250b4e527f7690d9945052..9ebbff6632e362ddc6d62af64ec623f846522093 100644 --- a/src/main/java/nl/tudelft/ewi/queue/controller/CourseController.java +++ b/src/main/java/nl/tudelft/ewi/queue/controller/CourseController.java @@ -4,23 +4,8 @@ import com.querydsl.core.types.dsl.BooleanExpression; import nl.tudelft.ewi.queue.annotation.AuthenticatedUser; import nl.tudelft.ewi.queue.forms.AssignmentListWrapperForm; import nl.tudelft.ewi.queue.forms.ParticipantForm; -import nl.tudelft.ewi.queue.model.Assignment; -import nl.tudelft.ewi.queue.model.Assistant; -import nl.tudelft.ewi.queue.model.Course; -import nl.tudelft.ewi.queue.model.Group; -import nl.tudelft.ewi.queue.model.Lab; -import nl.tudelft.ewi.queue.model.Manager; -import nl.tudelft.ewi.queue.model.QCourse; -import nl.tudelft.ewi.queue.model.Request; -import nl.tudelft.ewi.queue.model.Role; -import nl.tudelft.ewi.queue.model.Student; -import nl.tudelft.ewi.queue.model.Teacher; -import nl.tudelft.ewi.queue.model.User; -import nl.tudelft.ewi.queue.repository.AssignmentRepository; -import nl.tudelft.ewi.queue.repository.CourseRepository; -import nl.tudelft.ewi.queue.repository.FirstYearStudentRepository; -import nl.tudelft.ewi.queue.repository.RoleRepository; -import nl.tudelft.ewi.queue.repository.UserRepository; +import nl.tudelft.ewi.queue.model.*; +import nl.tudelft.ewi.queue.repository.*; import nl.tudelft.ewi.queue.service.CourseService; import nl.tudelft.ewi.queue.service.GroupService; import nl.tudelft.ewi.queue.service.LabService; @@ -38,6 +23,7 @@ import org.springframework.data.web.PageableDefault; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.util.MultiValueMap; import org.springframework.validation.BindingResult; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; @@ -48,6 +34,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import sun.rmi.runtime.Log; import javax.persistence.EntityNotFoundException; import javax.validation.Valid; @@ -55,6 +42,7 @@ import java.io.IOException; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; @@ -90,6 +78,9 @@ public class CourseController { @Autowired private ParticipantValidator participantValidator; + @Autowired + private FirstYearMentorGroupRepository firstYearMentorGroupRepository; + @Autowired private FirstYearStudentRepository firstYearStudentRepository; @@ -490,13 +481,27 @@ public class CourseController { @RequestMapping(value = "/course/{id}/mentor-groups", method = RequestMethod.GET) @PreAuthorize("@permissionService.canViewMentorGroups(principal, #id)") - public String mentorGroups(@AuthenticatedUser User user, @PathVariable( - "id") Long id, Model model) { + public String mentorGroups(@AuthenticatedUser User user, + @PathVariable("id") Long id, + @RequestParam(value = "mentorgroup", required = false) String mentorGroupName, + Model model) { Course course = getCourse(id); + logger.info("All first year students: " + firstYearMentorGroupRepository.findAll().toString()); + model.addAttribute("students", new PagedListHolder<>()); + if (mentorGroupName != null) { + logger.info("Mentor group: " + mentorGroupName); + FirstYearMentorGroup mentorGroup = firstYearMentorGroupRepository.findByName(mentorGroupName); + List<FirstYearStudent> firstYearStudents = firstYearStudentRepository.findByMentorGroup(mentorGroup); + if (!firstYearStudents.isEmpty()) { + PagedListHolder<FirstYearStudent> pagedListHolder + = new PagedListHolder<>(firstYearStudents); + model.addAttribute("students", pagedListHolder); + } + } model.addAttribute("course", course); model.addAttribute("mentorGroups", - firstYearStudentRepository.findAll()); + firstYearMentorGroupRepository.findAll()); model.addAttribute("student", new ArrayList<>()); return "course/view/mentor-group"; } diff --git a/src/main/java/nl/tudelft/ewi/queue/repository/FirstYearStudentRepository.java b/src/main/java/nl/tudelft/ewi/queue/repository/FirstYearStudentRepository.java index 0f7a3c8d4d0a3eca0ad1181b616929542aaed8f7..2dc3451c284c40a8b25c5117209a8d674d69df35 100644 --- a/src/main/java/nl/tudelft/ewi/queue/repository/FirstYearStudentRepository.java +++ b/src/main/java/nl/tudelft/ewi/queue/repository/FirstYearStudentRepository.java @@ -1,5 +1,6 @@ package nl.tudelft.ewi.queue.repository; +import nl.tudelft.ewi.queue.model.FirstYearMentorGroup; import nl.tudelft.ewi.queue.model.FirstYearStudent; import nl.tudelft.ewi.queue.model.User; import org.springframework.data.repository.CrudRepository; @@ -14,5 +15,7 @@ public interface FirstYearStudentRepository extends CrudRepository<FirstYearStud List<FirstYearStudent> findByNetId(String netId); + List<FirstYearStudent> findByMentorGroup(FirstYearMentorGroup firstYearMentorGroup); + boolean existsByNetId(String netId); } diff --git a/src/main/resources/templates/course/view/mentor-group.html b/src/main/resources/templates/course/view/mentor-group.html index 12f425f73a95f13c9167cb607ab3f1bf60b1c265..eead8571a3a26788651c6a048bffeb46fcc99d61 100644 --- a/src/main/resources/templates/course/view/mentor-group.html +++ b/src/main/resources/templates/course/view/mentor-group.html @@ -13,17 +13,27 @@ </div> </div> - <div class="boxed-group"> - <ul class="nav nav-pills"> - <li th:if="${#lists.isEmpty(mentorGroups)}">There are no mentor - groups</li> + <form method="get" class="form"> + <div class="form-group filter"> + <label class="form-control-label" for="mentor-group-select">Mentor Group</label> + <select class="form-control" id="mentor-group-select" name="mentorgroup"> <th:block th:each="group : ${mentorGroups}"> - <li class="nav-item"><a href="#" - th:text="${group.toString()}">group - 1</a> - </li> + <option th:value="${group}" th:text="${group}"></option> </th:block> + </select> + </div> + <button type="submit" class="btn btn-primary">Get Students</button> + </form> + + <div class="boxed-group" th:unless="${students.nrOfElements == 0}"> + <h3>Students</h3> + + <ul class="list-group"> + <li class="list-group-item" th:each="student : ${students.pageList}"> + <a th:href="@{/history/course/{courseId}/student/{id}/(courseId=${course.id},id=${student.user.id})}">[[${student.user}]]</a> + </li> </ul> + </div> </section>