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);
        }
Exemple #2
0
 /// <summary>
 /// Sets the look and feel object that renders this component.
 /// </summary>
 public void setUI(MenuItemUI @ui)
 {
 }