public ActionResult Result(int userTestId) { UserTestService .LoadWith(c => c.Load(x => x.Test, x => x.TestPassRule)); var userTest = UserTestService.GetByPK(userTestId); if (userTest == null) { return(null); } var isEnglishTest = TestRecomendations.IsEnglishTest(userTest.TestId); var courseTCs = RecomendCourseTCs(userTest); var courseTC = userTest.Test.CourseTCSplitList.FirstOrDefault(); var isTrack = !courseTC.IsEmpty() && CourseService.IsTrack(courseTC); var courses = CourseService.GetCourseLinkList(courseTCs).ToList(); var modules = TestModuleService.GetForTest(userTest.TestId).ToList(); var courseName = DictionaryUtils.GetValueNotDefaultKey( CourseService.GetAllActiveCourseNames(), userTest.Course_TC); var model = new TestResultVM { UserTest = userTest, RecCourses = courses, IsOwned = User != null && User.UserID == userTest.UserId, IsPrivatePerson = User != null && !User.IsCompany, Modules = modules, IsTrack = isTrack, Stats = EntityUtils.GetStats(userTest), IsEnglish = isEnglishTest, CourseName = courseName }; return(BaseView(new PagePart(PartialViewNames.Result, model))); }
private List <string> RecomendCourseTCs(UserTest userTest) { var courseTCs = new List <string>(); var isEnglishTest = TestRecomendations.IsEnglishTest(userTest.TestId); if (userTest.IsPrerequisite && !isEnglishTest) { if (userTest.IsPass) { courseTCs.Add(userTest.Course_TC); } else { courseTCs.AddRange( EntityUtils.GetCoursePreCourses(CoursePrerequisiteService, userTest.Course_TC).Select(x => x.RequiredCourse_TC)); } } else { var recomendations = TestRecomendations.Tests.GetValueOrDefault(userTest.TestId); if (recomendations == null) { courseTCs = SiteObjectRelationService.GetRelation(typeof(Test), _.List <object>(userTest.TestId), typeof(Course)).Select(x => x.RelationObject_ID) .Cast <string>().ToList(); if (courseTCs.Any() && userTest.IsPass) { var parentCourseTCs = CourseService.GetAll(x => courseTCs.Contains(x.Course_TC)) .Select(x => x.ParentCourse_TC).ToList(); courseTCs = CourseService.GetNextCourseTCs(parentCourseTCs); } } else { courseTCs = recomendations.First(x => x.Key <= userTest.RightCount.GetValueOrDefault()).Value; } } return(courseTCs); }