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); }