示例#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()));
        }
        public static EmployeeMenuDTO Create(Employee employee, Menu menuDefinition, EmployeeMenu employeeMenu, MenuOrder lastOrder)
        {
            employeeMenu.EmployeeName = string.Format("{0}, {1}", employee.LastName, employee.FirstName);

            var result = new EmployeeMenuDTO
            {
                EmployeeMenu = employeeMenu,
                MenuDefinition = menuDefinition
            };

            if (lastOrder != null && lastOrder.DetailByUserName.ContainsKey(employee.UserName))
            {
                var detail = lastOrder.DetailByUserName[employee.UserName];
                result.LastOrder = new EmployeeMenuOrderDTO()
                {
                    Date = menuDefinition.LastOrderDate,
                    Option = detail.OptionKey == null ? null : lastOrder.OptionsByKey[detail.OptionKey],
                    Place = detail.PlaceKey == null ? null : lastOrder.PlacesByKey[detail.PlaceKey],
                    Comment = detail.Comment,
                    Food = detail.OptionKey == null ? null : lastOrder.FoodsByOption[detail.OptionKey],
                    WeekIdx = lastOrder.WeekIdx,
                    DayIdx = lastOrder.DayIdx,
                    IsOrdered = true
                };
            }
            else if (lastOrder != null)
            {
                result.LastOrder = new EmployeeMenuOrderDTO()
                {
                    Date = menuDefinition.LastOrderDate,
                    Option = null,
                    Place = null,
                    Comment = "// El usuario no existía al momento de hacer el pedido //",
                    Food = null,
                    WeekIdx = lastOrder.WeekIdx,
                    DayIdx = lastOrder.DayIdx,
                    IsOrdered = true
                };
            }

            return result;
        }
 public JsonNetResult PostMenuDefinition(Menu menuDefinition)
 {
     ExecuteCommand(new UpdateMenuDefinitionCommand(menuDefinition, DateTime.Now));
     return Json(new { ok = true });
 }