public List <Group> DiscountGroups() { return(MethodBase.GetCurrentMethod().Cache(() => { var special = _.List <decimal>(140447, 149505, 172845, 159670); var maxDate = DateTime.Today.AddDays(8); var groups = GroupService.GetPlannedAndNotBegin() .Where(g => g.Discount > 0 && (g.GroupCalc.NumOfStudents < 8 || special.Contains(g.Group_ID)) && g.DateBeg <= maxDate).NotSpecial().ToList(); var courses = groups.Select(x => x.Course_TC).Distinct().ToList(); var courseIndexes = courses.OrderByDescending(x => PriceService.CoursePriceIndex().GetValueOrDefault(x)).ToList(); return groups.OrderBy(x => x.DateBeg) .ThenBy(x => courseIndexes.IndexOf(x.Course_TC)).ToList(); })); }
private List <Announce> GetAnnouncesForCourses(IEnumerable <string> courseTCs, List <decimal> excludeGroupIds = null) { excludeGroupIds = excludeGroupIds ?? new List <decimal>(); var groups = GroupService.GetGroupsForCourses(courseTCs, true, true).ToList(); if (excludeGroupIds.Any()) { groups = groups.Where(x => !excludeGroupIds.Contains(x.Group_ID)).ToList(); } if (!groups.Any()) { groups = GroupService.GetGroupsForCourses(courseTCs, true) .Where(g => g.DateBeg < DateTime.Today.AddMonths(3)).ToList(); } return(GetAnnounces(groups.OrderByDescending(x => x.IsBlazing) .ThenBy(x => x.IsBlazing ? null : x.DateBeg) .ThenByDescending(x => PriceService.CoursePriceIndex() .GetValueOrDefault(x.Course_TC)).Take(20).AsQueryable()).ToList()); }