Example #1
0
        public IEnumerable <DayDto> GetProgramDays(FilterModel filter)
        {
            var result      = new List <DayDto>();
            var properyInfo = typeof(ProgramDay);
            var propery     = properyInfo.GetProperty(filter.SortedField ?? "TrainingLink");

            if (string.IsNullOrEmpty(filter.Term))
            {
                var allDays = GetProgramDays().AsEnumerable();
                allDays = filter.SortAsc ? allDays.OrderBy(p => propery.GetValue(p)) : allDays.OrderByDescending(p => propery.GetValue(p));
                foreach (var d in allDays)
                {
                    var dishes = _dishService.GetDishesForDay(d.Id);
                    result.Add(new DayDto
                    {
                        Id           = d.Id,
                        Name         = d.Name,
                        TrainingLink = d.TrainingLink,
                        ScheduleId   = d.ScheduleId,
                        TypeName     = _programTypeService.GetProgramTypeScheduleId(d.ScheduleId).Name,
                        Dishes       = _mapper.Map <List <DishDto> >(dishes)
                    });
                }
                return(result);
            }
            var days = _context.ProgramDays.Where(u => u.Name.StartsWith(filter.Term) || u.TrainingLink.StartsWith(filter.Term)).AsEnumerable();

            days = filter.SortAsc ? days.OrderBy(p => propery.GetValue(p)) : days.OrderByDescending(p => propery.GetValue(p));
            foreach (var d in days)
            {
                var dishes = _dishService.GetDishesForDay(d.Id);
                result.Add(new DayDto
                {
                    Name         = d.Name,
                    TrainingLink = d.TrainingLink,
                    ScheduleId   = d.ScheduleId,
                    TypeName     = _programTypeService.GetProgramTypeScheduleId(d.ScheduleId).Name,
                    Dishes       = _mapper.Map <List <DishDto> >(dishes)
                });
            }
            return(result);
        }