public async Task <bool> RegisterExam(Guid studentId, Guid examPeriodId, Guid termId) { // nếu sinh viên đã đăng ký thi 1 ca thi của môn đó trước đó thì phải xoá đi đăng ký lại nếu đăng ký ca thi mới của môn đó // đếm số lượng exam register để biết sinh viên đã đăng ký ca thi nào đó của môn học đó chưa int countExistedExamRegisterOfTerm = await UOW.ExamRegisterRepository.Count(new ExamRegisterFilter { StudentId = new GuidFilter { Equal = studentId }, TermId = new GuidFilter { Equal = termId } }); // nếu đã từng đăng ký thì xoá đi tạo lại if (countExistedExamRegisterOfTerm > 0) { await UOW.ExamRegisterRepository.Delete(studentId, examPeriodId); } // nếu chưa từng đăng ký thì tạo mới // lấy số lượng sinh viên ở trong các phòng thi hiện tại và insert sinh viên vào phòng thi có ít sinh viên nhất // nếu số lượng sinh viên trong tất cả các phòng đã đạt max thì báo lỗi // Lấy examRoomExamPeriod có số student trong đó ít nhất List <ExamRoomExamPeriod> exams = await UOW.ExamRoomExamPeriodRepository.List(new ExamRoomExamPeriodFilter { ExamPeriodId = new GuidFilter { Equal = examPeriodId } }); // Loại exam có số lượng student đạt max, nếu list exam trống thì báo lỗi exams.RemoveAll(e => e.Students.Count == e.ExamRoomComputerNumber); if (exams.Count == 0) { return(false); } // Tiếp tục quy trình nếu list exam còn chỗ trống ExamRoomExamPeriod examToRegisterIn = exams .Where(exam => exam.Students.Count == exams.Select(e => e.Students.Count).Min()) .FirstOrDefault(); // Tạo examRegister mới ExamRegister examRegister = new ExamRegister { StudentId = studentId, ExamPeriodId = examPeriodId, ExamRoomId = examToRegisterIn.ExamRoomId }; await UOW.ExamRegisterRepository.Create(examRegister); return(true); }
public async Task <bool> Create(ExamRegister examRegister) { ExamRegisterDAO newExamRegisterDAO = new ExamRegisterDAO { ExamPeriodId = examRegister.ExamPeriodId, StudentId = examRegister.StudentId, ExamRoomId = examRegister.ExamRoomId }; examRegContext.ExamRegister.Add(newExamRegisterDAO); await examRegContext.SaveChangesAsync(); return(true); }
public object uploadwalkin([FromBody] JsonElement json) { var model = JsonConvert.DeserializeObject <ChooseDTO>(json.GetRawText()); var examidint = NumUtil.ParseInteger(model.examid); var chs = model.choose.Split(";"); foreach (var ch in chs) { if (!string.IsNullOrEmpty(ch)) { var studentid = NumUtil.ParseInteger(ch); var reged = _context.ExamRegisters.Where(w => w.StudentID == studentid & w.ExamID == examidint).FirstOrDefault(); if (reged == null) { var register = new ExamRegister(); register.StudentID = studentid; register.ExamID = NumUtil.ParseInteger(model.examid); register.ExamRegisterType = ExamRegisterType.WalkIn; register.Create_On = DateUtil.Now(); register.Update_On = DateUtil.Now(); register.Create_By = model.update_by; register.Update_By = model.update_by; _context.ExamRegisters.Add(register); } } } _context.SaveChanges(); var exam = _context.Exams.Where(w => w.ID == examidint).FirstOrDefault(); if (exam != null) { exam.RegisterCnt = _context.ExamRegisters.Where(w => w.ExamID == examidint).Count(); exam.Update_On = DateUtil.Now(); exam.Update_By = model.update_by; _context.SaveChanges(); return(CreatedAtAction(nameof(upload), new { result = ResultCode.Success, message = ResultMessage.Success, registercnt = exam.RegisterCnt })); } return(CreatedAtAction(nameof(uploadwalkin), new { result = ResultCode.Success, message = ResultMessage.Success })); }
public object upload([FromBody] JsonElement json) { var model = JsonConvert.DeserializeObject <ImportExamRegisterDTO>(json.GetRawText()); if (model != null && model.fileupload != null) { var file = Convert.FromBase64String(model.fileupload.value); using (MemoryStream ms = new MemoryStream(file)) { using (ExcelPackage package = new ExcelPackage(ms)) { if (package.Workbook.Worksheets.Count == 0) { return(CreatedAtAction(nameof(upload), new { result = ResultCode.InputHasNotFound, message = ResultMessage.InputHasNotFound })); } else { var worksheet = package.Workbook.Worksheets.First(); int totalRows = worksheet.Dimension.End.Row; for (int i = 2; i <= totalRows; i++) { var txt = worksheet.Cells[i, 1].Text.ToString(); if (!string.IsNullOrEmpty(txt)) { var student = _context.Students.Where(w => w.StudentCode == txt).FirstOrDefault(); if (student != null) { var examidint = NumUtil.ParseInteger(model.examid); var reged = _context.ExamRegisters.Where(w => w.StudentID == student.ID & w.ExamID == examidint).FirstOrDefault(); if (reged == null) { var register = new ExamRegister(); register.StudentID = student.ID; register.ExamID = examidint; register.ExamRegisterType = ExamRegisterType.Advance; register.Create_On = DateUtil.Now(); register.Update_On = DateUtil.Now(); register.Create_By = model.update_by; register.Update_By = model.update_by; _context.ExamRegisters.Add(register); } } } } _context.SaveChanges(); var examid = NumUtil.ParseInteger(model.examid); var exam = _context.Exams.Where(w => w.ID == examid).FirstOrDefault(); if (exam != null) { exam.Update_On = DateUtil.Now(); exam.Update_By = model.update_by; exam.RegisterCnt = _context.ExamRegisters.Where(w => w.ExamID == examid).Count(); _context.SaveChanges(); return(CreatedAtAction(nameof(upload), new { result = ResultCode.Success, message = ResultMessage.Success, registercnt = exam.RegisterCnt })); } } } } } return(CreatedAtAction(nameof(upload), new { result = ResultCode.InvalidInput, message = ResultMessage.InvalidInput })); }