本文整理汇总了C#中System.Web.Mvc.FormCollection.ParseCustomAddressAttributes方法的典型用法代码示例。如果您正苦于以下问题:C# FormCollection.ParseCustomAddressAttributes方法的具体用法?C# FormCollection.ParseCustomAddressAttributes怎么用?C# FormCollection.ParseCustomAddressAttributes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Web.Mvc.FormCollection
的用法示例。
在下文中一共展示了FormCollection.ParseCustomAddressAttributes方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AddressEdit
public ActionResult AddressEdit(CustomerAddressEditModel model, int addressId, FormCollection form)
{
if (!_workContext.CurrentCustomer.IsRegistered())
return new HttpUnauthorizedResult();
var customer = _workContext.CurrentCustomer;
//find address (ensure that it belongs to the current customer)
var address = customer.Addresses.FirstOrDefault(a => a.Id == addressId);
if (address == null)
//address is not found
return RedirectToRoute("CustomerAddresses");
//custom address attributes
var customAttributes = form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);
var customAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAttributes);
foreach (var error in customAttributeWarnings)
{
ModelState.AddModelError("", error);
}
if (ModelState.IsValid)
{
address = model.Address.ToEntity(address);
address.CustomAttributes = customAttributes;
_addressService.UpdateAddress(address);
return RedirectToRoute("CustomerAddresses");
}
//If we got this far, something failed, redisplay form
model.Address.PrepareModel(
address: address,
excludeProperties: true,
addressSettings: _addressSettings,
localizationService: _localizationService,
stateProvinceService: _stateProvinceService,
addressAttributeService: _addressAttributeService,
addressAttributeParser: _addressAttributeParser,
loadCountries: () => _countryService.GetAllCountries(_workContext.WorkingLanguage.Id),
overrideAttributesXml: customAttributes);
return View(model);
}
示例2: AddressEdit
public ActionResult AddressEdit(CustomerAddressModel model, FormCollection form)
{
if (!_permissionService.Authorize(StandardPermissionProvider.ManageCustomers))
return AccessDeniedView();
var customer = _customerService.GetCustomerById(model.CustomerId);
if (customer == null)
//No customer found with the specified id
return RedirectToAction("List");
var address = _addressService.GetAddressById(model.Address.Id);
if (address == null)
//No address found with the specified id
return RedirectToAction("Edit", new { id = customer.Id });
//custom address attributes
var customAttributes = form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);
var customAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAttributes);
foreach (var error in customAttributeWarnings)
{
ModelState.AddModelError("", error);
}
if (ModelState.IsValid)
{
address = model.Address.ToEntity(address);
address.CustomAttributes = customAttributes;
_addressService.UpdateAddress(address);
SuccessNotification(_localizationService.GetResource("Admin.Customers.Customers.Addresses.Updated"));
return RedirectToAction("AddressEdit", new { addressId = model.Address.Id, customerId = model.CustomerId });
}
//If we got this far, something failed, redisplay form
PrepareAddressModel(model, address, customer, true);
return View(model);
}
示例3: AddressAdd
public ActionResult AddressAdd(CustomerAddressEditModel model, FormCollection form)
{
if (!_workContext.CurrentCustomer.IsRegistered())
return new HttpUnauthorizedResult();
var customer = _workContext.CurrentCustomer;
//custom address attributes
var customAttributes = form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);
var customAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAttributes);
foreach (var error in customAttributeWarnings)
{
ModelState.AddModelError("", error);
}
if (ModelState.IsValid)
{
var address = model.Address.ToEntity();
address.CustomAttributes = customAttributes;
address.CreatedOnUtc = DateTime.UtcNow;
//some validation
if (address.CountryId == 0)
address.CountryId = null;
if (address.StateProvinceId == 0)
address.StateProvinceId = null;
customer.Addresses.Add(address);
_customerService.UpdateCustomer(customer);
return RedirectToRoute("CustomerAddresses");
}
//If we got this far, something failed, redisplay form
model.Address.PrepareModel(
address: null,
excludeProperties: true,
addressSettings:_addressSettings,
localizationService:_localizationService,
stateProvinceService: _stateProvinceService,
addressAttributeService: _addressAttributeService,
addressAttributeParser: _addressAttributeParser,
loadCountries: () => _countryService.GetAllCountries(_workContext.WorkingLanguage.Id),
overrideAttributesXml: customAttributes);
return View(model);
}
示例4: AddressCreate
public ActionResult AddressCreate(CustomerAddressModel model, FormCollection form)
{
if (!_permissionService.Authorize(StandardPermissionProvider.ManageCustomers))
return AccessDeniedView();
var customer = _customerService.GetCustomerById(model.CustomerId);
if (customer == null)
//No customer found with the specified id
return RedirectToAction("List");
//custom address attributes
var customAttributes = form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);
var customAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAttributes);
foreach (var error in customAttributeWarnings)
{
ModelState.AddModelError("", error);
}
if (ModelState.IsValid)
{
var address = model.Address.ToEntity();
address.CustomAttributes = customAttributes;
address.CreatedOnUtc = DateTime.UtcNow;
address.Id = customer.Addresses.Count > 0 ? customer.Addresses.Max(x => x.Id) + 1 : 1;
address._id = ObjectId.GenerateNewId().ToString();
customer.Addresses.Add(address);
_customerService.UpdateCustomerinAdminPanel(customer);
SuccessNotification(_localizationService.GetResource("Admin.Customers.Customers.Addresses.Added"));
return RedirectToAction("AddressEdit", new { addressId = address.Id, customerId = model.CustomerId });
}
//If we got this far, something failed, redisplay form
PrepareAddressModel(model, null, customer, true);
return View(model);
}
示例5: AddressCreate
public override ActionResult AddressCreate(CustomerAddressModel model, FormCollection form)
{
if (!_permissionService.Authorize(StandardPermissionProvider.ManageCustomers))
return AccessDeniedView();
var customer = _customerService.GetCustomerById(model.CustomerId);
if (customer == null)
//No customer found with the specified id
return RedirectToAction("List");
//custom address attributes
var customAttributes = form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);
var customAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAttributes);
foreach (var error in customAttributeWarnings)
{
ModelState.AddModelError("", error);
}
if (ModelState.IsValid)
{
var address = model.Address.ToEntity();
address.CustomAttributes = customAttributes;
address.CreatedOnUtc = DateTime.UtcNow;
//some validation
if (address.CountryId == 0)
address.CountryId = null;
if (address.StateProvinceId == 0)
address.StateProvinceId = null;
customer.Addresses.Add(address);
_customerService.UpdateCustomer(customer);
SuccessNotification(_localizationService.GetResource("Admin.Customers.Customers.Addresses.Added"));
//*********************** override begin *******************************************
//return RedirectToAction("AddressEdit", new { addressId = address.Id, customerId = model.CustomerId }); //%%%% ORIGINAL %%%%%%%%%
//NJM: logic changed in AUConsignor to not redirect if child action (from AUConsignor)
if (ControllerContext.IsChildAction)
{
ControllerContext.HttpContext.Response.Redirect(ControllerContext.HttpContext.Request.Url.ToString());
//PrepareCustomerModel(model, customer, true);
return View(model);
}
else
{
//return RedirectToAction("Edit", customer.Id); //original 11111111
return RedirectToAction(
"Edit", // Action name
"AUConsignorAdmin", // Controller name
new { id = customer.Id }); // Route values
}
//*********************** override end *******************************************
}
//If we got this far, something failed, redisplay form
PrepareAddressModel(model, null, customer, true);
return View(model);
}
示例6: NewShippingAddress
public ActionResult NewShippingAddress(CheckoutShippingAddressModel model, FormCollection form)
{
//validation
var cart = _workContext.CurrentCustomer.ShoppingCartItems
.Where(sci => sci.ShoppingCartType == ShoppingCartType.ShoppingCart)
.LimitPerStore(_storeContext.CurrentStore.Id)
.ToList();
if (cart.Count == 0)
return RedirectToRoute("ShoppingCart");
if (_orderSettings.OnePageCheckoutEnabled)
return RedirectToRoute("CheckoutOnePage");
if ((_workContext.CurrentCustomer.IsGuest() && !_orderSettings.AnonymousCheckoutAllowed))
return new HttpUnauthorizedResult();
if (!cart.RequiresShipping())
{
_workContext.CurrentCustomer.ShippingAddress = null;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
return RedirectToRoute("CheckoutShippingMethod");
}
//Pick up in store?
if (_shippingSettings.AllowPickUpInStore)
{
if (model.PickUpInStore)
{
//customer decided to pick up in store
//no shipping address selected
_workContext.CurrentCustomer.ShippingAddress = null;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
//set value indicating that "pick up in store" option has been chosen
_genericAttributeService.SaveAttribute(_workContext.CurrentCustomer, SystemCustomerAttributeNames.SelectedPickUpInStore, true, _storeContext.CurrentStore.Id);
//save "pick up in store" shipping method
var pickUpInStoreShippingOption = new ShippingOption
{
Name = _localizationService.GetResource("Checkout.PickUpInStore.MethodName"),
Rate = _shippingSettings.PickUpInStoreFee,
Description = null,
ShippingRateComputationMethodSystemName = null
};
_genericAttributeService.SaveAttribute(_workContext.CurrentCustomer,
SystemCustomerAttributeNames.SelectedShippingOption,
pickUpInStoreShippingOption,
_storeContext.CurrentStore.Id);
//load next step
return RedirectToRoute("CheckoutShippingMethod");
}
//set value indicating that "pick up in store" option has not been chosen
_genericAttributeService.SaveAttribute(_workContext.CurrentCustomer, SystemCustomerAttributeNames.SelectedPickUpInStore, false, _storeContext.CurrentStore.Id);
}
//custom address attributes
var customAttributes = form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);
var customAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAttributes);
foreach (var error in customAttributeWarnings)
{
ModelState.AddModelError("", error);
}
if (ModelState.IsValid)
{
//try to find an address with the same values (don't duplicate records)
var address = _workContext.CurrentCustomer.Addresses.ToList().FindAddress(
model.NewAddress.FirstName, model.NewAddress.LastName, model.NewAddress.PhoneNumber,
model.NewAddress.Email, model.NewAddress.FaxNumber, model.NewAddress.Company,
model.NewAddress.Address1, model.NewAddress.Address2, model.NewAddress.City,
model.NewAddress.StateProvinceId, model.NewAddress.ZipPostalCode,
model.NewAddress.CountryId, customAttributes);
if (address == null)
{
address = model.NewAddress.ToEntity();
address.CustomAttributes = customAttributes;
address.CreatedOnUtc = DateTime.UtcNow;
//some validation
if (address.CountryId == 0)
address.CountryId = null;
if (address.StateProvinceId == 0)
address.StateProvinceId = null;
_workContext.CurrentCustomer.Addresses.Add(address);
}
_workContext.CurrentCustomer.ShippingAddress = address;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
return RedirectToRoute("CheckoutShippingMethod");
}
//If we got this far, something failed, redisplay form
model = PrepareShippingAddressModel(selectedCountryId: model.NewAddress.CountryId);
return View(model);
}
示例7: OpcSaveBilling
public ActionResult OpcSaveBilling(FormCollection form)
{
try
{
//validation
var cart = _workContext.CurrentCustomer.ShoppingCartItems
.Where(sci => sci.ShoppingCartType == ShoppingCartType.ShoppingCart)
.LimitPerStore(_storeContext.CurrentStore.Id)
.ToList();
if (cart.Count == 0)
throw new Exception("Your cart is empty");
if (!_orderSettings.OnePageCheckoutEnabled)
throw new Exception("One page checkout is disabled");
if ((_workContext.CurrentCustomer.IsGuest() && !_orderSettings.AnonymousCheckoutAllowed))
throw new Exception("Anonymous checkout is not allowed");
int billingAddressId;
int.TryParse(form["billing_address_id"], out billingAddressId);
if (billingAddressId > 0)
{
//existing address
var address = _workContext.CurrentCustomer.Addresses.FirstOrDefault(a => a.Id == billingAddressId);
if (address == null)
throw new Exception("Address can't be loaded");
_workContext.CurrentCustomer.BillingAddress = address;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
}
else
{
//new address
var model = new CheckoutBillingAddressModel();
TryUpdateModel(model.NewAddress, "BillingNewAddress");
//custom address attributes
var customAttributes = form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);
var customAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAttributes);
foreach (var error in customAttributeWarnings)
{
ModelState.AddModelError("", error);
}
//validate model
TryValidateModel(model.NewAddress);
if (!ModelState.IsValid)
{
//model is not valid. redisplay the form with errors
var billingAddressModel = PrepareBillingAddressModel(selectedCountryId: model.NewAddress.CountryId);
billingAddressModel.NewAddressPreselected = true;
return Json(new
{
update_section = new UpdateSectionJsonModel
{
name = "billing",
html = this.RenderPartialViewToString("OpcBillingAddress", billingAddressModel)
},
wrong_billing_address = true,
});
}
//try to find an address with the same values (don't duplicate records)
var address = _workContext.CurrentCustomer.Addresses.ToList().FindAddress(
model.NewAddress.FirstName, model.NewAddress.LastName, model.NewAddress.PhoneNumber,
model.NewAddress.Email, model.NewAddress.FaxNumber, model.NewAddress.Company,
model.NewAddress.Address1, model.NewAddress.Address2, model.NewAddress.City,
model.NewAddress.StateProvinceId, model.NewAddress.ZipPostalCode,
model.NewAddress.CountryId, customAttributes);
if (address == null)
{
//address is not found. let's create a new one
address = model.NewAddress.ToEntity();
address.CustomAttributes = customAttributes;
address.CreatedOnUtc = DateTime.UtcNow;
//some validation
if (address.CountryId == 0)
address.CountryId = null;
if (address.StateProvinceId == 0)
address.StateProvinceId = null;
if (address.CountryId.HasValue && address.CountryId.Value > 0)
{
address.Country = _countryService.GetCountryById(address.CountryId.Value);
}
_workContext.CurrentCustomer.Addresses.Add(address);
}
_workContext.CurrentCustomer.BillingAddress = address;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
}
if (cart.RequiresShipping())
{
//shipping is required
var shippingAddressModel = PrepareShippingAddressModel(prePopulateNewAddressWithCustomerFields: true);
return Json(new
{
update_section = new UpdateSectionJsonModel
{
name = "shipping",
//.........这里部分代码省略.........
示例8: OpcSaveShipping
public ActionResult OpcSaveShipping(FormCollection form)
{
try
{
//validation
var cart = _workContext.CurrentCustomer.ShoppingCartItems
.Where(sci => sci.ShoppingCartType == ShoppingCartType.ShoppingCart)
.LimitPerStore(_storeContext.CurrentStore.Id)
.ToList();
if (cart.Count == 0)
throw new Exception("Your cart is empty");
if (!_orderSettings.OnePageCheckoutEnabled)
throw new Exception("One page checkout is disabled");
if ((_workContext.CurrentCustomer.IsGuest() && !_orderSettings.AnonymousCheckoutAllowed))
throw new Exception("Anonymous checkout is not allowed");
if (!cart.RequiresShipping())
throw new Exception("Shipping is not required");
//Pick up in store?
if (_shippingSettings.AllowPickUpInStore)
{
var model = new CheckoutShippingAddressModel();
TryUpdateModel(model);
if (model.PickUpInStore)
{
//customer decided to pick up in store
//no shipping address selected
_workContext.CurrentCustomer.ShippingAddress = null;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
//set value indicating that "pick up in store" option has been chosen
_genericAttributeService.SaveAttribute(_workContext.CurrentCustomer, SystemCustomerAttributeNames.SelectedPickUpInStore, true, _storeContext.CurrentStore.Id);
//save "pick up in store" shipping method
var pickUpInStoreShippingOption = new ShippingOption
{
Name = _localizationService.GetResource("Checkout.PickUpInStore.MethodName"),
Rate = _shippingSettings.PickUpInStoreFee,
Description = null,
ShippingRateComputationMethodSystemName = null
};
_genericAttributeService.SaveAttribute(_workContext.CurrentCustomer,
SystemCustomerAttributeNames.SelectedShippingOption,
pickUpInStoreShippingOption,
_storeContext.CurrentStore.Id);
//load next step
return OpcLoadStepAfterShippingMethod(cart);
}
//set value indicating that "pick up in store" option has not been chosen
_genericAttributeService.SaveAttribute(_workContext.CurrentCustomer, SystemCustomerAttributeNames.SelectedPickUpInStore, false, _storeContext.CurrentStore.Id);
}
int shippingAddressId;
int.TryParse(form["shipping_address_id"], out shippingAddressId);
if (shippingAddressId > 0)
{
//existing address
var address = _workContext.CurrentCustomer.Addresses.FirstOrDefault(a => a.Id == shippingAddressId);
if (address == null)
throw new Exception("Address can't be loaded");
_workContext.CurrentCustomer.ShippingAddress = address;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
}
else
{
//new address
var model = new CheckoutShippingAddressModel();
TryUpdateModel(model.NewAddress, "ShippingNewAddress");
//custom address attributes
var customAttributes = form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);
var customAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAttributes);
foreach (var error in customAttributeWarnings)
{
ModelState.AddModelError("", error);
}
//validate model
TryValidateModel(model.NewAddress);
if (!ModelState.IsValid)
{
//model is not valid. redisplay the form with errors
var shippingAddressModel = PrepareShippingAddressModel(selectedCountryId: model.NewAddress.CountryId);
shippingAddressModel.NewAddressPreselected = true;
return Json(new
{
update_section = new UpdateSectionJsonModel
{
name = "shipping",
html = this.RenderPartialViewToString("OpcShippingAddress", shippingAddressModel)
}
//.........这里部分代码省略.........
示例9: NewBillingAddress
public ActionResult NewBillingAddress(CheckoutBillingAddressModel model, FormCollection form)
{
//validation
var cart = _workContext.CurrentCustomer.ShoppingCartItems
.Where(sci => sci.ShoppingCartType == ShoppingCartType.ShoppingCart)
.LimitPerStore(_storeContext.CurrentStore.Id)
.ToList();
if (cart.Count == 0)
return RedirectToRoute("ShoppingCart");
if (_orderSettings.OnePageCheckoutEnabled)
return RedirectToRoute("CheckoutOnePage");
if ((_workContext.CurrentCustomer.IsGuest() && !_orderSettings.AnonymousCheckoutAllowed))
return new HttpUnauthorizedResult();
//custom address attributes
var customAttributes = form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);
var customAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAttributes);
foreach (var error in customAttributeWarnings)
{
ModelState.AddModelError("", error);
}
if (ModelState.IsValid)
{
//try to find an address with the same values (don't duplicate records)
var address = _workContext.CurrentCustomer.Addresses.ToList().FindAddress(
model.NewAddress.FirstName, model.NewAddress.LastName, model.NewAddress.PhoneNumber,
model.NewAddress.Email, model.NewAddress.FaxNumber, model.NewAddress.Company,
model.NewAddress.Address1, model.NewAddress.Address2, model.NewAddress.City,
model.NewAddress.StateProvinceId, model.NewAddress.ZipPostalCode,
model.NewAddress.CountryId, customAttributes);
if (address == null)
{
//address is not found. let's create a new one
address = model.NewAddress.ToEntity();
address.CustomAttributes = customAttributes;
address.CreatedOnUtc = DateTime.UtcNow;
//some validation
if (address.CountryId == 0)
address.CountryId = null;
if (address.StateProvinceId == 0)
address.StateProvinceId = null;
_workContext.CurrentCustomer.Addresses.Add(address);
}
_workContext.CurrentCustomer.BillingAddress = address;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
return RedirectToRoute("CheckoutShippingAddress");
}
//If we got this far, something failed, redisplay form
model = PrepareBillingAddressModel(selectedCountryId: model.NewAddress.CountryId);
return View(model);
}
示例10: AddressEdit
public ActionResult AddressEdit(OrderAddressModel model, FormCollection form)
{
if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders))
return AccessDeniedView();
var order = _orderService.GetOrderById(model.OrderId);
if (order == null)
//No order found with the specified id
return RedirectToAction("List");
//a vendor does not have access to this functionality
if (_workContext.CurrentVendor != null)
return RedirectToAction("Edit", "Order", new { id = order.ID });
var address = _addressService.GetAddressById(model.Address.Id);
if (address == null)
throw new ArgumentException("No address found with the specified id");
//custom address attributes
var customAttributes = form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);
var customAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAttributes);
foreach (var error in customAttributeWarnings)
{
ModelState.AddModelError("", error);
}
if (ModelState.IsValid)
{
address = model.Address.ToEntity(address);
address.CustomAttributes = customAttributes;
_addressService.UpdateAddress(address);
return RedirectToAction("AddressEdit", new { addressId = model.Address.Id, orderId = model.OrderId });
}
//If we got this far, something failed, redisplay form
model.OrderId = order.ID;
model.Address = address.ToModel();
model.Address.FirstNameEnabled = true;
model.Address.FirstNameRequired = true;
model.Address.LastNameEnabled = true;
model.Address.LastNameRequired = true;
model.Address.EmailEnabled = true;
model.Address.EmailRequired = true;
model.Address.CompanyEnabled = _addressSettings.CompanyEnabled;
model.Address.CompanyRequired = _addressSettings.CompanyRequired;
model.Address.CountryEnabled = _addressSettings.CountryEnabled;
model.Address.StateProvinceEnabled = _addressSettings.StateProvinceEnabled;
model.Address.CityEnabled = _addressSettings.CityEnabled;
model.Address.CityRequired = _addressSettings.CityRequired;
model.Address.StreetAddressEnabled = _addressSettings.StreetAddressEnabled;
model.Address.StreetAddressRequired = _addressSettings.StreetAddressRequired;
model.Address.StreetAddress2Enabled = _addressSettings.StreetAddress2Enabled;
model.Address.StreetAddress2Required = _addressSettings.StreetAddress2Required;
model.Address.ZipPostalCodeEnabled = _addressSettings.ZipPostalCodeEnabled;
model.Address.ZipPostalCodeRequired = _addressSettings.ZipPostalCodeRequired;
model.Address.PhoneEnabled = _addressSettings.PhoneEnabled;
model.Address.PhoneRequired = _addressSettings.PhoneRequired;
model.Address.FaxEnabled = _addressSettings.FaxEnabled;
model.Address.FaxRequired = _addressSettings.FaxRequired;
//countries
model.Address.AvailableCountries.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Address.SelectCountry"), Value = "0" });
foreach (var c in _countryService.GetAllCountries(true))
model.Address.AvailableCountries.Add(new SelectListItem { Text = c.Name, Value = c.ID.ToString(), Selected = (c.ID == address.CountryId) });
//states
var states = address.Country != null ? _stateProvinceService.GetStateProvincesByCountryId(address.Country.ID, true).ToList() : new List<StateProvince>();
if (states.Count > 0)
{
foreach (var s in states)
model.Address.AvailableStates.Add(new SelectListItem { Text = s.Name, Value = s.ID.ToString(), Selected = (s.ID == address.StateProvinceId) });
}
else
model.Address.AvailableStates.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Address.OtherNonUS"), Value = "0" });
//customer attribute services
model.Address.PrepareCustomAddressAttributes(address, _addressAttributeService, _addressAttributeParser);
return View(model);
}
示例11: NewShippingAddress
public ActionResult NewShippingAddress(CheckoutShippingAddressModel model, FormCollection form)
{
//validation
var cart = _workContext.CurrentCustomer.ShoppingCartItems
.Where(sci => sci.ShoppingCartType == ShoppingCartType.ShoppingCart)
.LimitPerStore(_storeContext.CurrentStore.Id)
.ToList();
if (!cart.Any())
return RedirectToRoute("ShoppingCart");
if (_orderSettings.OnePageCheckoutEnabled)
return RedirectToRoute("CheckoutOnePage");
if (_workContext.CurrentCustomer.IsGuest() && !_orderSettings.AnonymousCheckoutAllowed)
return new HttpUnauthorizedResult();
if (!cart.RequiresShipping())
{
_workContext.CurrentCustomer.ShippingAddress = null;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
return RedirectToRoute("CheckoutShippingMethod");
}
//pickup point
if (_shippingSettings.AllowPickUpInStore)
{
if (model.PickUpInStore)
{
//no shipping address selected
_workContext.CurrentCustomer.ShippingAddress = null;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
var pickupPoint = form["pickup-points-id"].Split(new[] { "___" }, StringSplitOptions.None);
var pickupPoints = _shippingService
.GetPickupPoints(_workContext.CurrentCustomer.BillingAddress, pickupPoint[1], _storeContext.CurrentStore.Id).PickupPoints.ToList();
var selectedPoint = pickupPoints.FirstOrDefault(x => x.Id.Equals(pickupPoint[0]));
if (selectedPoint == null)
return RedirectToRoute("CheckoutShippingAddress");
var pickUpInStoreShippingOption = new ShippingOption
{
Name = string.Format(_localizationService.GetResource("Checkout.PickupPoints.Name"), selectedPoint.Name),
Rate = selectedPoint.PickupFee,
Description = selectedPoint.Description,
ShippingRateComputationMethodSystemName = selectedPoint.ProviderSystemName
};
_genericAttributeService.SaveAttribute(_workContext.CurrentCustomer, SystemCustomerAttributeNames.SelectedShippingOption, pickUpInStoreShippingOption, _storeContext.CurrentStore.Id);
_genericAttributeService.SaveAttribute(_workContext.CurrentCustomer, SystemCustomerAttributeNames.SelectedPickupPoint, selectedPoint, _storeContext.CurrentStore.Id);
return RedirectToRoute("CheckoutPaymentMethod");
}
//set value indicating that "pick up in store" option has not been chosen
_genericAttributeService.SaveAttribute<PickupPoint>(_workContext.CurrentCustomer, SystemCustomerAttributeNames.SelectedPickupPoint, null, _storeContext.CurrentStore.Id);
}
//custom address attributes
var customAttributes = form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);
var customAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAttributes);
foreach (var error in customAttributeWarnings)
{
ModelState.AddModelError("", error);
}
if (ModelState.IsValid)
{
//try to find an address with the same values (don't duplicate records)
var address = _workContext.CurrentCustomer.Addresses.ToList().FindAddress(
model.NewAddress.FirstName, model.NewAddress.LastName, model.NewAddress.PhoneNumber,
model.NewAddress.Email, model.NewAddress.FaxNumber, model.NewAddress.Company,
model.NewAddress.Address1, model.NewAddress.Address2, model.NewAddress.City,
model.NewAddress.StateProvinceId, model.NewAddress.ZipPostalCode,
model.NewAddress.CountryId, customAttributes);
if (address == null)
{
address = model.NewAddress.ToEntity();
address.CustomAttributes = customAttributes;
address.CreatedOnUtc = DateTime.UtcNow;
//some validation
if (address.CountryId == 0)
address.CountryId = null;
if (address.StateProvinceId == 0)
address.StateProvinceId = null;
_workContext.CurrentCustomer.Addresses.Add(address);
}
_workContext.CurrentCustomer.ShippingAddress = address;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
return RedirectToRoute("CheckoutShippingMethod");
}
//If we got this far, something failed, redisplay form
model = PrepareShippingAddressModel(
selectedCountryId: model.NewAddress.CountryId,
overrideAttributesXml: customAttributes);
return View(model);
}
示例12: NewBillingAddress
public ActionResult NewBillingAddress(CheckoutBillingAddressModel model, FormCollection form)
{
//validation
var cart = _workContext.CurrentCustomer.ShoppingCartItems
.Where(sci => sci.ShoppingCartType == ShoppingCartType.ShoppingCart)
.LimitPerStore(_storeContext.CurrentStore.Id)
.ToList();
if (!cart.Any())
return RedirectToRoute("ShoppingCart");
if (_orderSettings.OnePageCheckoutEnabled)
return RedirectToRoute("CheckoutOnePage");
if (_workContext.CurrentCustomer.IsGuest() && !_orderSettings.AnonymousCheckoutAllowed)
return new HttpUnauthorizedResult();
//custom address attributes
var customAttributes = form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);
var customAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAttributes);
foreach (var error in customAttributeWarnings)
{
ModelState.AddModelError("", error);
}
if (ModelState.IsValid)
{
//try to find an address with the same values (don't duplicate records)
var address = _workContext.CurrentCustomer.Addresses.ToList().FindAddress(
model.NewAddress.FirstName, model.NewAddress.LastName, model.NewAddress.PhoneNumber,
model.NewAddress.Email, model.NewAddress.FaxNumber, model.NewAddress.Company,
model.NewAddress.Address1, model.NewAddress.Address2, model.NewAddress.City,
model.NewAddress.StateProvinceId, model.NewAddress.ZipPostalCode,
model.NewAddress.CountryId, customAttributes);
if (address == null)
{
//address is not found. let's create a new one
address = model.NewAddress.ToEntity();
address.CustomAttributes = customAttributes;
address.CreatedOnUtc = DateTime.UtcNow;
//some validation
if (address.CountryId == 0)
address.CountryId = null;
if (address.StateProvinceId == 0)
address.StateProvinceId = null;
_workContext.CurrentCustomer.Addresses.Add(address);
}
_workContext.CurrentCustomer.BillingAddress = address;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
//ship to the same address?
if (_shippingSettings.ShipToSameAddress && model.ShipToSameAddress && cart.RequiresShipping())
{
_workContext.CurrentCustomer.ShippingAddress = _workContext.CurrentCustomer.BillingAddress;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
//reset selected shipping method (in case if "pick up in store" was selected)
_genericAttributeService.SaveAttribute<ShippingOption>(_workContext.CurrentCustomer, SystemCustomerAttributeNames.SelectedShippingOption, null, _storeContext.CurrentStore.Id);
_genericAttributeService.SaveAttribute<PickupPoint>(_workContext.CurrentCustomer, SystemCustomerAttributeNames.SelectedPickupPoint, null, _storeContext.CurrentStore.Id);
//limitation - "Ship to the same address" doesn't properly work in "pick up in store only" case (when no shipping plugins are available)
return RedirectToRoute("CheckoutShippingMethod");
}
return RedirectToRoute("CheckoutShippingAddress");
}
//If we got this far, something failed, redisplay form
model = PrepareBillingAddressModel(cart,
selectedCountryId: model.NewAddress.CountryId,
overrideAttributesXml: customAttributes);
return View(model);
}
示例13: NewShippingAddress
public ActionResult NewShippingAddress(CheckoutShippingAddressModel model, FormCollection form)
{
bool errors = false;
string errorMessage = "";
//validation
var cart = _workContext.CurrentCustomer.ShoppingCartItems
.Where(sci => sci.ShoppingCartType == ShoppingCartType.ShoppingCart)
.LimitPerStore(_storeContext.CurrentStore.Id)
.ToList();
if (cart.Count == 0)
return RedirectToRoute("ShoppingCart");
if (_orderSettings.OnePageCheckoutEnabled)
return RedirectToRoute("CheckoutOnePage");
if ((_workContext.CurrentCustomer.IsGuest() && !_orderSettings.AnonymousCheckoutAllowed))
return new HttpUnauthorizedResult();
if (!cart.RequiresShipping())
{
_workContext.CurrentCustomer.ShippingAddress = null;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
//return RedirectToRoute("CheckoutShippingMethod");
return RedirectToRoute("CheckoutConfirmAddress");
}
//Pick up in store?
if (_shippingSettings.AllowPickUpInStore)
{
if (model.PickUpInStore)
{
//customer decided to pick up in store
//no shipping address selected
_workContext.CurrentCustomer.ShippingAddress = null;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
//set value indicating that "pick up in store" option has been chosen
_genericAttributeService.SaveAttribute(_workContext.CurrentCustomer, SystemCustomerAttributeNames.SelectedPickUpInStore, true, _storeContext.CurrentStore.Id);
//save "pick up in store" shipping method
var pickUpInStoreShippingOption = new ShippingOption
{
Name = _localizationService.GetResource("Checkout.PickUpInStore.MethodName"),
Rate = _shippingSettings.PickUpInStoreFee,
Description = null,
ShippingRateComputationMethodSystemName = null
};
_genericAttributeService.SaveAttribute(_workContext.CurrentCustomer,
SystemCustomerAttributeNames.SelectedShippingOption,
pickUpInStoreShippingOption,
_storeContext.CurrentStore.Id);
//load next step
//return RedirectToRoute("CheckoutShippingMethod");
return RedirectToRoute("CheckoutConfirmAddress");
}
//set value indicating that "pick up in store" option has not been chosen
_genericAttributeService.SaveAttribute(_workContext.CurrentCustomer, SystemCustomerAttributeNames.SelectedPickUpInStore, false, _storeContext.CurrentStore.Id);
}
//custom address attributes
var customAttributes = form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);
var customAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAttributes);
foreach (var error in customAttributeWarnings)
{
ModelState.AddModelError("", error);
}
if (ModelState.IsValid)
{
if (model.NewAddress.Id > 0)
{
var address = _workContext.CurrentCustomer.Addresses.FirstOrDefault(a => a.Id == model.NewAddress.Id);
if (address != null)
{
var products = _workContext.CurrentCustomer.ShoppingCartItems.Where(x => x.ShoppingCartType == ShoppingCartType.ShoppingCart).ToList();
if (products != null)
{
//foreach (var p in products) {
for (int i = 0; i < products.Count; i++)
{
var p = products[i];
if (p != null)
{
var city = _zipcodeService.GetZipcodeByName(model.NewAddress.ZipPostalCode.Trim());
if (city != null)
{
ProductCities productcity = null;
foreach (var item in city)
{
productcity = _productCitiesService.GetProductsCitiesByProductId(p.ProductId).Where(x => x.CityID == item.CityID).FirstOrDefault();
if (productcity != null)
break;
}
if (productcity == null)
{
errors = true;
string msg = p.Product.Name + " is not available on your zip code.";
//.........这里部分代码省略.........
示例14: NewBillingAddress
public ActionResult NewBillingAddress(CheckoutBillingAddressModel model, FormCollection form)
{
bool errors = false;
string errorMessage = "";
//validation
var cart = _workContext.CurrentCustomer.ShoppingCartItems
.Where(sci => sci.ShoppingCartType == ShoppingCartType.ShoppingCart)
.LimitPerStore(_storeContext.CurrentStore.Id)
.ToList();
if (cart.Count == 0)
return RedirectToRoute("ShoppingCart");
if (_orderSettings.OnePageCheckoutEnabled)
return RedirectToRoute("CheckoutOnePage");
if ((_workContext.CurrentCustomer.IsGuest() && !_orderSettings.AnonymousCheckoutAllowed))
return new HttpUnauthorizedResult();
//custom address attributes
var customAttributes = form.ParseCustomAddressAttributes(_addressAttributeParser, _addressAttributeService);
var customAttributeWarnings = _addressAttributeParser.GetAttributeWarnings(customAttributes);
foreach (var error in customAttributeWarnings)
{
ModelState.AddModelError("", error);
}
if (ModelState.IsValid)
{
if (model.NewAddress.Id > 0)
{
var address = _workContext.CurrentCustomer.Addresses.FirstOrDefault(a => a.Id == model.NewAddress.Id);
if (address != null)
{
//nyusoft
var products = _workContext.CurrentCustomer.ShoppingCartItems.Where(x => x.ShoppingCartType == ShoppingCartType.ShoppingCart).ToList();
if (products != null)
{
//foreach (var p in products) {
for (int i = 0; i < products.Count; i++)
{
var p = products[i];
if (p != null)
{
var city = _zipcodeService.GetZipcodeByName(model.NewAddress.ZipPostalCode.Trim());
if (city != null)
{
ProductCities productcity = null;
foreach (var item in city)
{
productcity = _productCitiesService.GetProductsCitiesByProductId(p.ProductId).Where(x => x.CityID == item.CityID).FirstOrDefault();
if (productcity != null)
break;
}
if (productcity == null)
{
errors = true;
string msg = p.Product.Name + " is not available on your zip code.";
errorMessage = msg;
TempData["message"] = errorMessage;
//return RedirectToRoute("CheckoutBillingAddress",model);
model = PrepareBillingAddressModel(selectedCountryId: model.NewAddress.CountryId);
return View(model);
}
}
else {
errors = true;
string msg = "Our services are not available on your zip code.";
errorMessage = msg;
TempData["message"] = errorMessage;
model = PrepareBillingAddressModel(selectedCountryId: model.NewAddress.CountryId);
return View(model);
//return RedirectToRoute("CheckoutBillingAddress");
}
}
}
}
if (errors == false)
{
address = model.NewAddress.ToEntity(address);
address.CustomAttributes = customAttributes;
_addressService.UpdateAddress(address);
_workContext.CurrentCustomer.BillingAddress = address;
_workContext.CurrentCustomer.ShippingAddress = address;
_customerService.UpdateCustomer(_workContext.CurrentCustomer);
//return RedirectToRoute("CheckoutShippingAddress");
return RedirectToRoute("CheckoutConfirmAddress");
}
else {
//return RedirectToRoute("CheckoutBillingAddress");
model = PrepareBillingAddressModel(selectedCountryId: model.NewAddress.CountryId);
return View(model);
}
}
}
else
{
//try to find an address with the same values (don't duplicate records)
//.........这里部分代码省略.........