public String BuildMenu(int menuID, String returnValue, out UssdMenu lastMenu) { lastMenu = null; UssdMenu mainMenu = menus.Where(m => m.Key == menuID).FirstOrDefault().Value; if (mainMenu == null) { return(string.Empty); } UssdMenuItem menuItem = mainMenu.MenuItems.Where(m => m.ReturnValue.Trim() == returnValue.Trim()).FirstOrDefault(); if (menuItem != null && menuItem.ReturnMenu != null) { lastMenu = menuItem.ReturnMenu; return(BuildMenu(menuItem.ReturnMenu.MenuID)); } return(String.Empty); }
protected void LoadCampaignMenu() { //UssdMenuCache menuCache = menuListCache.Where(mc => mc.CampaignID == this.campaignID && mc.UssdNumber == this.ussdNumber).FirstOrDefault(); //if (menuCache != null) // menuList = menuCache.MenuList; //else //{ Database ussdDatabase = DatabaseFactory.CreateDatabase("ExactUSSDDatabase"); DataSet menuDataSet = ussdDatabase.ExecuteDataSet("SP_GetUSSDMenuForCampaign", new Object[] { this.campaignID, this.ussdNumber }); try { menuList.Clear(); menuItems = new Dictionary <int, UssdMenuItem>(); Dictionary <UssdMenuItem, int> returnMenus = new Dictionary <UssdMenuItem, int>(); foreach (DataRow row in menuDataSet.Tables[0].Rows) { int menuID = (int)row["MenuID"]; // Finds or creates the menu object UssdMenu menu = menuList.Where(m => m.MenuID == menuID).FirstOrDefault(); if (menu == null) { int?parentMenuIDRef = null; if (!row.IsNull("ParentMenuIDRef")) { parentMenuIDRef = (int)row["ParentMenuIDRef"]; } // Create the parent menu if it needs to exist UssdMenu parentMenu = null; if (parentMenuIDRef != null) { parentMenu = menuList.Where(m => m.MenuID == parentMenuIDRef.Value).FirstOrDefault(); } menu = new UssdMenu(menuID, (string)row["MenuName"], (int)row["MenuTypeID"], parentMenu); menuList.Add(menu); if (!menus.ContainsKey(menuID)) { menus.Add(menuID, menu); } if (parentMenu != null) { parentMenu.SubMenus.Add(menu); } } int menuItemID = (int)row["MenuItemID"]; UssdMenuItem menuItem = null; if (menuItems.ContainsKey(menuItemID)) { menuItem = menuItems[menuItemID]; } else { int parentMenuItemID = 0; if (!row.IsNull("ParentMenuItemIDRef")) { parentMenuItemID = int.Parse(row["ParentMenuItemIDRef"].ToString()); } String menuData = null; if (!row.IsNull("MenuData")) { menuData = row["MenuData"].ToString(); } menuItem = new UssdMenuItem(menu, menuItemID, (String)row["MenuItemName"], int.Parse(row["DisplayOrder"].ToString()), row["ReturnValue"].ToString(), null, menuData, parentMenuItemID); menuItems.Add(menuItemID, menuItem); } menu.MenuItems.Add(menuItem); int?returnMenuID = null; if (!row.IsNull("ReturnMenuIDRef")) { returnMenuID = (int)row["ReturnMenuIDRef"]; } UssdMenu returnMenu = null; if (returnMenuID != null) { returnMenu = menuList.Where(m => m.MenuID == returnMenuID).FirstOrDefault(); } if (returnMenuID != null) { if (returnMenu == null) { returnMenus.Add(menuItem, returnMenuID.Value); } else { menuItem.ReturnMenu = returnMenu; } } } // Add the return menus as they might only be loaded after the main menu is loaded foreach (KeyValuePair <UssdMenuItem, int> returnMenuPair in returnMenus) { UssdMenu returnMenu = menus.Where(m => m.Key == returnMenuPair.Value).FirstOrDefault().Value; if (returnMenu != null) { returnMenuPair.Key.ReturnMenu = returnMenu; } } //menuListCache.Add(new UssdMenuCache { CampaignID = this.campaignID, MenuList = this.menuList, UssdNumber = this.ussdNumber }); } catch (Exception) { throw; } finally { menuDataSet.Dispose(); } //} }
public UssdMenuItem FindMenuByParentMenuItemId(int parentMenuId) { UssdMenuItem i = menuItems.Where(m => m.Value.ParentMenuItemId.Value.Equals(parentMenuId)).FirstOrDefault().Value; return(i); }