public static List <MenuSectionGrouped> GetMenuSectionGroupedList(List <OrderItem> orderItems, string barcodeMetadataKey) { var result = new List <MenuSectionGrouped>(); var sectionNames = orderItems.Select(a => new { a.MenuSectionName, a.MenuSectionDisplayOrder }).Distinct().ToList(); int menuSectionDisplayOrder = 0; foreach (string sectionName in sectionNames.OrderBy(a => a.MenuSectionDisplayOrder).Select(a => a.MenuSectionName)) { var menuItemsGroupedList = new List <MenuItemsGrouped>(); int menuItemDisplayOrder = 0; foreach (OrderItem item in orderItems.Where(a => a.MenuSectionName == sectionName).OrderBy(a => a.MenuItemDisplayOrder)) { var menuItemUI = new MenuItemUI(item, barcodeMetadataKey); MenuItemsGrouped menuItemsGrouped = menuItemsGroupedList.SingleOrDefault(a => a.MenuItemUI.HashCode == menuItemUI.HashCode); if (menuItemsGrouped != null) { menuItemsGrouped.Count++; } else { menuItemsGrouped = new MenuItemsGrouped { MenuItemUI = menuItemUI, Count = 1, DisplayOrder = menuItemDisplayOrder++ }; menuItemsGroupedList.Add(menuItemsGrouped); } } var menuSectionGrouped = new MenuSectionGrouped { Name = sectionName, DisplayOrder = menuSectionDisplayOrder++, MenuItemsGroupedList = menuItemsGroupedList }; result.Add(menuSectionGrouped); } return(result); }
/// <summary> /// Sets the look and feel object that renders this component. /// </summary> public void setUI(MenuItemUI @ui) { }