Exemplo n.º 1
0
        public ActionResult ChangePass(string id, string newPassword, string confirmPassword)
        {


            Account_ChangePass viewChangePass = new Account_ChangePass();
            viewChangePass.ShowFieldSet = true;

            if (String.IsNullOrEmpty(id))
            {
                ViewData.ModelState.AddModelError("*", "There was an error processing this request.  Please refresh your browser and try again. If the problem persists, please go to the Forgot Password page and request another password reset.");
                viewChangePass.ShowFieldSet = false;
            }

            if (newPassword == null || newPassword.Length < Provider.MinRequiredPasswordLength)
            {
                ViewData.ModelState.AddModelError("newPassword", String.Format(CultureInfo.InvariantCulture,
                         "You must specify a new password of {0} or more characters.",
                         Provider.MinRequiredPasswordLength));
               
            }
            if (!String.Equals(newPassword, confirmPassword, StringComparison.Ordinal))
            {
                ViewData.ModelState.AddModelError("newPassword", "The new password and confirmation password do not match.");
               
            }

            if (ViewData.ModelState.IsValid)
            {

                
                var db = new UsersDataContext();
                var result = db.S1_Users_ForgotPassword_GetUserName(id).SingleOrDefault();

                if (result != null)
                {
                    // Attempt to change password
                    MembershipUser currentUser = Provider.GetUser(result.ForgotPasswordUserName, false);
                    bool changeSuccessful = false;
                    try
                    {
                        changeSuccessful =  currentUser.ChangePassword(currentUser.ResetPassword(result.ForgotPasswordAnswer), newPassword);
                    }
                    catch
                    {
                        // An exception is thrown if the new password does not meet the provider's requirements
                    }

                    if (changeSuccessful)
                    {
                           var db1 = new UsersDataContext();
                           var result1 = db1.S1_Users_ForgotPassword_RemoveGUID(id);

                           if (result1 != 0)
                           {
                               //log the error and notify admins
                           }
                           
                        string em = currentUser.Email;
                        string subject = ConfigurationManager.AppSettings["CompanyName"] + " Billing: Change Password Request";
                        int sUserID = 0;
                        string clientname = null;
                        string clientstate = null;
                        string clientzipcode = null;

                       var db2 = new UsersDataContext();
                       var q2 = from o in db.Users
                               where o.aspnet_User.UserName == result.ForgotPasswordUserName
                               select new
                               {
                                   sUID = o.UserID
                               };

                       if (q2.Count() > 0)
                       {

                            sUserID = q2.SingleOrDefault().sUID;

                            var db3 = new UsersDataContext();
                            var result3 = db3.S1_Users_GetClientContactForEmail(sUserID).SingleOrDefault();

                            if (result3 == null)
                            {

                                //todo;
                            }
                            else
                            {
                                clientname = result3.ClientName;
                                clientstate = result3.ContactState;
                                clientzipcode = result3.ContactZipCode;
                            }

                        }

                        Dictionary<string, string> messagevalues = new Dictionary<string, string>();
                        messagevalues.Add("[[COMPANYNAME]]", clientname);
                        messagevalues.Add("[[USERNAME]]", result.ForgotPasswordUserName);
                        messagevalues.Add("[[CORPORATENAME]]", System.Configuration.ConfigurationManager.AppSettings["CompanyName"]);

                        MailGun.SendEmailToUserFromTemplate(12, 0, "Change Password", 0, sUserID, 0, subject, messagevalues);

                        viewChangePass.sUserName = result.ForgotPasswordUserName;
                        return RedirectToAction("ChangePasswordSuccess", "Account", new { portal = ViewData["portal"], ClientID = ViewData["ClientID"] });

                        /* var messageRecord = Messages.GetMessageTemplateRecord(0, "Change Password", messagevalues);

                          string messagebody = messageRecord != null ? messageRecord.MessageText : null;

                          if (messagebody != null)
                          {
                              int messageActionType = messageRecord.MessageActionTypeID.GetValueOrDefault();
                              int? MessageIDOutput = new int?();
                              Guid? MessageActionGuidOutput = new Guid?();
                              Messages.CreateMessageWithAction(messageActionType, subject, messagebody, sUserID, 1, 0, 3, "", System.DateTime.Now, null, "HTML", ref MessageIDOutput, ref MessageActionGuidOutput);
                              Messages.UpdateMessageAndMarkForSending(MessageIDOutput.Value, subject, messagebody);
                              viewChangePass.sUserName = result.ForgotPasswordUserName;
                              return RedirectToAction("ChangePasswordSuccess", "Account", new { portal = ViewData["portal"], ClientID = ViewData["ClientID"] });
                          }
                          else
                          {
                              //todoo: future error logging
                          }*/
                    }
                }
                else
                {
                    ViewData.ModelState.AddModelError("*", "There was an error while trying to reset your password. Please refresh your browser and try again.");
                    
                }
            }

            // If we got this far, something failed, redisplay form
            ViewData["Title"] = "Change Password";

            return View("ConfirmedChangePass", "~/Views/Shared/Site.Master", viewChangePass);

        }