public async Task <List <ExamRoomExamPeriodDTO> > ListExamRoomExamPeriod()
        {
            ExamProgram currentExamProgram = await ExamProgramService.GetCurrentExamProgram();

            ExamRoomExamPeriodFilter filter = new ExamRoomExamPeriodFilter
            {
                StudentNumber = CurrentContext.StudentNumber,
                ExamProgramId = new GuidFilter {
                    Equal = currentExamProgram.Id
                },
                OrderBy   = ExamOrder.ExamDate,
                OrderType = OrderType.ASC
            };
            List <ExamRoomExamPeriod> res = await ExamRoomExamPeriodService.List(filter);

            return(res.Select(r => new ExamRoomExamPeriodDTO
            {
                ExamPeriodId = r.ExamPeriodId,
                ExamRoomId = r.ExamRoomId,
                TermId = r.TermId,
                ExamProgramId = r.ExamProgramId,
                ExamProgramName = r.ExamProgramName,
                ExamDate = r.ExamDate.ToString("dd-MM-yyyy"),
                StartHour = r.StartHour,
                FinishHour = r.FinishHour,
                ExamRoomNumber = r.ExamRoomNumber,
                ExamRoomAmphitheaterName = r.ExamRoomAmphitheaterName,
                ExamRoomComputerNumber = r.ExamRoomComputerNumber,
                CurrentNumberOfStudentRegistered = r.Students.Count,
                SubjectName = r.SubjectName,
                Errors = r.Errors,
            }).ToList());
        }
Пример #2
0
        public async Task <ExamRoomExamPeriod> Get(ExamRoomExamPeriodFilter filter)
        {
            IQueryable <ExamRoomExamPeriodDAO> examRoomExamPeriodDAO = examRegContext.ExamRoomExamPeriod.AsNoTracking();

            examRoomExamPeriodDAO = DynamicFilter(examRoomExamPeriodDAO, filter);

            List <ExamRoomExamPeriod> list = await examRoomExamPeriodDAO.Select(e => new ExamRoomExamPeriod()
            {
                ExamProgramId            = e.ExamPeriod.ExamProgramId,
                ExamRoomId               = e.ExamRoomId,
                ExamPeriodId             = e.ExamPeriodId,
                TermId                   = e.ExamPeriod.TermId,
                ExamProgramName          = e.ExamPeriod.ExamProgram.Name,
                ExamDate                 = e.ExamPeriod.ExamDate,
                StartHour                = e.ExamPeriod.StartHour,
                FinishHour               = e.ExamPeriod.FinishHour,
                SubjectName              = e.ExamPeriod.Term.SubjectName,
                ExamRoomNumber           = e.ExamRoom.RoomNumber,
                ExamRoomAmphitheaterName = e.ExamRoom.AmphitheaterName,
                ExamRoomComputerNumber   = e.ExamRoom.ComputerNumber,
                Students                 = e.ExamRegisters.Select(r => new Student
                {
                    Id            = r.StudentId,
                    Username      = r.Student.Users.FirstOrDefault().Username,
                    Password      = r.Student.Users.FirstOrDefault().Password,
                    StudentNumber = r.Student.StudentNumber,
                    LastName      = r.Student.LastName,
                    GivenName     = r.Student.GivenName,
                    Birthday      = r.Student.Birthday,
                    Email         = r.Student.Email
                }).OrderBy(st => st.GivenName).ToList()
            }).ToListAsync();

            return(list.FirstOrDefault());
        }
        public async Task <ExamRoomExamPeriod> Get(Guid examRoomId, Guid examPeriodId)
        {
            ExamRoomExamPeriodFilter filter = new ExamRoomExamPeriodFilter
            {
                ExamPeriodId = new GuidFilter {
                    Equal = examPeriodId
                },
                ExamRoomId = new GuidFilter {
                    Equal = examRoomId
                }
            };

            return(await UOW.ExamRoomExamPeriodRepository.Get(filter));
        }
        public async Task <FileResult> ExportStudent(Guid examPeriodId, Guid examRoomId)
        {
            ExamRoomExamPeriodFilter filter = new ExamRoomExamPeriodFilter
            {
                ExamPeriodId = new GuidFilter {
                    Equal = examPeriodId
                },
                ExamRoomId = new GuidFilter {
                    Equal = examRoomId
                }
            };

            byte[] data = await ExamRoomExamPeriodService.ExportStudent(filter);

            return(File(data, "application/octet-stream", "Exam.xlsx"));
        }
        public async Task <FileResult> PrintExamRegisterResult()
        {
            ExamProgram currentExamProgram = await ExamProgramService.GetCurrentExamProgram();

            ExamRoomExamPeriodFilter filter = new ExamRoomExamPeriodFilter
            {
                StudentNumber = CurrentContext.StudentNumber,
                ExamProgramId = new GuidFilter {
                    Equal = currentExamProgram.Id
                },
                OrderBy   = ExamOrder.ExamDate,
                OrderType = OrderType.ASC
            };
            MemoryStream stream = await ExamRoomExamPeriodService.PrintExamRegisterResult(filter);

            // Download Word document in the browser
            return(File(stream, "application/msword", "ExamRegisterResult.docx"));
        }
        public async Task <byte[]> ExportStudent(ExamRoomExamPeriodFilter filter)
        {
            // Lấy dữ liệu trong database
            ExamRoomExamPeriod examRoomExamPeriod = await UOW.ExamRoomExamPeriodRepository.Get(filter);

            // Mở excelPackage
            using (ExcelPackage excel = new ExcelPackage())
            {
                // đặt header
                var examRoomExamPeriodHeaders = new List <string[]>()
                {
                    new string[]
                    {
                        "Tên kỳ thi",
                        "Tên môn thi",
                        "Mã số phòng thi",
                        "Tên giảng đường",
                        "Số lượng máy tính",
                        "Ngày thi",
                        "Giờ bắt đầu",
                        "Giờ kết thúc",
                        "Số lượng thí sinh đã đăng kí"
                    },
                    new string[]
                    {
                        examRoomExamPeriod.ExamProgramName,
                        examRoomExamPeriod.SubjectName,
                        examRoomExamPeriod.ExamRoomNumber.ToString(),
                        examRoomExamPeriod.ExamRoomAmphitheaterName,
                        examRoomExamPeriod.ExamRoomComputerNumber.ToString(),
                        examRoomExamPeriod.ExamDate.ToString("dd-MM-yyyy"),
                        examRoomExamPeriod.StartHour.ToString(),
                        examRoomExamPeriod.FinishHour.ToString(),
                        examRoomExamPeriod.Students.Count.ToString()
                    },
                    new string[]
                    {
                        "STT",
                        "Mã số sinh viên",
                        "Họ",
                        "Tên",
                        "Ngày sinh"
                    }
                };
                // tạo data
                List <object[]> data = new List <object[]>();
                for (int i = 0; i < examRoomExamPeriod.Students.Count; i++)
                {
                    data.Add(new object[] {
                        i + 1,
                        examRoomExamPeriod.Students[i].StudentNumber,
                        examRoomExamPeriod.Students[i].LastName,
                        examRoomExamPeriod.Students[i].GivenName,
                        examRoomExamPeriod.Students[i].Birthday.ToString("dd-MM-yyyy")
                    });
                }
                // tạo worksheet
                excel.GenerateWorksheet("Phòng thi - Ca thi", examRoomExamPeriodHeaders, data);
                // trả về dữ liệu dạng byte
                return(excel.GetAsByteArray());
            }
        }
 public async Task <List <ExamRoomExamPeriod> > List(ExamRoomExamPeriodFilter filter)
 {
     return(await UOW.ExamRoomExamPeriodRepository.List(filter));
 }
        public async Task <MemoryStream> PrintExamRegisterResult(ExamRoomExamPeriodFilter filter)
        {
            // Lấy dữ liệu trong database
            List <ExamRoomExamPeriod> examRoomExamPeriods = await UOW.ExamRoomExamPeriodRepository.List(filter);

            Student student = await UOW.StudentRepository.Get(new StudentFilter
            {
                StudentNumber = new IntFilter {
                    Equal = filter.StudentNumber
                }
            });

            using (WordDocument document = new WordDocument())
            {
                //Adds new section to the document
                IWSection section = document.AddSection();
                //Adds new paragraph to the section
                IWParagraph titleParagraph = section.AddParagraph();
                //Adds new text to the paragraph
                IWTextRange textRange = titleParagraph.AppendText("Kết quả đăng ký dự thi");
                textRange.CharacterFormat.FontSize                 = 20;
                textRange.CharacterFormat.Bold                     = true;
                textRange.CharacterFormat.TextColor                = Color.DarkBlue;
                titleParagraph.ParagraphFormat.AfterSpacing        = 18f;
                titleParagraph.ParagraphFormat.BeforeSpacing       = 18f;
                titleParagraph.ParagraphFormat.FirstLineIndent     = 10f;
                titleParagraph.ParagraphFormat.LineSpacing         = 10f;
                titleParagraph.ParagraphFormat.HorizontalAlignment = Syncfusion.DocIO.DLS.HorizontalAlignment.Center;

                IWParagraph studentNumberParagraph = section.AddParagraph();
                studentNumberParagraph.AppendText("Mã số sinh viên: " + student.StudentNumber.ToString());
                IWParagraph studentNameParagraph = section.AddParagraph();
                studentNameParagraph.AppendText("Họ và tên: " + student.LastName + " " + student.GivenName);
                IWParagraph studentBirthdayParagraph = section.AddParagraph();
                studentBirthdayParagraph.AppendText("Ngày sinh: " + student.Birthday.ToString("dd-MM-yyyy"));
                IWParagraph studentEmailParagraph = section.AddParagraph();
                studentEmailParagraph.AppendText("Email: " + student.Email);


                string[] tableHeaders = new string[]
                {
                    "STT",
                    "Tên môn học",
                    "Ngày thi",
                    "Giờ bắt đầu",
                    "Giờ kết thúc",
                    "Phòng thi",
                    "Giảng đường"
                };
                //Adds a new table into Word document
                IWTable table = section.AddTable();
                //Specifies the total number of rows & columns
                table.ResetCells(examRoomExamPeriods.Count + 1, tableHeaders.Length);
                table.TableFormat.HorizontalAlignment = RowAlignment.Center;
                for (int i = 0; i < tableHeaders.Length; i++)
                {
                    textRange = table[0, i].AddParagraph().AppendText(tableHeaders[i]);
                    textRange.CharacterFormat.Bold = true;
                }

                for (int i = 1; i < table.Rows.Count; i++)
                {
                    table[i, 0].AddParagraph().AppendText(i.ToString());
                    table[i, 1].AddParagraph().AppendText(examRoomExamPeriods[i - 1].SubjectName);
                    table[i, 2].AddParagraph().AppendText(examRoomExamPeriods[i - 1].ExamDate.ToString("dd-MM-yyyy"));
                    table[i, 3].AddParagraph().AppendText(examRoomExamPeriods[i - 1].StartHour.ToString());
                    table[i, 4].AddParagraph().AppendText(examRoomExamPeriods[i - 1].FinishHour.ToString());
                    table[i, 5].AddParagraph().AppendText(examRoomExamPeriods[i - 1].ExamRoomNumber.ToString());
                    table[i, 6].AddParagraph().AppendText(examRoomExamPeriods[i - 1].ExamRoomAmphitheaterName);
                }


                MemoryStream stream = new MemoryStream();
                document.Save(stream, FormatType.Docx);
                //Closes the Word document
                document.Close();
                stream.Position = 0;
                //Download Word document in the browser
                return(stream);
            }
        }
Пример #9
0
        private IQueryable <ExamRoomExamPeriodDAO> DynamicOrder(IQueryable <ExamRoomExamPeriodDAO> query, ExamRoomExamPeriodFilter filter)
        {
            switch (filter.OrderType)
            {
            case OrderType.ASC:
                switch (filter.OrderBy)
                {
                case ExamOrder.SubjectName:
                    query = query.OrderBy(q => q.ExamPeriod.Term.SubjectName);
                    break;

                case ExamOrder.ExamProgramName:
                    query = query.OrderBy(q => q.ExamPeriod.ExamProgram.Name);
                    break;

                case ExamOrder.ExamDate:
                    query = query.OrderBy(q => q.ExamPeriod.ExamDate);
                    break;

                case ExamOrder.StartHour:
                    query = query.OrderBy(q => q.ExamPeriod.StartHour);
                    break;

                default:
                    query = query.OrderBy(q => q.CX);
                    break;
                }
                break;

            case OrderType.DESC:
                switch (filter.OrderBy)
                {
                case ExamOrder.SubjectName:
                    query = query.OrderByDescending(q => q.ExamPeriod.Term.SubjectName);
                    break;

                case ExamOrder.ExamProgramName:
                    query = query.OrderByDescending(q => q.ExamPeriod.ExamProgram.Name);
                    break;

                case ExamOrder.ExamDate:
                    query = query.OrderByDescending(q => q.ExamPeriod.ExamDate);
                    break;

                case ExamOrder.StartHour:
                    query = query.OrderByDescending(q => q.ExamPeriod.StartHour);
                    break;

                default:
                    query = query.OrderByDescending(q => q.CX);
                    break;
                }
                break;

            default:
                query = query.OrderBy(q => q.CX);
                break;
            }
            return(query.Skip(filter.Skip).Take(filter.Take));
        }
Пример #10
0
 private IQueryable <ExamRoomExamPeriodDAO> DynamicFilter(IQueryable <ExamRoomExamPeriodDAO> query, ExamRoomExamPeriodFilter filter)
 {
     if (filter == null)
     {
         return(query.Where(q => 1 == 0));
     }
     if (filter.StudentId != null)
     {
         query = query.Where(q => q.ExamRegisters
                             .Select(r => r.StudentId.Equals(filter.StudentId))
                             .Contains(true));
     }
     if (filter.StudentNumber != null)
     {
         query = query.Where(q => q.ExamRegisters
                             .Select(r => r.Student.StudentNumber == filter.StudentNumber)
                             .Contains(true));
     }
     if (filter.ExamProgramId != null)
     {
         query = query.Where(q => q.ExamPeriod.ExamProgramId, filter.ExamProgramId);
     }
     if (filter.ExamProgramName != null)
     {
         query = query.Where(q => q.ExamPeriod.ExamProgram.Name, filter.ExamProgramName);
     }
     if (filter.ExamPeriodId != null)
     {
         query = query.Where(q => q.ExamPeriodId, filter.ExamPeriodId);
     }
     if (filter.ExamRoomId != null)
     {
         query = query.Where(q => q.ExamRoomId, filter.ExamRoomId);
     }
     if (filter.TermId != null)
     {
         query = query.Where(q => q.ExamPeriod.TermId, filter.TermId);
     }
     return(query);
 }