public ActionResult GutterCleanInfoRegister()
        {
            GutterCleanRequestModel requestModel = _httpContext.Session["GutterCleanRequestModel"] as GutterCleanRequestModel;

            if (requestModel == null)
            {
                return(RedirectToRoute("GutterCleanRequest"));
            }

            GutterCleanInfoModel model = new GutterCleanInfoModel();

            return(View(model));
        }
        public ActionResult GutterCleanInfoRegister(GutterCleanInfoModel model, bool captchaValid)
        {
            GutterCleanRequestModel requestModel = _httpContext.Session["GutterCleanRequestModel"] as GutterCleanRequestModel;

            if (requestModel == null)
            {
                return(RedirectToRoute("GutterCleanRequest"));
            }


            string returnUrl = string.Empty;

            if (!captchaValid)
            {
                ModelState.AddModelError("", "Wrong Captcha code.");
            }

            var zipcodeResult = _zipCodeService.GetZipCodeDetailByZipcode(model.ZipCode);

            if (zipcodeResult != null)
            {
            }
            else
            {
                ModelState.AddModelError("", "Zipcode is not valid.");
            }


            if (ModelState.IsValid)
            {
                if (!_workContext.CurrentCustomer.IsRegistered())
                {
                    //Already registered customer.
                    _authenticationService.SignOut();

                    //Save a new record
                    _workContext.CurrentCustomer = _customerService.InsertGuestCustomer();

                    var customer = _workContext.CurrentCustomer;
                    customer.FirstName = model.FirstName;
                    customer.LastName  = model.LastName;

                    customer.Address1      = model.Address;
                    customer.ZipPostalCode = model.ZipCode;


                    bool   isApproved          = true;
                    string password            = Guid.NewGuid().ToString();
                    var    registrationRequest = new CustomerRegistrationRequest(customer, model.Email, password.Substring(0, 8), isApproved);

                    var registrationResult = _customerService.RegisterCustomer(registrationRequest);
                    if (registrationResult.Success)
                    {
                        //login customer now
                        if (isApproved)
                        {
                            _authenticationService.SignIn(customer, true);
                        }


                        switch (UserRegistrationType.Standard)
                        {
                        case UserRegistrationType.Standard:
                        {
                            var address = new Address();
                            address.Address1      = model.Address;
                            address.Address2      = "";
                            address.City          = zipcodeResult.CityName;
                            address.Email         = model.Email;
                            address.State         = zipcodeResult.StateName;
                            address.PhoneNumber   = "";
                            address.ZipPostalCode = model.ZipCode;
                            address.CreatedOnUtc  = DateTime.UtcNow;

                            customer.Addresses.Add(address);
                            _customerService.UpdateCustomer(customer);



                            //send email
                            _workflowMessageService.SendCustomerWelcomeMessage(customer);

                            GutterCleanRequestModel Requestmodel = _httpContext.Session["GutterCleanRequestModel"] as GutterCleanRequestModel;
                            if (Requestmodel == null)
                            {
                                return(RedirectToRoute("GutterCleanRequest"));
                            }
                            else
                            {
                                return(RedirectToRoute("ProcessPayment"));
                            }
                        }

                        default:
                        {
                            return(RedirectToRoute("GutterCleanRequest"));
                        }
                        }
                    }

                    //errors
                    foreach (var error in registrationResult.Errors)
                    {
                        ModelState.AddModelError("", error);
                    }
                }
                else
                {
                    /// user is already registered
                    return(RedirectToRoute("ProcessPayment"));
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }