Пример #1
0
        private static void setActive(bool?onlyActive, exam output, exam input)
        {
            if (onlyActive == true)
            {
                output.Questions = input.Questions.Where(x => x.Active).ToList();
            }
            else
            {
                output.Questions = input.Questions;
            }

            foreach (var q in output.Questions)
            {
                if (onlyActive == true)
                {
                    q.Answers = q.Answers.Where(x => x.Active).ToList();
                }
                foreach (var a in q.Answers)
                {
                    a.ExamId = output.Id;
                }
            }
        }
Пример #2
0
        public async Task <bool> IsActive(exam exam)
        {
            var savedExam = await ExamApproachesRepo.GetAsync(exam.Id, httpContext.HttpContext.User.Identity.Name);

            return(savedExam != null && savedExam.Start.AddMinutes(exam.DurationMinutes) > DateTime.Today);
        }
Пример #3
0
        public async Task <(string message, bool isUserAssigned, ExamApproacheResult examResult)> CheckExam(exam exam)
        {
            var isUserAssigned = await IsUserAssigned(exam.Code, httpContext.HttpContext.User.Identity.Name);

            var examResult = await ExamApproachesRepo.GetResultAsync(exam.Id, httpContext.HttpContext.User.Identity.Name);

            if (examResult != null)
            {
                return(localizer["The exam has ended"], isUserAssigned, examResult);
            }
            if (!exam.Active)
            {
                return(localizer["Exam {0} is not active, contact the owner: {1}", exam.Code, exam.Login], isUserAssigned, examResult);
            }
            if (!isUserAssigned)
            {
                return(localizer["You are not registered for the exam, you can do it by clicking the button."], isUserAssigned, examResult);
            }
            if (DateTime.Now < exam.MinStart || DateTime.Now > exam.MaxStart)
            {
                return(localizer["You can't start the exam right now, you can start the exam between {0} and {1}", exam.MinStart, exam.MaxStart], isUserAssigned, examResult);
            }
            var savedExam = await ExamApproachesRepo.GetAsync(exam.Id, httpContext.HttpContext.User.Identity.Name);

            if (savedExam != null && savedExam.Start.AddMinutes(exam.DurationMinutes) < DateTime.Today)
            {
                return(localizer["The exam time has passed"], isUserAssigned, examResult);
            }
            return(null, isUserAssigned, examResult);
        }