private AddressViewModel Initialize(AddressViewModel viewModel)
 {
     if (viewModel != null)
     {
         viewModel.Countries = this._webStoreServices.StoreContext.AvailableCountries.Select(ac => new SelectListItem { Text = ac.Name, Value = ac.CountryId.ToString() });
         if (viewModel.CountryId.HasValue)
         {
             this._webStoreServices.UsingClient(c => viewModel.Regions = c.StoreClient.GetRegions(viewModel.CountryId.Value).Select(r => new SelectListItem { Text = r.Name, Value = r.RegionId.ToString() }));
         }
     }
     return viewModel;
 }
 public PartialViewResult GetAddress(Guid addressId, Nullable<Boolean> promptShippingAddressIsDifferent, Nullable<Boolean> shippingAddressIsDifferent)
 {
     AddressViewModel viewModel = null;
     this._webStoreServices.UsingClient(
         c =>
         {
             Customer.Address address = c.CustomerClient.GetAddresses(this._orchardServices.WorkContext.CurrentUser.UserName).FirstOrDefault(a => a.AddressId == addressId);
             if (address != null)
             {
                 viewModel = new AddressViewModel
                 {
                     PromptShippingAddressIsDifferent = promptShippingAddressIsDifferent.HasValue && promptShippingAddressIsDifferent.Value,
                     ShippingAddressIsDifferent = shippingAddressIsDifferent.HasValue && shippingAddressIsDifferent.Value,
                     Named = true,
                     AddressId = address.AddressId,
                     City = address.City,
                     Company = address.Company,
                     CountryId = address.CountryId,
                     DigiCode = address.DigiCode,
                     Email = address.Email,
                     FaxNumber = address.FaxNumber,
                     FirstName = address.FirstName,
                     Floor = address.Floor,
                     LastName = address.LastName,
                     Line1 = address.Line1,
                     Line2 = address.Line2,
                     Line3 = address.Line3,
                     MiddleName = address.MiddleName,
                     MobileNumber = address.MobileNumber,
                     Name = address.Name,
                     PhoneNumber = address.PhoneNumber,
                     RegionId = address.RegionId,
                     ZipCode = address.ZipCode
                 };
             }
         }
     );
     this.Response.Cache.SetCacheability(HttpCacheability.NoCache);
     return this.BuildAddressShape(viewModel);
 }
 private ShapePartialResult BuildAddressShape(AddressViewModel viewModel)
 {
     return new ShapePartialResult(this, this._shapeFactory.EditorTemplate(TemplateName: "User/Address", Model: this.Initialize(viewModel)));
 }
 private Customer.Address GetAddress(AddressViewModel viewModel)
 {
     return new Customer.Address
     {
         AddressId = viewModel.AddressId.HasValue ? viewModel.AddressId.Value : Guid.NewGuid(),
         City = viewModel.City,
         Company = viewModel.Company,
         CountryId = viewModel.CountryId.Value,
         DigiCode = viewModel.DigiCode,
         Email = viewModel.Email,
         FaxNumber = viewModel.FaxNumber,
         FirstName = viewModel.FirstName,
         Floor = viewModel.Floor,
         LastName = viewModel.LastName,
         Line1 = viewModel.Line1,
         Line2 = viewModel.Line2,
         Line3 = viewModel.Line3,
         MiddleName = viewModel.MiddleName,
         MobileNumber = viewModel.MobileNumber,
         Name = viewModel.Name,
         PhoneNumber = viewModel.PhoneNumber,
         RegionId = viewModel.RegionId,
         ZipCode = viewModel.ZipCode
     };
 }
 public ActionResult SaveAddress(AddressViewModel viewModel)
 {
     if (this.ModelState.IsValid)
     {
         Boolean success = true;
         this._webStoreServices.UsingClient(
             c =>
             {
                 if (viewModel.RegionId.HasValue || (!viewModel.RegionId.HasValue && !c.StoreClient.GetRegions(viewModel.CountryId.Value).Any()))
                 {
                     List<Customer.Address> addresses = c.CustomerClient.GetAddresses(this._orchardServices.WorkContext.CurrentUser.UserName).ToList();
                     if (addresses.Any(a => a.Name.Equals(viewModel.Name, StringComparison.InvariantCulture) && a.AddressId != viewModel.AddressId))
                     {
                         success = false;
                         this.ModelState.AddModelError("DuplicatedName", this._localizer("Address name already used").ToString());
                     }
                     else
                     {
                         addresses.Remove(addresses.FirstOrDefault(a => a.AddressId == viewModel.AddressId));
                         addresses.Add(this.GetAddress(viewModel));
                         c.CustomerClient.UpdateAddresses(this._orchardServices.WorkContext.CurrentUser.UserName, addresses);
                     }
                 }
                 else
                 {
                     success = false;
                     this.ModelState.AddModelError("RegionRequired", this._localizer("Region is required").ToString());
                 }
             }
         );
         if (success)
         {
             return this.Json(new { name = viewModel.Name, shippingAddressIsDifferent = viewModel.ShippingAddressIsDifferent });
         }
     }
     return this.BuildAddressShape(viewModel);
 }
 private void UpdateAddress(Address address, AddressViewModel viewModel)
 {
     address.City = viewModel.City;
     address.Company = viewModel.Company;
     address.CountryId = viewModel.CountryId.Value;
     address.DigiCode = viewModel.DigiCode;
     address.Email = viewModel.Email;
     address.FaxNumber = viewModel.FaxNumber;
     address.FirstName = viewModel.FirstName;
     address.Floor = viewModel.Floor;
     address.LastName = viewModel.LastName;
     address.Line1 = viewModel.Line1;
     address.Line2 = viewModel.Line2;
     address.Line3 = viewModel.Line3;
     address.MiddleName = viewModel.MiddleName;
     address.MobileNumber = viewModel.MobileNumber;
     address.PhoneNumber = viewModel.PhoneNumber;
     address.RegionId = viewModel.RegionId;
     address.ZipCode = viewModel.ZipCode;
 }
 private ActionResult RegisterAddress(Address address, AddressViewModel viewModel)
 {
     if (this.ModelState.IsValid)
     {
         Boolean success = false;
         this._webStoreServices.UsingClient(
             c =>
             {
                 if (viewModel.RegionId.HasValue || (!viewModel.RegionId.HasValue && !c.StoreClient.GetRegions(viewModel.CountryId.Value).Any()))
                 {
                     success = true;
                 }
                 else
                 {
                     success = false;
                     this.ModelState.AddModelError("RegionRequired", this._localizer("Region is required").ToString());
                 }
             }
         );
         if (success)
         {
             this.UpdateAddress(address, viewModel);
             if (address == this.RawBillingAddress)
             {
                 this.ShippingAddressIsDifferent = viewModel.ShippingAddressIsDifferent;
                 if (!this.ShippingAddressIsDifferent)
                 {
                     this.SetAddresses(this.RawBillingAddress, null);
                 }
                 return this.Json(new { shippingAddressIsDifferent = this.ShippingAddressIsDifferent });
             }
             else
             {
                 this.SetAddresses(this.RawBillingAddress, this.RawShippingAddress);
                 return this.Json(new { success = true });
             }
         }
     }
     this.Initialize(viewModel);
     return new ShapePartialResult(this, this._shapeFactory.EditorTemplate(TemplateName: "User/Address", Model: viewModel));
 }
 private AddressViewModel GetAddressViewModel(Address address)
 {
     Boolean isBillingAddress = address == this.RawBillingAddress;
     AddressViewModel viewModel = new AddressViewModel
     {
         AddressId = address.AddressId,
         City = address.City,
         Company = address.Company,
         CountryId = address.CountryId,
         DigiCode = address.DigiCode,
         Email = address.Email,
         FaxNumber = address.FaxNumber,
         FirstName = address.FirstName,
         Floor = address.Floor,
         LastName = address.LastName,
         Line1 = address.Line1,
         Line2 = address.Line2,
         Line3 = address.Line3,
         MiddleName = address.MiddleName,
         MobileNumber = address.MobileNumber,
         PhoneNumber = address.PhoneNumber,
         RegionId = address.RegionId,
         ZipCode = address.ZipCode,
         PromptShippingAddressIsDifferent = isBillingAddress,
         PromptEmail = isBillingAddress,
         ShippingAddressIsDifferent = this.ShippingAddressIsDifferent,
         DisplayNexButton = true,
         Named = false
     };
     this.Initialize(viewModel);
     return viewModel;
 }
 public ActionResult RegisterShippingAddress(AddressViewModel viewModel)
 {
     return this.RegisterAddress(this.RawShippingAddress, viewModel);
 }