package com.ots.project.exam.restcontroller; import com.ots.common.enums.ExamPaperTypeEnum; import com.ots.project.common.BaseApiController; import com.ots.project.exam.domain.ExamUser; import com.ots.project.exam.dto.PaperFilter; import com.ots.project.exam.dto.PaperInfo; import com.ots.project.exam.dto.RestResponse; import com.ots.project.exam.service.IExamPaperService; import com.ots.project.exam.viewmodel.IndexVM; import com.ots.project.exam.viewmodel.PaperInfoVM; import com.ots.project.exam.viewmodel.TaskItemVm; import com.ots.project.tool.exam.DateTimeUtil; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @RestController("StudentDashboardController") @RequestMapping(value = "/api/exam/dashboard") @AllArgsConstructor public class DashboardController extends BaseApiController { @Autowired private IExamPaperService examPaperService; @RequestMapping(value = "/index", method = RequestMethod.POST) public RestResponse index() { IndexVM indexVM = new IndexVM(); ExamUser user = getCurrentUser(); PaperFilter fixedPaperFilter = new PaperFilter(); fixedPaperFilter.setGradeLevel(user.getUserLevel()); fixedPaperFilter.setExamPaperType(ExamPaperTypeEnum.Fixed.getCode()); indexVM.setFixedPaper(examPaperService.indexPaper(fixedPaperFilter)); PaperFilter timeLimitPaperFilter = new PaperFilter(); timeLimitPaperFilter.setDateTime(new Date()); timeLimitPaperFilter.setGradeLevel(user.getUserLevel()); timeLimitPaperFilter.setExamPaperType(ExamPaperTypeEnum.TimeLimit.getCode()); List limitPaper = examPaperService.indexPaper(timeLimitPaperFilter); List paperInfoVMS = limitPaper.stream().map(d -> { PaperInfoVM vm = modelMapper.map(d, PaperInfoVM.class); vm.setStartTime(DateTimeUtil.dateFormat(d.getLimitStartTime())); vm.setEndTime(DateTimeUtil.dateFormat(d.getLimitEndTime())); return vm; }).collect(Collectors.toList()); indexVM.setTimeLimitPaper(paperInfoVMS); return RestResponse.ok(indexVM); } @RequestMapping(value = "/task", method = RequestMethod.POST) public RestResponse> task() { return RestResponse.ok(new ArrayList<>()); } }