Exemplo n.º 1
0
        private void IsLoginValid(string UserName, string Password)
        {
            string[] UserAccountData = AccountData.CheckUserLogin(UserName, Password).Split('|');
            IsValidUser     = Convert.ToBoolean(Convert.ToInt16(UserAccountData[0]));
            IsFirstTimeUser = Convert.ToBoolean(Convert.ToInt16(UserAccountData[1]));
            LoginUserId     = Convert.ToInt32(UserAccountData[1]);

            MasterPage mPage;

            mPage = Page.Master;

            LinkButton mpMenuLinks;

            mpMenuLinks = (LinkButton)this.Master.FindControl("idAmericorps");
            if (mpMenuLinks != null)
            {
                mpMenuLinks.Visible = false;
                mpMenuLinks.Text    = "";
            }
        }
        //[ValidateAntiForgeryToken]
        public ActionResult Login(LoginViewModel model, String returnUrl)
        {
            String    msg    = "";
            Int32     UserID = 0;
            DataSet   ds;
            DataTable dt, dtbl;
            DataRow   dr = null, dr1 = null;

            if (ModelState.IsValid)
            {
                String email = model.Email.Trim();
                ds = userregistrationData.ValidateEmailAndGetUserinfo(email);

                if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    dt     = ds.Tables[0];
                    dr     = dt.Rows[0];
                    UserID = Convert.ToInt32(dr["MppUserID"]);
                    msg    = userregistrationData.CheckUserLogin(UserID, model.Password);

                    if (msg == "")
                    {
                        dtbl = ds.Tables[1];
                        dr1  = dtbl.Rows[0];
                        String CustmId, CardId;

                        SessionData.UserID = UserID;

                        String FirstName = Convert.ToString(dr["FirstName"]);
                        SessionData.LastName = Convert.ToString(dr["LastName"]);
                        String   PlanDate = Convert.ToString(dr1["PlanDate"]);
                        DateTime?Today, NextPlanDate = DateTime.MaxValue;
                        Today = DateTime.Now;

                        DateTime StartDate = Convert.ToDateTime(dr["StartDate"]);

                        if (!String.IsNullOrWhiteSpace(PlanDate))
                        {
                            NextPlanDate = Convert.ToDateTime(PlanDate);
                        }

                        SessionData.StartDate         = StartDate.ToString("yyyy/MM/dd hh:mm:ss tt");
                        SessionData.PlanStatus        = Convert.ToInt32(dr["PlanStatus"]);
                        SessionData.PlanID            = Convert.ToInt32(dr["PlanID"]);
                        SessionData.FormulaAccess     = Convert.ToInt16(dr["IsSetFormula"]);
                        SessionData.TrialEndOn        = Convert.ToDateTime(dr["TrailEndDate"]);
                        SessionData.Email             = email;
                        SessionData.IsAgreementAccept = Convert.ToInt16(dr["IsAgreementConfirm"]);
                        SessionData.ProfileAccess     = Convert.ToInt16(dr["ProfileAccess"]);
                        SessionData.AlertCount        = Convert.ToInt32(dr1["total_alerts"]);
                        CustmId = Convert.ToString(dr["stp_custId"]);
                        CardId  = Convert.ToString(dr["stp_cardId"]);

                        if (!String.IsNullOrWhiteSpace(CustmId))
                        {
                            FormsAuthentication.SetAuthCookie(FirstName, false);
                            var custm = StripeHelper.GetStripeCustomer(CustmId);
                            if (!String.IsNullOrWhiteSpace(custm.DefaultSourceId) && String.IsNullOrWhiteSpace(CardId))
                            {
                                StripeHelper.DeleteCard(custm.DefaultSourceId, CustmId);
                            }
                            SessionData.StripeCardId = CardId;
                            SessionData.StripeCustId = CustmId;

                            if (((SessionData.PlanID == 1 && SessionData.TrialEndOn < Today && !String.IsNullOrWhiteSpace(CardId)) || NextPlanDate < Today) && SessionData.PlanStatus == 1) // When plan was expired
                            {
                                if (String.IsNullOrWhiteSpace(CardId))
                                {
                                    return(RedirectToAction("Plan", "Settings"));
                                }
                                else
                                {
                                    msg = StripeServices.SubscribePlan(CustmId, CardId);
                                }
                                if (!String.IsNullOrWhiteSpace(msg))
                                {
                                    TempData["IsValid"] = msg;
                                    return(RedirectToAction("Login", "UserAccount"));
                                }
                            }

                            if (SessionData.PlanID != 1)
                            {
                                if (SessionData.PlanStatus == 0) // handles unsubscribed status after trial period
                                {
                                    return(RedirectToAction("Plan", "Settings"));
                                }
                                else if (String.IsNullOrWhiteSpace(CardId) && SessionData.PlanStatus == 1) // When CardId was not found and Plan was not trail
                                {
                                    return(RedirectToAction("Cards", "Settings"));
                                }
                            }
                        }
                        else
                        {
                            return(View("Error"));
                        }

                        if (Url.IsLocalUrl(returnUrl))
                        {
                            return(Redirect(returnUrl));
                        }
                        else
                        {
                            return(RedirectToAction("Dashboard", "Main"));
                        }
                    }
                }
                else
                {
                    msg = "Invalid login attempt!";
                }

                TempData["IsValid"] = msg;
                return(RedirectToAction("Login", "UserAccount"));
            }
            return(View(model));
        }