EventServiceImpl.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package nju.seec.helper.service.impl;
  2. import com.google.common.collect.Lists;
  3. import nju.seec.helper.api.dataanalysis.dto.EventDTO;
  4. import nju.seec.helper.api.dataanalysis.EventApi;
  5. import nju.seec.helper.dao.*;
  6. import nju.seec.helper.entity.*;
  7. import nju.seec.helper.enums.UserRole;
  8. import nju.seec.helper.service.EventService;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.transaction.annotation.Transactional;
  11. import java.time.LocalDateTime;
  12. import java.util.List;
  13. import java.util.Objects;
  14. /**
  15. * @author cst
  16. */
  17. @Service
  18. public class EventServiceImpl implements EventService {
  19. private final CourseDAO courseDAO;
  20. private final ChooseDAO chooseDAO;
  21. private final UserDAO userDAO;
  22. private final CommentDAO commentDAO;
  23. private final QuizStudentAnswerDAO quizStudentAnswerDAO;
  24. private final EventApi eventApi;
  25. public EventServiceImpl(CourseDAO courseDAO, ChooseDAO chooseDAO, UserDAO userDAO, CommentDAO commentDAO, QuizStudentAnswerDAO quizStudentAnswerDAO, EventApi eventApi) {
  26. this.courseDAO = courseDAO;
  27. this.chooseDAO = chooseDAO;
  28. this.userDAO = userDAO;
  29. this.commentDAO = commentDAO;
  30. this.quizStudentAnswerDAO = quizStudentAnswerDAO;
  31. this.eventApi = eventApi;
  32. }
  33. @Transactional(readOnly = true)
  34. @Override
  35. public List<EventDTO> getAllEvents() {
  36. List<EventDTO> eventDTOS = Lists.newArrayList();
  37. List<Course> courses = courseDAO.findAll();
  38. courses.forEach(course -> {
  39. List<Choose> chooses = chooseDAO.findByCourseId(course.getId());
  40. chooses.forEach(
  41. choose -> {
  42. User student = userDAO.findUserById(choose.getStudentId());
  43. if (student.getPid() != null) {
  44. eventDTOS.add(eventApi.createParticipateClassEventDTO(String.valueOf(Objects.requireNonNull(student).getPid()), LocalDateTime.now(), course));
  45. }
  46. }
  47. );
  48. });
  49. List<Comment> comments = commentDAO.findAll();
  50. comments.forEach(comment -> {
  51. User user = comment.getUser();
  52. if (user.getPid() != null && user.getRole() == UserRole.STUDENT) {
  53. eventDTOS.add(eventApi.createInitPostEventDTO(String.valueOf(user.getPid()), comment.getCreateAt(), comment.getTitle()));
  54. }
  55. });
  56. List<QuizStudentAnswer> quizStudentAnswers = quizStudentAnswerDAO.findAll();
  57. quizStudentAnswers.forEach(quizStudentAnswer -> {
  58. User student = quizStudentAnswer.getStudent();
  59. if (student.getPid() != null) {
  60. Quiz quiz = quizStudentAnswer.getQuiz();
  61. eventDTOS.add(eventApi.createCompleteQuizEventDTO(String.valueOf(student.getPid()), quizStudentAnswer.getSubmitAt(), quiz));
  62. }
  63. });
  64. return eventDTOS;
  65. }
  66. }