Beispiel #1
0
 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();
     }));
 }
Beispiel #2
0
        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());
        }