Пример #1
0
        public ActionResult Start(int id, string courseTC, int?moduleSetId)
        {
            var test      = TestService.GetFullTest(id);
            var groupTest = StudentInGroupService.GetUserGroupTest(id);

            if (groupTest != null && groupTest.AttemptCount.HasValue)
            {
                var count = UserTestService.GetUserTests(groupTest)
                            .Count(x => x.UserId == GetUserId(false));
                if (count >= groupTest.AttemptCount.Value)
                {
                    return(BaseView(new PagePart("Вы использовали все попытки для сдачи теста")));
                }
            }
            var userTests = GetCurrentTests();
            var userTest  = userTests.FirstOrDefault(x => x.TestId == id &&
                                                     x.UserId == GetUserId(courseTC != null));

            if (userTest == null)
            {
                var rule = test.TestPassRule;
                if (groupTest != null)
                {
                    rule = groupTest.TestPassRule;
                }
                if (moduleSetId.HasValue)
                {
                    rule = TestModuleSetService.GetValues(moduleSetId.Value,
                                                          x => x.TestPassRule);
                }
                var showAnswers = false;
//				if (User.GetOrDefault(x => x.Student_ID) > 0) {
//					var paidCourses = StudentService.GetPaidCourseTCs(User.Student_ID.Value);
//					showAnswers = test.CourseTCSplitList.Intersect(paidCourses).Any();
//				}
                userTest = SaveUserTest(id, test, rule, courseTC, moduleSetId, showAnswers);
            }

            var model = new TestRunVM {
                Test = test, UserTest = userTest
            };

            if (userTest.IsPrerequisite)
            {
                var otherPretests = CoursePrerequisiteService.GetTestIds(
                    courseTC).Skip(1).ToList();
                if (otherPretests.Any())
                {
                    model.OtherPreTestQuestions = GetQuestions(otherPretests).ToList();
                }
            }

            if (test.TestIds.Any())
            {
                model.OtherPreTestQuestions = GetQuestions(test.TestIds).ToList();
            }

            return(BaseView(new TestRunView(), model));
        }
Пример #2
0
 private List <int> GetAllTestIds(UserTest userTest)
 {
     if (userTest.Test.TestIds.Any())
     {
         return(userTest.Test.TestIds);
     }
     if (userTest.IsPrerequisite)
     {
         return(CoursePrerequisiteService.GetTestIds(
                    userTest.Course_TC).ToList());
     }
     return(_.List(userTest.TestId));
 }
Пример #3
0
        public ActionResult Prerequisites()
        {
            var courseTCs = CoursePrerequisiteService.GetAll(x => x.Test_ID != null &&
                                                             x.Course.IsActive).Select(x =>
                                                                                       x.Course_TC).ToList();


            var courses = CourseService.GetAll()
                          .Where(x => courseTCs.Contains(x.Course_TC)).ToList();
            var sectionCourses = GroupVmService.GetSectionCourses(courses).ToList();

            return(BaseView(Views.Test.Prerequisites,
                            new PrerequisiteTestsVM {
                Courses = sectionCourses
            }));
        }
Пример #4
0
        public ActionResult CourseRecommendations(string id)
        {
            var model = new List <FullCourseCoef>();

            if (!id.IsEmpty())
            {
                var parentTC = CourseService.GetValues(id, x => x.ParentCourse_TC);
                var context  = new RecRepository().GetContext();
                var coefs    = GetCoefs(context, parentTC);
                if (coefs.Any())
                {
                    var preCourses = CoursePrerequisiteService.GetAll(x => x.Course_TC == id)
                                     .Select(x => x.RequiredCourse.ParentCourse_TC).ToList();
                    coefs = coefs.Where(x => !preCourses.Contains(x.Item1)).ToList();


                    model = GetCourses(coefs);
                }
            }
            return(View(model));
        }
Пример #5
0
        ActionResult GetDetailsView(int id, string courseTC, int?moduleSetId)
        {
            var test = TestService.GetByPK(id);

            if (courseTC != null && CoursePrerequisiteService.GetTestIds(
                    courseTC).All(x => x != id))
            {
                return(NotFound());
            }

            if (!StudentInGroupService.CalcTestIsActive(test))
            {
                return(NotFound());
            }
            return(BaseView(Views.TestRun.Details, new TestRunDetailsVM {
                Test = test,
                CourseName = DictionaryUtils.GetValueNotDefaultKey(
                    CourseService.GetAllActiveCourseNames(), courseTC),
                ModuleSetId = moduleSetId,
                CourseTC = courseTC,
            }));
        }
Пример #6
0
        public ActionResult Prerequisite(decimal courseId)
        {
            var course             = CourseService.FirstOrDefault(x => x.Course_ID == courseId);
            var courseTC           = course.Course_TC;
            var coursePrerequisite = CoursePrerequisiteService.GetForCourse(courseTC).FirstOrDefault();

            if (coursePrerequisite == null)
            {
                return(null);
            }
            TestService.LoadWith(x => x.Author);
            var test       = TestService.GetByPK(coursePrerequisite.Test_ID);
            var preCourses = EntityUtils.GetCoursePreCourses(CoursePrerequisiteService, courseTC)
                             .Select(x => x.RequiredCourse).ToList();
            var model = new PrerequisiteTestVM {
                Test = test,
                CoursePrerequisite  = coursePrerequisite,
                Course              = course,
                PrerequisiteCourses = preCourses
            };

            return(BaseView(Views.Test.Prerequisite, model));
        }
Пример #7
0
        private List <Course> GetCourses(string entityCourseTCList, List <string> completeCourseTC)
        {
            List <Course> courses;
            var           courseTCs        = StringUtils.SafeSplit(entityCourseTCList);
            var           unStudyCourseTCs = courseTCs
                                             .Where(x => !completeCourseTC.Contains(x)).ToList();
            var prerequsisite = CoursePrerequisiteService.GetAll(x =>
                                                                 unStudyCourseTCs.Contains(x.Course_TC) &&
                                                                 x.RequiredCourse_TC != null && x.RequiredCourse.IsActive)
                                .Select(x => new {
                x.Course_TC,
                x.RequiredCourse_TC
            }).ToList().GroupByToDictionary(x => x.Course_TC,
                                            x => x.RequiredCourse_TC);

            courseTCs = courseTCs.SelectMany(x =>
                                             _.List(x).AddFluent(prerequsisite.GetValueOrDefault(x)))
                        .ToList();
            courseTCs = courseTCs.Distinct().ToList();
            courses   = CourseService.GetAll(x => courseTCs.Contains(x.Course_TC))
                        .ToList();
            return(courses);
        }