コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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 }));
        }
コード例 #4
0
        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 }));
        }