public ActionResult AddNumber(string phoneNumber)
        {
            string password = Request.Form["Password"];

            phoneNumber = GetCookie("Acct", "phone_number");
            bool flag = true;

            if (string.IsNullOrEmpty(phoneNumber))
            {
                ViewBag.ValidNumber = false;
                ViewBag.PhoneNumber = "";
                flag = false;
            }

            ViewBag.PhoneNumber = phoneNumber;

            string otp = Request.Form["Password"];

            if (flag && (string.IsNullOrEmpty(otp) || otp.Length < 4))
            {
                ViewBag.ValidNumber  = true;
                ViewBag.Error        = true;
                ViewBag.ErrorMessage = System.Configuration.ConfigurationManager.AppSettings["Validate010"];
                flag = false;
            }

            if (flag)
            {
                int result = OTPHandler.ValidateOTP(phoneNumber, otp);
                switch (result)
                {
                case 0:
                    int account_id = Convert.ToInt32(Session["Account_Id"].ToString());
                    var account    = db.Accounts.SingleOrDefault(x => x.Account_Id == account_id);
                    if (account == null)
                    {
                        return(HttpNotFound());
                    }
                    AccountMobile am           = db.AccountMobiles.Where(x => x.Account_Id.Equals(account.Account_Id)).Where(x => x.Mobile_Number.Equals(phoneNumber)).SingleOrDefault();
                    bool          first_create = false;

                    if (am == null)
                    {
                        am               = new AccountMobile();
                        am.Account_Id    = account.Account_Id;
                        am.Status_Cd     = FreebieStatus.MobileActive();
                        am.Mobile_Number = phoneNumber;
                        am.Primary_Flag  = false;
                        am.Created_Dttm  = DateTime.Now;
                        am.Updated_Dttm  = DateTime.Now;
                        first_create     = true;
                    }

                    if (first_create)
                    {
                        db.AccountMobiles.Add(am);
                    }
                    else
                    {
                        am.Status_Cd       = FreebieStatus.MobileActive();
                        am.Created_Dttm    = DateTime.Now;
                        am.Updated_Dttm    = DateTime.Now;
                        db.Entry(am).State = EntityState.Modified;
                    }


                    OTP otp_request = db.OTPs.SingleOrDefault(x => x.PhoneNumber.Equals(phoneNumber));
                    if (otp_request != null)
                    {
                        db.OTPs.Remove(otp_request);
                    }
                    db.SaveChanges();
                    FreebieEvent.UpdateMobile(account, phoneNumber, "A03", Permission.f_update_number_page_id);
                    RemoveCoookie("Acct");
                    return(RedirectToAction("ViewNumber", "AccInfo"));

                case 1:
                    ViewBag.Error        = true;
                    ViewBag.ValidNumber  = true;
                    ViewBag.ErrorMessage = System.Configuration.ConfigurationManager.AppSettings["Validate007"];
                    ViewBag.ShowPwd      = true;
                    break;

                case 2:
                    ViewBag.ValidNumber = false;
                    ViewBag.PhoneNumber = "";
                    ViewBag.ResetOTP    = System.Configuration.ConfigurationManager.AppSettings["Otp03"];
                    RemoveCoookie("Acct");
                    break;

                case 3:
                    ViewBag.ValidNumber = false;
                    ViewBag.PhoneNumber = "";
                    ViewBag.ResetOTP    = System.Configuration.ConfigurationManager.AppSettings["Otp04"];
                    RemoveCoookie("Acct");
                    break;

                default:
                    break;
                }
            }
            ViewBag.ShowPwd = true;
            return(View());
        }
        public ActionResult VerifySubrNumber()
        {
            string phoneNumber = Request.Form["PhoneNumber"];

            ViewBag.PhoneNumber = phoneNumber;
            ViewBag.Path        = "../AccInfo/ViewNumber";
            int result = CustomValidate.ValidateNumber(phoneNumber);

            ViewBag.ValidNumber = false;

            switch (result)
            {
            case 0:
                ViewBag.Type = 1;
                ModelState.AddModelError("PhoneNumber", System.Configuration.ConfigurationManager.AppSettings["Account010"]);
                return(View("AddNumber"));

            case 1:
                ViewBag.ValidNumber = true;
                string otp = OTPHandler.SendOTPReg(phoneNumber);
                ViewBag.ShowPwd = true;
                if (otp.Equals("limit_daily"))
                {
                    string err_str = System.Configuration.ConfigurationManager.AppSettings["Otp01"];
                    err_str          = err_str.Replace("{count}", System.Configuration.ConfigurationManager.AppSettings["OTP_ALLOW_PER_DAY_PER_NUMBER"]);
                    ViewBag.ErrorOTP = err_str;
                }
                else
                {
                    if (otp.Equals("limit_interval"))
                    {
                        string err_str = System.Configuration.ConfigurationManager.AppSettings["Otp02"];
                        err_str          = err_str.Replace("{minutes}", System.Configuration.ConfigurationManager.AppSettings["INTERVAL_PERIOD_BETWEEN_OTP"]);
                        ViewBag.ErrorOTP = err_str;
                    }
                }

                ViewBag.OTP = otp;
                AddCookie("Acct", new string[] { "phone_number" }, new string[] { phoneNumber });
                return(View("AddNumber"));

            case 2:
                ViewBag.Type = 2;
                return(View("RenderStatics"));

            case 3:
                ViewBag.Type = 2;
                return(View("RenderStatics"));

            case 4:
                ViewBag.Type = 2;
                return(View("RenderStatics"));

            case 5:
                ViewBag.Type = 2;
                return(View("RenderStatics"));

            default:
                ViewBag.Type = 1;
                return(View("AddNumber"));
            }
        }