public static Dictionary <int, int> GetModulePercents(TestPassRule testPassRule) { if (testPassRule.ModulePercents.IsEmpty()) { return(new Dictionary <int, int>()); } var percents = JsonConvert.DeserializeObject <Dictionary <int, int> >(testPassRule.ModulePercents); return(percents); }
public void Validate(TestPassRule rule) { var totalPercents = EntityUtils.GetModulePercents(rule).Sum(x => x.Value); ErrorIfFalse(totalPercents == 100 || totalPercents == 0, "Сумма процентов модулей должна быть 100"); ErrorIfFalse(rule.QuestionCount > 0, "Количество вопросов должно быть больше 0"); ErrorIfFalse(rule.Time > 0, "Время должно быть больше 0"); ErrorIfFalse((!rule.AverageMark.HasValue && !rule.ExpertMark.HasValue) || (rule.PassMark < rule.AverageMark && rule.AverageMark < rule.ExpertMark) , "Проходные баллы должны идти по возрастанию"); }
private void SetAndCheckTime(TestPassRule testPassRule, UserTest userTest) { var time = GetRestSeconds(userTest); var ruleTimeInSeconds = testPassRule.Time * 60; var resultTime = ruleTimeInSeconds - time; if (resultTime > 30000) { resultTime = 30000; } if (resultTime > ruleTimeInSeconds + 5 * 60) { userTest.Status = UserTestStatus.Fail; } userTest.Time = (short)resultTime; }
private UserTest SaveUserTest(int id, Test test, TestPassRule testPassRule, string courseTC, int?moduleSetId, bool showAnswers) { var userTest = new UserTest { RunDate = DateTime.Now, Status = UserTestStatus.Fail, TestId = id, TestPassRuleId = testPassRule.Id, Course_TC = courseTC, TestModuleSetId = moduleSetId, ShowAnswers = showAnswers }; userTest.UserId = GetUserId(userTest.IsPrerequisite); UserTestService.EnableTracking(); UserTestService.InsertAndSubmit(userTest); userTest.TestPassRule = testPassRule; GetCurrentTests().Add(userTest); return(userTest); }
public static void SetModulePercents(TestPassRule testPassRule, Dictionary <int, int> percents) { percents = percents ?? new Dictionary <int, int>(); testPassRule.ModulePercents = JsonConvert.SerializeObject(percents); }