public string GetHomeScreen()
        {
            string header;
            string delimiter;

            //clear the cached current dynamic menu selection value
            Session[DoubleOptSubscriptionUSSDProcessor.CurrentDynamicMenuKey] = null;

            CommonUtility.ReturnUSSDCampaignText(Session.Campaign.CampaignID, "rootheader", out header, out delimiter);

            MenuItem currentMenu = new MenuItem();
            string   menuData    = Menu.ShowMenu(0, Session.MainMenuId, ref currentMenu);

            CurrentMenu = currentMenu;
            Session.LastMenuAccessed = CurrentMenu;

            var services = new SubscriptionServiceInfo().ReturnDoubleOptSubscriptionServices();

            int           number      = 0;
            StringBuilder menuBuilder = new StringBuilder(string.Concat(Convert.ToString(menuData), Convert.ToString(header)));

            foreach (var serviceInfo in services)
            {
                number++;
                var dynamicMenu = new DynamicMenu()
                {
                    Number = number, Text = (String.IsNullOrEmpty(serviceInfo.DisplayName) ? serviceInfo.Name : serviceInfo.DisplayName), ServiceInfo = serviceInfo
                };

                menuBuilder.Append(string.Format("{0}: {1}\n", number, dynamicMenu.Text));

                dynamicMenuList.Add(dynamicMenu);
            }

            string termsMenuTitle;

            number++;

            CommonUtility.ReturnUSSDCampaignText(Session.Campaign.CampaignID, "termstitle", out termsMenuTitle, out delimiter);
            menuBuilder.Append(string.Format("{0}{1}", number, termsMenuTitle));
            dynamicMenuList.Add(new DynamicMenu()
            {
                Number = number, Text = termsMenuTitle, ServiceInfo = null
            });

            string adminMenuTitle;

            number++;

            CommonUtility.ReturnUSSDCampaignText(Session.Campaign.CampaignID, "admintitle", out adminMenuTitle, out delimiter);
            menuBuilder.Append(string.Format("{0}{1}", number, adminMenuTitle));
            dynamicMenuList.Add(new DynamicMenu()
            {
                Number = number, Text = termsMenuTitle, ServiceInfo = null
            });

            Session[DoubleOptSubscriptionUSSDProcessor.DynamicMenuKey] = dynamicMenuList;

            return(menuBuilder.ToString());
        }
        public override string ManualOverRide()
        {
            //if (Helper.Message.Equals("0"))
            //    return GoToRootMenu();

            MenuItem currentMenu_Back = new MenuItem();
            string   ret_Val          = Menu.ShowMenu(Convert.ToInt32(menu_Back), Convert.ToInt32(menu_Back), ref currentMenu_Back, false);
            string   BackButton       = currentMenu_Back.Name;
            int      home             = 1;
            string   data             = null;

            if (Helper.Message == "0")
            {
                MenuItem currentMenu = new MenuItem();
                string   results     = "";

                if (Session.LastMenuAccessed.ParentMenuId != 0)
                {
                    results = Menu.ShowMenu(Session.LastMenuAccessed.ParentMenuId, Session.LastMenuAccessed.ParentMenuId, ref currentMenu, false);
                }
                else
                {
                    results = Menu.ShowMenu(home, home, ref currentMenu, false);
                }

                data = results.Replace("DoubleOPT", "");

                Session.LastMenuAccessed = currentMenu;
                return(data);
            }



            // Services subscribed to
            if (CurrentMenu != null && (CurrentMenu.MenuId == menu_ViewSubscriptions || CurrentMenu.MenuId == menu_unsubscribeFullTrackSubscription || CurrentMenu.MenuId == menu_unsubscribeGamesWarehouseSubscription))
            {
                Session.LastMenuAccessed = CurrentMenu;

                MenuItem currentMenu = new MenuItem();

                string retVal = Menu.ShowMenu(Convert.ToInt32(menu_Back), Convert.ToInt32(menu_Back), ref currentMenu, false);

                data = DisplayListOfSubscriptions() + "\n\n" + currentMenu.Name;
            }// Show information how to unsubscribe from service
            else if (Session.LastMenuAccessed.MenuId == menu_ViewSubscriptions || Session.LastMenuAccessed.MenuId == menu_unsubscribeFullTrackSubscription || Session.LastMenuAccessed.MenuId == menu_unsubscribeGamesWarehouseSubscription)
            {
                Dictionary <int, int> subscriptionMenuItems = Session["SubscriptionMenuItems"] as Dictionary <int, int>;
                data = getUnsubscribeInformation(subscriptionMenuItems.Where(m => m.Key == int.Parse(Helper.Message)).FirstOrDefault().Value);

                data = data.Replace("STOP", "STOP ") + "\n\n" + BackButton;
            }// Join Music Club subscription
            else if (CurrentMenu != null && CurrentMenu.MenuId == menu_YesToMusicClubSubscribe)
            {
                Session.LastMenuAccessed = CurrentMenu;


                MenuItem currentMenuBack1 = new MenuItem();

                string ret = Menu.ShowMenu(Convert.ToInt32(menu_Back), Convert.ToInt32(menu_Back), ref currentMenuBack1);

                data = new Subscription().Subscribe(Session.MSISDN, musicClubSubscriptionServiceId, null) + "\n\n" + currentMenuBack1.Name;

                if (data.ToUpper().IndexOf("ALREADY SUBSCRIBED") > 0)
                {
                    MenuItem currentMenu = new MenuItem();

                    string retVal = Menu.ShowMenu(Convert.ToInt32(menu_ALREADY_SUBSCRIBED), Convert.ToInt32(menu_ALREADY_SUBSCRIBED), ref currentMenu);
                    data = currentMenu.Name + "\n\n" + BackButton;
                }
            }
            else if (CurrentMenu != null && CurrentMenu.MenuId == menu_NoToMusicClubSubscribe)
            {
                return(GoToMainMenu());
            }
            else if (CurrentMenu != null && CurrentMenu.MenuId == menu_CancelGameWarehouseSusbcription)
            {
                return(GoToMainMenu());
            }
            else if (CurrentMenu != null && CurrentMenu.MenuId == menu_CancelMusicClubSubscription)
            {
                return(GoToMainMenu());
            }
            else if (CurrentMenu != null && CurrentMenu.MenuId == menu_Join_MusicClubSubscription)
            {
                Session.LastMenuAccessed = CurrentMenu;
                string results = "";

                MenuItem currentMenu = new MenuItem();

                results = Menu.ShowMenu(Convert.ToInt32(menu_Join_MusicClubSubscription), Convert.ToInt32(menu_Join_MusicClubSubscription), ref currentMenu);


                data = results + "\n\n" + BackButton;
            }
            else if (CurrentMenu != null && CurrentMenu.MenuId == menu_Join_Gamewarehouse)
            {
                Session.LastMenuAccessed = CurrentMenu;
                string results = "";

                MenuItem currentMenu = new MenuItem();

                results = Menu.ShowMenu(Convert.ToInt32(menu_Join_Gamewarehouse), Convert.ToInt32(menu_Join_Gamewarehouse), ref currentMenu);


                data = results + "\n\n" + BackButton;
            }
            else if (CurrentMenu != null && CurrentMenu.MenuId == menu_Help)
            {
                Session.LastMenuAccessed = CurrentMenu;

                MenuItem currentMenu = new MenuItem();

                string results = Menu.ShowMenu(Convert.ToInt32(menu_Help), Convert.ToInt32(menu_Help), ref currentMenu);

                data = results.Replace("0. Back", "") + "\n" + BackButton;
            }
            else if (CurrentMenu != null && CurrentMenu.MenuId == menu_JoinGameWarehouseSusbcription)
            {
                Session.LastMenuAccessed = CurrentMenu;
                string   results     = "";
                MenuItem currentMenu = new MenuItem();

                SubscriptionServiceInfo currentSubscription = new SubscriptionServiceInfo(GamewarehouseSubscriptionServiceId);

                var isDoubleOpt = new Subscription().GetDoubleOptActiveStatus(GamewarehouseSubscriptionServiceId, Session.MobileNetworkID);

                if (isDoubleOpt)
                {
                    results = Menu.ShowMenu(Convert.ToInt32(menu_DoubleOPTGameWarehouseSusbcription), Convert.ToInt32(menu_DoubleOPTGameWarehouseSusbcription), ref currentMenu);
                    data    = results.Replace("[clubName]", currentSubscription.DisplayName).Replace("[price]", currentSubscription.Amount.ToString("#.##")).Replace("[frequency]", currentSubscription.BillingFrequency).Replace("DoubleOPT", "");
                    Session.LastMenuAccessed = currentMenu;
                }
                else
                {
                    data = new Subscription().Subscribe(Session.MSISDN, GamewarehouseSubscriptionServiceId, null) + "\n\n" + BackButton;

                    if (data.ToUpper().IndexOf("ALREADY SUBSCRIBED") > 0)
                    {
                        string retVal = Menu.ShowMenu(Convert.ToInt32(menu_ALREADY_SUBSCRIBED_GameWarehouse), Convert.ToInt32(menu_ALREADY_SUBSCRIBED_GameWarehouse), ref currentMenu);

                        data = currentMenu.Name + "\n\n" + BackButton;
                    }
                }
            }

            else if (CurrentMenu != null && CurrentMenu.MenuId == menu_JoinMusicClubSubscription)
            {
                //dddd
                Session.LastMenuAccessed = CurrentMenu;
                string   results     = "";
                MenuItem currentMenu = new MenuItem();

                SubscriptionServiceInfo currentSubscription = new SubscriptionServiceInfo(musicClubSubscriptionServiceId);

                var isDoubleOpt = new Subscription().GetDoubleOptActiveStatus(musicClubSubscriptionServiceId, Session.MobileNetworkID);

                if (isDoubleOpt)
                {
                    results = Menu.ShowMenu(Convert.ToInt32(menu_DoubleOPTMusicClubSubscription), Convert.ToInt32(menu_DoubleOPTMusicClubSubscription), ref currentMenu);
                    data    = results.Replace("[clubName]", currentSubscription.DisplayName).Replace("[price]", currentSubscription.Amount.ToString("#.##")).Replace("[frequency]", currentSubscription.BillingFrequency).Replace("DoubleOPT", "");
                    Session.LastMenuAccessed = currentMenu;
                }
                else
                {
                    data = new Subscription().Subscribe(Session.MSISDN, musicClubSubscriptionServiceId, null) + "\n\n" + BackButton;

                    if (data.ToUpper().IndexOf("ALREADY SUBSCRIBED") > 0)
                    {
                        string retVal = Menu.ShowMenu(Convert.ToInt32(menu_ALREADY_SUBSCRIBED), Convert.ToInt32(menu_ALREADY_SUBSCRIBED), ref currentMenu);

                        data = currentMenu.Name + "\n\n" + BackButton;
                    }
                }
            }
            //menu_ConfirmMusicClubSubscription
            else if (CurrentMenu != null && CurrentMenu.MenuId == menu_ConfirmMusicClubSubscription)
            {
                Session.LastMenuAccessed = CurrentMenu;

                MenuItem currentMenu = new MenuItem();

                data = new Subscription().Subscribe(Session.MSISDN, musicClubSubscriptionServiceId, null) + "\n\n" + BackButton;

                if (data.ToUpper().IndexOf("ALREADY SUBSCRIBED") > 0)
                {
                    string retVal = Menu.ShowMenu(Convert.ToInt32(menu_ALREADY_SUBSCRIBED), Convert.ToInt32(menu_ALREADY_SUBSCRIBED), ref currentMenu);

                    data = currentMenu.Name + "\n\n" + BackButton;
                }
            }
            else if (CurrentMenu != null && CurrentMenu.MenuId == menu_ConfirmGameWarehouseSusbcription)
            {
                Session.LastMenuAccessed = CurrentMenu;

                MenuItem currentMenu = new MenuItem();

                data = new Subscription().Subscribe(Session.MSISDN, GamewarehouseSubscriptionServiceId, null) + "\n\n" + BackButton;

                if (data.ToUpper().IndexOf("ALREADY SUBSCRIBED") > 0)
                {
                    string retVal = Menu.ShowMenu(Convert.ToInt32(menu_ALREADY_SUBSCRIBED_GameWarehouse), Convert.ToInt32(menu_ALREADY_SUBSCRIBED_GameWarehouse), ref currentMenu);

                    data = currentMenu.Name + "\n\n" + BackButton;
                }
            }
            else if (CurrentMenu != null && CurrentMenu.MenuId == menu_SendSMSGreatMobileContent)
            {
                if (Session["greatMobileContentSMSSend"] == null)
                {
                    Session["greatMobileContentSMSSend"] = true;

                    SMS.sendSMS(Session.Campaign.CampaignID, Session.MSISDN, ConfigurationManager.AppSettings["callCenter_SMSGreatMobileContent"]);

                    MenuItem currentMenu = new MenuItem();

                    string retVal = Menu.ShowMenu(Convert.ToInt32(menu_SMS_Link), Convert.ToInt32(menu_SMS_Link), ref currentMenu);

                    data = currentMenu.Name + "\n\n" + BackButton;
                }
                else
                {
                    data = ConfigurationManager.AppSettings["callCenter_SMSAlreadySent"] + "\n\n" + BackButton;
                }
            }
            else if (CurrentMenu != null && CurrentMenu.MenuId == menu_ContactUs)
            {
                Session.LastMenuAccessed = CurrentMenu;
                string   retVal      = null;
                MenuItem currentMenu = new MenuItem();

                retVal = Menu.ShowMenu(Convert.ToInt32(menu_ContactUs), Convert.ToInt32(menu_ContactUs), ref currentMenu);

                data = currentMenu.DisplayData + "\n\n" + BackButton;
            }
            else if (CurrentMenu != null && CurrentMenu.MenuId == menu_ShowToGetWAP)
            {
                Session.LastMenuAccessed = CurrentMenu;
                string   retVal      = null;
                string   results     = null;
                string   line1       = null;
                string   line2       = null;
                MenuItem currentMenu = new MenuItem();



                retVal = Menu.ShowMenu(Convert.ToInt32(menu_ShowToGetWAP), Convert.ToInt32(menu_ShowToGetWAP), ref currentMenu);

                results = currentMenu.DisplayData;


                string[] arr = results.Split('*');

                line1 = arr[0].Trim();
                line2 = arr[1].Trim();

                data = line1 + "\n" + line2 + "\n\n" + BackButton;
                data = data.Replace("*", "");
            }
            else if (CurrentMenu != null && CurrentMenu.MenuId == menu_StopBilling)
            {
                Session.LastMenuAccessed = CurrentMenu;
                string   retVal      = null;
                string   results     = null;
                string   line1       = null;
                string   line2       = null;
                MenuItem currentMenu = new MenuItem();



                retVal = Menu.ShowMenu(Convert.ToInt32(menu_StopBilling), Convert.ToInt32(menu_StopBilling), ref currentMenu);

                results = currentMenu.DisplayData;


                string[] arr = results.Split('*');

                line1 = arr[0].Trim();
                line2 = arr[1].Trim();

                data = line1 + "\n" + line2 + "\n\n" + BackButton;
                data = data.Replace("*", "");
            }

            return(data.Replace("DoubleOPT\r\n", ""));
        }