コード例 #1
0
        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 <ExamProgram> Delete(ExamProgram examProgram)
        {
            if (!await ExamProgramValidator.Delete(examProgram))
            {
                return(examProgram);
            }

            using (UOW.Begin())
            {
                try
                {
                    examProgram = await UOW.ExamProgramRepository.Get(examProgram.Id);

                    await UOW.ExamProgramRepository.Delete(examProgram.Id);

                    await UOW.Commit();
                }
                catch (Exception e)
                {
                    await UOW.Rollback();

                    examProgram.AddError(nameof(ExamProgramService), nameof(Delete), CommonEnum.ErrorCode.SystemError);
                }
            }
            return(examProgram);
        }
        public void ShouldRenderIndexViewCorrectly()
        {
            Mock <IGenericService <ExamProgram> > examProgramServiceMock = new Mock <IGenericService <ExamProgram> >();

            ExamProgram examProgram = new ExamProgram()
            {
                Id        = 100,
                StartDate = DateTime.Now.Date
            };

            examProgramServiceMock.Setup(m => m.FindAll(It.IsAny <string[]>(), It.IsAny <int>(), It.IsAny <int>())).Returns(new List <ExamProgram>()
            {
                examProgram,
                new ExamProgram()
                {
                    Id = 101
                },
                new ExamProgram()
                {
                    Id = 102
                },
            });

            ExamProgramController controller = new ExamProgramController(examProgramServiceMock.Object);
            List <ExamProgram>    model      = (controller.Index() as ViewResult)?.ViewData.Model as List <ExamProgram>;

            Assert.Equal(3, model.Count);
            Assert.Equal(100, model[0].Id);
            Assert.Equal(101, model[1].Id);
            Assert.Equal(DateTime.Now.Date, model[0].StartDate);
        }
コード例 #4
0
        public async Task <ExamProgram> Create(ExamProgram examProgram)
        {
            if (!await ExamProgramValidator.Create(examProgram))
            {
                return(examProgram);
            }

            using (UOW.Begin())
            {
                try
                {
                    examProgram.Id = Guid.NewGuid();

                    examProgram = await GetSemesterId(examProgram);

                    await UOW.ExamProgramRepository.Create(examProgram);

                    await UOW.Commit();

                    return(examProgram);
                }
                catch (Exception e)
                {
                    await UOW.Rollback();

                    examProgram.AddError(nameof(ExamProgramService), nameof(Create), CommonEnum.ErrorCode.SystemError);
                    return(examProgram);
                }
            }
        }
コード例 #5
0
        private bool ValidateStringLength(ExamProgram examProgram)
        {
            if (string.IsNullOrEmpty(examProgram.Name))
            {
                examProgram.AddError(nameof(ExamProgramValidator), nameof(examProgram.Name), ERROR.StringEmpty);
                return(false);
            }
            else if (examProgram.Name.Length > 100)
            {
                examProgram.AddError(nameof(ExamProgramValidator), nameof(examProgram.Name), ERROR.StringLimited);
                return(false);
            }

            if (string.IsNullOrEmpty(examProgram.SemesterCode))
            {
                examProgram.AddError(nameof(ExamProgramValidator), nameof(examProgram.SemesterCode), ERROR.SemesterCodeEmpty);
                return(false);
            }
            else if (Regex.IsMatch(examProgram.SemesterCode, @"^\d{4}_\d{4}_\d") == false)
            {
                examProgram.AddError(nameof(ExamProgramValidator), nameof(examProgram.SemesterCode), ERROR.SemesterCodeInValid);
                return(false);
            }
            return(true);
        }
コード例 #6
0
        public async Task <List <ExamPeriodDTO> > ListCurrentExamPeriod()
        {
            ExamProgram currentExamProgram = await ExamProgramService.GetCurrentExamProgram();

            ExamPeriodFilter filter = new ExamPeriodFilter
            {
                StudentNumber = CurrentContext.StudentNumber,
                ExamProgramId = new GuidFilter {
                    Equal = currentExamProgram.Id
                }
            };
            List <ExamPeriod> res = await ExamPeriodService.List(filter);

            return(res.Select(r => new ExamPeriodDTO
            {
                Id = r.Id,
                TermId = r.TermId,
                ExamProgramId = r.ExamProgramId,
                SubjectName = r.SubjectName,
                ExamDate = r.ExamDate.ToString("dd-MM-yyyy"),
                StartHour = r.StartHour,
                FinishHour = r.FinishHour,
                ExamProgramName = r.ExamProgramName,
                Errors = r.Errors
            }).ToList());
        }
        public ActionResult <Course> DeleteCourse(int id, int courseId)
        {
            ExamProgram examprogram = dataService.FindById <ExamProgram>(id, new string[] { "Courses" });
            Course      course      = dataService.FindById <Course>(courseId);

            if (course == null)
            {
                return(NotFound("Course not found"));
            }
            else if (examprogram == null)
            {
                return(NotFound("Examprogram not found"));
            }

            foreach (Course courseIn in examprogram.Courses)
            {
                if (courseIn.Id == courseId)
                {
                    examprogram.Courses.Remove(courseIn);
                    break;
                }
            }

            if (dataService.Update <ExamProgram>(examprogram) != 1)
            {
                return(StatusCode(500));
            }
            return(new OkObjectResult(examprogram));
        }
コード例 #8
0
        public async Task <List <TermDTO> > ListTerm()
        {
            ExamProgram currentExamProgram = await ExamProgramService.GetCurrentExamProgram();

            if (currentExamProgram == null)
            {
                return(new List <TermDTO>());
            }
            List <Term> terms = await TermService.List(new TermFilter
            {
                SemesterId = new GuidFilter {
                    Equal = currentExamProgram.SemesterId
                },
                OrderBy   = TermOrder.SubjectName,
                OrderType = OrderType.ASC
            });

            return(terms.Select(t => new TermDTO
            {
                Id = t.Id,
                SubjectName = t.SubjectName,
                SemesterId = t.SemesterId,
                SemesterCode = t.SemesterCode,
                Errors = t.Errors
            }).ToList());
        }
コード例 #9
0
        public async Task <bool> Delete(ExamProgram examProgram)
        {
            bool IsValid = true;

            IsValid &= await ValidateId(examProgram);

            return(IsValid);
        }
コード例 #10
0
        public async Task <bool> Update(ExamProgram examProgram)
        {
            bool IsValid = true;

            IsValid &= await ValidateId(examProgram);

            IsValid &= ValidateStringLength(examProgram);
            return(IsValid);
        }
        public ActionResult <ExamProgram> Get(int id)
        {
            ExamProgram result = dataService.FindById <ExamProgram>(id);

            if (result == null)
            {
                return(NotFound("Examprogram not found"));
            }

            return(new OkObjectResult(result));
        }
        public ActionResult <IEnumerable <Course> > GetCourses(int id)
        {
            ExamProgram course = dataService.FindById <ExamProgram>(id, new string[] { "Courses" });

            if (course == null)
            {
                return(NotFound("Examprogram not found"));
            }

            return(new OkObjectResult(course.Courses));
        }
コード例 #13
0
        public async Task <bool> Update(ExamProgram examProgram)
        {
            await examRegContext.ExamProgram.Where(t => t.Id.Equals(examProgram.Id)).UpdateFromQueryAsync(t => new ExamProgramDAO
            {
                Name       = examProgram.Name,
                SemesterId = examProgram.SemesterId,
                IsCurrent  = examProgram.IsCurrent
            });

            return(true);
        }
        public IActionResult Delete(int id)
        {
            ExamProgram   examProgram  = examProgramService.FindById(id);
            IActionResult actionResult = View();

            if (examProgramService.Delete(examProgram) == 1)
            {
                actionResult = RedirectToAction(nameof(Index));
            }

            return(actionResult);
        }
コード例 #15
0
        public async Task <ExamProgramDTO> GetCurrentExamProgram()
        {
            ExamProgram res = await ExamProgramService.GetCurrentExamProgram();

            return(new ExamProgramDTO
            {
                Id = res.Id,
                Name = res.Name,
                SemesterId = res.SemesterId,
                SemesterCode = res.SemesterCode,
                IsCurrent = res.IsCurrent,
                Errors = res.Errors
            });
        }
コード例 #16
0
        public async Task <ExamProgram> GetSemesterId(ExamProgram examProgram)
        {
            SemesterFilter filter = new SemesterFilter
            {
                Code = new StringFilter {
                    Equal = examProgram.SemesterCode
                }
            };

            Semester semester = await UOW.SemesterRepository.Get(filter);

            examProgram.SemesterId = semester.Id;

            return(examProgram);
        }
        public IActionResult Create(ExamProgram examProgram)
        {
            IActionResult actionResult = View(examProgram);

            if (!ModelState.IsValid)
            {
                actionResult = View("Error");
            }
            else if (examProgramService.Insert(examProgram) == 1)
            {
                actionResult = RedirectToAction(nameof(Index));
            }

            return(actionResult);
        }
        public ActionResult <ExamProgram> Post([FromBody] ExamProgramViewModel value)
        {
            ExamProgram program = new ExamProgram
            {
                StartDate = value.StartDate,
                EndDate   = value.EndDate
            };

            if (dataService.Insert <ExamProgram>(program) != 1)
            {
                return(StatusCode(500));
            }

            return(new OkObjectResult(program));
        }
コード例 #19
0
        public async Task <bool> Create(ExamProgram examProgram)
        {
            ExamProgramDAO examProgramDAO = new ExamProgramDAO()
            {
                Id         = examProgram.Id,
                Name       = examProgram.Name,
                SemesterId = examProgram.SemesterId,
                IsCurrent  = false
            };
            await examRegContext.ExamProgram.AddAsync(examProgramDAO);

            await examRegContext.SaveChangesAsync();

            return(true);
        }
        public IActionResult Edit(ExamProgram examProgram)
        {
            IActionResult actionResult = View(examProgram);

            if (!ModelState.IsValid)
            {
                var errors = ModelState.Values;
                actionResult = View("Error");
            }
            else if (examProgramService.Update(examProgram) == 1)
            {
                actionResult = RedirectToAction(nameof(Index));
            }

            return(actionResult);
        }
        public ActionResult <ExamProgram> Delete(int id)
        {
            ExamProgram result = dataService.FindById <ExamProgram>(id);

            if (result == null)
            {
                return(NotFound("ExamProgram not found"));
            }

            if (dataService.Delete(result) != 1)
            {
                return(StatusCode(500));
            }

            return(new OkObjectResult(result));
        }
コード例 #22
0
        /*private async Task<bool> ValidateExist(ExamProgram ExamProgram)
         * {
         *  ExamProgramFilter filter = new ExamProgramFilter
         *  {
         *      Name = new StringFilter { Equal = ExamProgram.Name },
         *      SemesterCode = new StringFilter { Equal = ExamProgram.SemesterCode }
         *  };
         *
         *  int count = await UOW.ExamProgramRepository.Count(filter);
         *  if (count == 0)
         *  {
         *      ExamProgram.AddError(nameof(ExamProgramValidator), nameof(ExamProgram), ERROR.NotExisted);
         *      return false;
         *  }
         *  return true;
         * }*/
        public async Task <bool> ValidateId(ExamProgram examProgram)
        {
            ExamProgramFilter filter = new ExamProgramFilter
            {
                Id = new GuidFilter {
                    Equal = examProgram.Id
                },
            };
            int count = await UOW.ExamProgramRepository.Count(filter);

            if (count == 0)
            {
                examProgram.AddError(nameof(ExamProgramValidator), nameof(examProgram), ERROR.IdNotFound);
            }

            return(count == 1);
        }
        public void ShouldRenderDetailViewCorrectly()
        {
            Mock <IGenericService <ExamProgram> > examProgramServiceMock = new Mock <IGenericService <ExamProgram> >();

            ExamProgram examProgram = new ExamProgram()
            {
                Id        = 100,
                StartDate = DateTime.Now.Date
            };

            examProgramServiceMock.Setup(m => m.FindById(It.IsAny <int>(), It.IsAny <string[]>())).Returns(examProgram);

            ExamProgramController controller = new ExamProgramController(examProgramServiceMock.Object);
            ExamProgram           model      = (controller.Details(examProgram.Id) as ViewResult)?.ViewData.Model as ExamProgram;

            Assert.Equal(100, model.Id);
            Assert.Equal(DateTime.Now.Date, model.StartDate);
        }
コード例 #24
0
        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"));
        }
コード例 #25
0
        public async Task <ExamProgramDTO> SetCurrentExamProgram([FromBody] ExamProgramDTO examProgramRequestDTO)
        {
            ExamProgram examProgram = new ExamProgram
            {
                Id = examProgramRequestDTO.Id
            };
            ExamProgram res = await ExamProgramService.SetCurrentExamProgram(examProgram);

            return(new ExamProgramDTO
            {
                Id = res.Id,
                SemesterId = res.SemesterId,
                Name = res.Name,
                SemesterCode = res.SemesterCode,
                IsCurrent = res.IsCurrent,
                Errors = res.Errors
            });
        }
        public ActionResult <Course> GetCourse(int id, int courseId)
        {
            ExamProgram program = dataService.FindById <ExamProgram>(id, new string[] { "Courses" });

            if (program == null)
            {
                return(NotFound("Examprogram not found"));
            }

            foreach (Course course in program.Courses)
            {
                if (course.Id == courseId)
                {
                    return(new OkObjectResult(course));
                }
            }

            return(NotFound("Course not found"));
        }
        public ActionResult <ExamProgram> Put(int id, [FromBody] ExamProgramViewModel value)
        {
            ExamProgram program = dataService.FindById <ExamProgram>(id);

            if (program == null)
            {
                return(NotFound("Examprogram not found!"));
            }

            program.EndDate   = value.EndDate;
            program.StartDate = value.StartDate;

            if (dataService.Update <ExamProgram>(program) != 1)
            {
                return(StatusCode(500));
            }

            return(new OkObjectResult(program));
        }
        public void CannotEditWithMissingValues()
        {
            Mock <IGenericService <ExamProgram> > examProgramServiceMock = new Mock <IGenericService <ExamProgram> >();

            ExamProgram examProgram = new ExamProgram()
            {
                Id      = 100,
                Courses = null
            };

            ClaimsPrincipal identity = new ClaimsPrincipal(new ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, "123")
            }));

            examProgramServiceMock.Setup(m => m.Update(It.IsAny <ExamProgram>())).Returns((ExamProgram model) =>
            {
                if (model.StartDate != null && model.EndDate != null && model.Courses != null && !string.IsNullOrWhiteSpace(model.Name))
                {
                    return(1);
                }

                return(0);
            });

            ExamProgramController controller = new ExamProgramController(examProgramServiceMock.Object)
            {
                ControllerContext = new ControllerContext()
                {
                    HttpContext = new DefaultHttpContext()
                    {
                        User = identity
                    }
                }
            };

            ViewResult result = controller.Edit(examProgram) as ViewResult;

            Assert.NotNull(result);
            Assert.NotNull(result.Model);
            Assert.True(string.IsNullOrEmpty(result.ViewName) || result.ViewName == "Edit");
        }
        public void ShouldGetOneItemWithFindByIdMethod()
        {
            Mock <IGenericRepository <ExamProgram> > examProgramRepositoryMock = new Mock <IGenericRepository <ExamProgram> >();
            Mock <IActivityLoggerService>            activityLoggerMock        = new Mock <IActivityLoggerService>();

            examProgramRepositoryMock.Setup((e) => e.FindById("10", null)).Returns(new ExamProgram()
            {
                Id        = 10,
                EndDate   = System.DateTime.Now.AddYears(1),
                StartDate = System.DateTime.Now,
                Courses   = new List <Course>()
            });

            IGenericService <ExamProgram> ExamProgramService = new GenericService <ExamProgram>(examProgramRepositoryMock.Object, activityLoggerMock.Object);

            ExamProgram result = ExamProgramService.FindById("10");

            Assert.NotNull(result);
            Assert.Equal(10, result.Id);
        }
        public void ShouldCreateCorrectly()
        {
            Mock <IGenericService <ExamProgram> > examProgramServiceMock = new Mock <IGenericService <ExamProgram> >();

            ExamProgram examProgram = new ExamProgram()
            {
                Id        = 100,
                StartDate = DateTime.Now.Date,
                EndDate   = DateTime.Now.Date.AddDays(30)
            };

            ClaimsPrincipal identity = new ClaimsPrincipal(new ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, "123")
            }));

            examProgramServiceMock.Setup(m => m.Insert(It.IsAny <ExamProgram>())).Returns((ExamProgram model) =>
            {
                if (model.StartDate != null && model.EndDate != null && model.Courses != null && !string.IsNullOrWhiteSpace(model.Name))
                {
                    return(1);
                }

                return(0);
            });

            ExamProgramController controller = new ExamProgramController(examProgramServiceMock.Object)
            {
                ControllerContext = new ControllerContext()
                {
                    HttpContext = new DefaultHttpContext()
                    {
                        User = identity
                    }
                }
            };

            RedirectToActionResult result = controller.Create(examProgram) as RedirectToActionResult;

            Assert.Equal("Index", result?.ActionName);
        }