Пример #1
0
        public MenuOrder(Menu menu, DateTime date, IEnumerable <EmployeeMenu> employeeMenues)
        {
            Date   = date.Date;
            Id     = GenerateId(menu.Id, date);
            MenuId = menu.Id;

            DetailByUserName = new Dictionary <string, MenuOrderDetailItem>();
            PlacesByKey      = menu.Places.ToDictionary(x => x.Key, x => x.Text);
            OptionsByKey     = menu.Options.ToDictionary(x => x.Key, x => x.Text);

            var dayWeek = menu.GetWeekDay(Date);

            DayIdx  = dayWeek.DayIdx;
            WeekIdx = dayWeek.WeekIdx;

            FoodsByOption = OptionsByKey
                            .Select(x => menu.Foods.GetItemSecurely(new WeekDayOptionKey()
            {
                WeekIdx = WeekIdx, DayIdx = DayIdx, OptionKey = x.Key
            }))
                            .Where(x => !string.IsNullOrWhiteSpace(x.Food))
                            .ToDictionary(x => x.OptionKey, x => x.Food);

            employeeMenues = employeeMenues ?? Enumerable.Empty <EmployeeMenu>();

            foreach (var employeeMenu in employeeMenues)
            {
                DetailByUserName[employeeMenu.UserName] = CreateDetailItem(employeeMenu);
            }

            QuantityByOptionByPlace = DetailByUserName.Values
                                      .Where(x => IsNotEmpty(x.PlaceKey) && IsNotEmpty(x.OptionKey))
                                      .GroupBy(x => x.PlaceKey)
                                      .ToDictionary(
                x => x.Key,
                x => x.GroupBy(y => y.OptionKey).ToDictionary(y => y.Key, y => y.Count()));
        }
Пример #2
0
 private bool IsValidOption(string optionKey)
 {
     return(OptionsByKey.ContainsKey(optionKey) && FoodsByOption.ContainsKey(optionKey) && !string.IsNullOrWhiteSpace(FoodsByOption[optionKey]));
 }