public ActionResult Register(string ConfirmCode)
        {
            RegisterInfo user = new RegisterInfo();

            string[] updateFields = new[] { "Login", "Email", "ConfirmEmail", "Password", "ConfirmPassword", "RecieveWeeklySpecials", "RecieveNewsUpdates",
                                            "Fax", "Reference", "BillingLikeShipping", "BillingFirstName", "BillingMIName", "BillingLastName", "BillingAddress1", "BillingAddress2", "BillingCity", "BillingState", "BillingZip", "BillingPhone", "BillingCountry", "ShippingFirstName", "ShippingMIName", "ShippingLastName", "ShippingAddress1", "ShippingAddress2", "ShippingCity", "ShippingState", "ShippingZip", "ShippingPhone", "ShippingWorkPhone", "ShippingCountry", "EveningPhone", "DayPhone", "BidderID", "MobilePhone", "TaxpayerID", "BillingCompany", "BillingInternationalState", "ShippingInternationalState", "Reference1AuctionHouse", "Reference1LastBidPlaced", "Reference1PhoneNumber", "Reference2AuctionHouse", "Reference2LastBidPlaced", "Reference2PhoneNumber", "EbayID", "EbayFeedback", "RecievingOutBidNotice", "NoReferencesAvailable" };

            if (TryUpdateModel(user, updateFields))
            {
                user.Validate(ModelState);
                if (ModelState.IsValid)
                {
                    User newUser = UserRepository.AddUser(user);
                    if (newUser != null)
                    {
                        string confirmationUrl = AppHelper.GetSiteUrl(Url.Action("RegisterFinish", "Account", new { id = newUser.ConfirmationCode }));
                        Mail.SendRegisterConfirmation(user.Email, user.Login, confirmationUrl, user.BillingFirstName, user.BillingLastName);
                        return(RedirectToAction("RegisterConfirm", "Account"));
                    }
                }
            }

            ViewData.Model = user;
            LoadLinkedUserData(user.BillingCountry, user.BillingState);
            return(View());
        }
        public ActionResult Profile(string ConfirmCode)
        {
            SessionUser  cuser = AppHelper.CurrentUser;
            RegisterInfo user  = UserRepository.GetRegisterInfo(cuser.ID);

            UpdateModel(user, new[] { "Login", "Email", "ConfirmEmail", "Password", "ConfirmPassword", "RecieveWeeklySpecials", "RecieveNewsUpdates", "Fax", "Reference", "BillingLikeShipping", "BillingFirstName", "BillingMIName", "BillingLastName", "BillingAddress1", "BillingAddress2", "BillingCity", "BillingState", "BillingZip", "BillingPhone", "BillingCountry", "ShippingFirstName", "ShippingMIName", "ShippingLastName", "ShippingAddress1", "ShippingAddress2", "ShippingCity", "ShippingState", "ShippingZip", "ShippingPhone", "ShippingWorkPhone", "ShippingCountry", "EveningPhone", "DayPhone", "MobilePhone", "TaxpayerID", "BillingCompany", "BillingInternationalState", "ShippingInternationalState", "Reference1AuctionHouse", "Reference1LastBidPlaced", "Reference1PhoneNumber", "Reference2AuctionHouse", "Reference2LastBidPlaced", "Reference2PhoneNumber", "EbayID", "EbayFeedback" });

            user.Validate(ModelState);

            if (ModelState.IsValid)
            {
                IUser usr = UserRepository.UpdateUser(user);
                if (usr != null && usr.ID == cuser.ID)
                {
                    AppHelper.CurrentUser = SessionUser.Create(usr);
                }

                if (Session["redirectUrl"] != null)
                {
                    return(Redirect(Session["redirectUrl"] as string));
                }
                return(RedirectToAction("ProfileSaveMessage", "Account"));
            }
            ViewData.Model = user;
            LoadLinkedUserData(user.BillingCountry, user.BillingState);
            return(View());
        }
        public ActionResult SetNewPassword(long?user_id, string password, string confirmpassword)
        {
            if (!user_id.HasValue)
            {
                return(RedirectToAction("LogOn"));
            }
            RegisterInfo user = UserRepository.GetRegisterInfo(user_id.Value);

            if (user == null)
            {
                return(RedirectToAction("LogOn"));
            }
            user.Password        = password;
            user.ConfirmPassword = confirmpassword;
            UpdateModel(user, new[] { "Password", "ConfirmPassword" });
            user.Validate(ModelState);
            if (!ModelState.IsValid)
            {
                return(View(user));
            }
            bool res = UserRepository.UpdatePassword(user_id.Value, password);

            if (!res)
            {
                return(RedirectToAction("LogOn"));
            }
            User usr = UserRepository.GetUser(user_id.Value, false);

            if (usr == null)
            {
                AppHelper.CurrentUser = null;
                return(RedirectToAction("LogOn"));
            }
            usr = UserRepository.ValidateUser(usr.Login, usr.Password);
            if (usr == null)
            {
                AppHelper.CurrentUser = null;
                return(RedirectToAction("LogOn"));
            }
            UserRepository.TryToUpdateNormalAttempts(usr);
            FormsService.SignIn(usr.Login, false, usr);
            return(usr.IsModifyed ? RedirectToAction("Index", "Home") : RedirectToAction("Profile", "Account"));
        }