示例#1
0
        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);
        }
示例#2
0
        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();
            }
            //}
        }
示例#3
0
        public UssdMenuItem FindMenuByParentMenuItemId(int parentMenuId)
        {
            UssdMenuItem i = menuItems.Where(m => m.Value.ParentMenuItemId.Value.Equals(parentMenuId)).FirstOrDefault().Value;

            return(i);
        }