Example #1
0
 public UssdMenu(int menuID, String name, MenuTypes menuType, UssdMenu parentMenu)
 {
     this.MenuID     = menuID;
     this.Name       = name;
     this.MenuType   = menuType;
     this.ParentMenu = parentMenu;
 }
Example #2
0
 public UssdMenu(int menuID, String name, int menuTypeID, UssdMenu parentMenu)
 {
     this.MenuID     = menuID;
     this.Name       = name;
     this.ParentMenu = parentMenu;
     this.MenuType   = (MenuTypes)Enum.Parse(typeof(MenuTypes), menuTypeID.ToString(), true);
 }
Example #3
0
        public UssdMenuItem FindMenuItemByReturnValue(UssdMenu parentMenu, string returnValue)
        {
            if (parentMenu == null)
            {
                return(null);
            }

            return(parentMenu.MenuItems.Where(mi => mi.ReturnValue.Equals(returnValue)).FirstOrDefault());
        }
Example #4
0
        public String BuildMenu(int?menuID)
        {
            UssdMenu mainMenu = menus.Where(m => m.Key == menuID).FirstOrDefault().Value;

            if (mainMenu == null)
            {
                return(string.Empty);
            }

            StringBuilder result = new StringBuilder();

            foreach (UssdMenuItem menuItem in mainMenu.MenuItems)
            {
                result.AppendLine(menuItem.Name);
            }
            return(result.ToString());
        }
Example #5
0
        public UssdMenuItem(UssdMenu parentMenu, int menuItemID, String name, int displayOrder, String returnValue, UssdMenu returnMenu, String menuData, int parentMenuItemID)
        {
            this.MenuItemID       = menuItemID;
            this.Name             = name;
            this.ReturnMenu       = returnMenu;
            this.DisplayOrder     = displayOrder;
            this.ReturnValue      = returnValue;
            this.ParentMenu       = parentMenu;
            this.ParentMenuItemId = parentMenuItemID;

            if (menuData != null)
            {
                this.MenuData = menuData;
            }
            else
            {
                this.MenuData = String.Empty;
            }
        }
Example #6
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);
        }
Example #7
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();
            }
            //}
        }