private static void PrepareCustomAddressAttributes(this AddressModel model, Address address, IAddressAttributeService addressAttributeService, IAddressAttributeParser addressAttributeParser, string overrideAttributesXml = "") { if (addressAttributeService == null) throw new ArgumentNullException("addressAttributeService"); if (addressAttributeParser == null) throw new ArgumentNullException("addressAttributeParser"); var attributes = addressAttributeService.GetAllAddressAttributes(); foreach (var attribute in attributes) { var attributeModel = new AddressAttributeModel { Id = attribute.Id, Name = attribute.GetLocalized(x => x.Name), IsRequired = attribute.IsRequired, AttributeControlType = attribute.AttributeControlType, }; if (attribute.ShouldHaveValues()) { //values var attributeValues = addressAttributeService.GetAddressAttributeValues(attribute.Id); foreach (var attributeValue in attributeValues) { var attributeValueModel = new AddressAttributeValueModel { Id = attributeValue.Id, Name = attributeValue.GetLocalized(x => x.Name), IsPreSelected = attributeValue.IsPreSelected }; attributeModel.Values.Add(attributeValueModel); } } //set already selected attributes var selectedAddressAttributes = !String.IsNullOrEmpty(overrideAttributesXml) ? overrideAttributesXml : (address != null ? address.CustomAttributes : null); switch (attribute.AttributeControlType) { case AttributeControlType.DropdownList: case AttributeControlType.RadioList: case AttributeControlType.Checkboxes: { if (!String.IsNullOrEmpty(selectedAddressAttributes)) { //clear default selection foreach (var item in attributeModel.Values) item.IsPreSelected = false; //select new values var selectedValues = addressAttributeParser.ParseAddressAttributeValues(selectedAddressAttributes); foreach (var attributeValue in selectedValues) foreach (var item in attributeModel.Values) if (attributeValue.Id == item.Id) item.IsPreSelected = true; } } break; case AttributeControlType.ReadonlyCheckboxes: { //do nothing //values are already pre-set } break; case AttributeControlType.TextBox: case AttributeControlType.MultilineTextbox: { if (!String.IsNullOrEmpty(selectedAddressAttributes)) { var enteredText = addressAttributeParser.ParseValues(selectedAddressAttributes, attribute.Id); if (enteredText.Count > 0) attributeModel.DefaultValue = enteredText[0]; } } break; case AttributeControlType.ColorSquares: case AttributeControlType.ImageSquares: case AttributeControlType.Datepicker: case AttributeControlType.FileUpload: default: //not supported attribute control types break; } model.CustomAddressAttributes.Add(attributeModel); } }
public static void PrepareCustomAddressAttributes(this AddressModel model, Address address, IAddressAttributeService addressAttributeService, IAddressAttributeParser addressAttributeParser) { //this method is very similar to the same one in Nop.Web project if (addressAttributeService == null) { throw new ArgumentNullException("addressAttributeService"); } if (addressAttributeParser == null) { throw new ArgumentNullException("addressAttributeParser"); } var attributes = addressAttributeService.GetAllAddressAttributes(); foreach (var attribute in attributes) { var attributeModel = new AddressModel.AddressAttributeModel { Id = attribute.Id, Name = attribute.Name, IsRequired = attribute.IsRequired, AttributeControlType = attribute.AttributeControlType, }; if (attribute.ShouldHaveValues()) { //values var attributeValues = addressAttributeService.GetAddressAttributeValues(attribute.Id); foreach (var attributeValue in attributeValues) { var attributeValueModel = new AddressModel.AddressAttributeValueModel { Id = attributeValue.Id, Name = attributeValue.Name, IsPreSelected = attributeValue.IsPreSelected }; attributeModel.Values.Add(attributeValueModel); } } //set already selected attributes var selectedAddressAttributes = address != null ? address.CustomAttributes : null; switch (attribute.AttributeControlType) { case AttributeControlType.DropdownList: case AttributeControlType.RadioList: case AttributeControlType.Checkboxes: { if (!String.IsNullOrEmpty(selectedAddressAttributes)) { //clear default selection foreach (var item in attributeModel.Values) { item.IsPreSelected = false; } //select new values var selectedValues = addressAttributeParser.ParseAddressAttributeValues(selectedAddressAttributes); foreach (var attributeValue in selectedValues) { foreach (var item in attributeModel.Values) { if (attributeValue.Id == item.Id) { item.IsPreSelected = true; } } } } } break; case AttributeControlType.ReadonlyCheckboxes: { //do nothing //values are already pre-set } break; case AttributeControlType.TextBox: case AttributeControlType.MultilineTextbox: { if (!String.IsNullOrEmpty(selectedAddressAttributes)) { var enteredText = addressAttributeParser.ParseValues(selectedAddressAttributes, attribute.Id); if (enteredText.Any()) { attributeModel.DefaultValue = enteredText[0]; } } } break; case AttributeControlType.ColorSquares: case AttributeControlType.ImageSquares: case AttributeControlType.Datepicker: case AttributeControlType.FileUpload: default: //not supported attribute control types break; } model.CustomAddressAttributes.Add(attributeModel); } }
public virtual void PrepareCustomAddressAttributes(AddressModel model, Address address, string overrideAttributesXml = "") { var attributes = _addressAttributeService.GetAllAddressAttributes(); foreach (var attribute in attributes) { var attributeModel = new AddressAttributeModel { Id = attribute.Id, Name = attribute.GetLocalized(x => x.Name), IsRequired = attribute.IsRequired, AttributeControlType = attribute.AttributeControlType, }; if (attribute.ShouldHaveValues()) { //values var attributeValues = attribute.AddressAttributeValues; foreach (var attributeValue in attributeValues) { var attributeValueModel = new AddressAttributeValueModel { Id = attributeValue.Id, Name = attributeValue.GetLocalized(x => x.Name), IsPreSelected = attributeValue.IsPreSelected }; attributeModel.Values.Add(attributeValueModel); } } //set already selected attributes var selectedAddressAttributes = !String.IsNullOrEmpty(overrideAttributesXml) ? overrideAttributesXml : (address != null ? address.CustomAttributes : null); switch (attribute.AttributeControlType) { case AttributeControlType.DropdownList: case AttributeControlType.RadioList: case AttributeControlType.Checkboxes: { if (!String.IsNullOrEmpty(selectedAddressAttributes)) { //clear default selection foreach (var item in attributeModel.Values) { item.IsPreSelected = false; } //select new values var selectedValues = _addressAttributeParser.ParseAddressAttributeValues(selectedAddressAttributes); foreach (var attributeValue in selectedValues) { if (attributeModel.Id == attributeValue.AddressAttributeId) { foreach (var item in attributeModel.Values) { if (attributeValue.Id == item.Id) { item.IsPreSelected = true; } } } } } } break; case AttributeControlType.ReadonlyCheckboxes: { //do nothing //values are already pre-set } break; case AttributeControlType.TextBox: case AttributeControlType.MultilineTextbox: { if (!String.IsNullOrEmpty(selectedAddressAttributes)) { var enteredText = _addressAttributeParser.ParseValues(selectedAddressAttributes, attribute.Id); if (enteredText.Any()) { attributeModel.DefaultValue = enteredText[0]; } } } break; case AttributeControlType.ColorSquares: case AttributeControlType.ImageSquares: case AttributeControlType.Datepicker: case AttributeControlType.FileUpload: default: //not supported attribute control types break; } model.CustomAddressAttributes.Add(attributeModel); } }
/// <summary> /// Prepare custom address attributes /// </summary> /// <param name="models">List of address attribute models</param> /// <param name="address">Address</param> public virtual void PrepareCustomAddressAttributes(IList <AddressModel.AddressAttributeModel> models, Address address) { if (models == null) { throw new ArgumentNullException(nameof(models)); } var attributes = _addressAttributeService.GetAllAddressAttributes(); foreach (var attribute in attributes) { var attributeModel = new AddressModel.AddressAttributeModel { Id = attribute.Id, Name = attribute.Name, IsRequired = attribute.IsRequired, AttributeControlType = attribute.AttributeControlType, }; if (attribute.ShouldHaveValues()) { //values var attributeValues = _addressAttributeService.GetAddressAttributeValues(attribute.Id); foreach (var attributeValue in attributeValues) { var attributeValueModel = new AddressModel.AddressAttributeValueModel { Id = attributeValue.Id, Name = attributeValue.Name, IsPreSelected = attributeValue.IsPreSelected }; attributeModel.Values.Add(attributeValueModel); } } //set already selected attributes var selectedAddressAttributes = address?.CustomAttributes; switch (attribute.AttributeControlType) { case AttributeControlType.DropdownList: case AttributeControlType.RadioList: case AttributeControlType.Checkboxes: { if (!string.IsNullOrEmpty(selectedAddressAttributes)) { //clear default selection foreach (var item in attributeModel.Values) { item.IsPreSelected = false; } //select new values var selectedValues = _addressAttributeParser.ParseAddressAttributeValues(selectedAddressAttributes); foreach (var attributeValue in selectedValues) { foreach (var item in attributeModel.Values) { if (attributeValue.Id == item.Id) { item.IsPreSelected = true; } } } } } break; case AttributeControlType.ReadonlyCheckboxes: { //do nothing //values are already pre-set } break; case AttributeControlType.TextBox: case AttributeControlType.MultilineTextbox: { if (!string.IsNullOrEmpty(selectedAddressAttributes)) { var enteredText = _addressAttributeParser.ParseValues(selectedAddressAttributes, attribute.Id); if (enteredText.Any()) { attributeModel.DefaultValue = enteredText[0]; } } } break; case AttributeControlType.ColorSquares: case AttributeControlType.ImageSquares: case AttributeControlType.Datepicker: case AttributeControlType.FileUpload: default: //not supported attribute control types break; } models.Add(attributeModel); } }
private async Task PrepareCustomAddressAttributes(AddressModel model, Address address, Language language, IList <CustomAttribute> overrideAttributes) { var attributes = await _addressAttributeService.GetAllAddressAttributes(); foreach (var attribute in attributes) { var attributeModel = new AddressAttributeModel { Id = attribute.Id, Name = attribute.GetLocalized(x => x.Name, language.Id), IsRequired = attribute.IsRequired, AttributeControlType = attribute.AttributeControlType, }; if (attribute.ShouldHaveValues()) { //values var attributeValues = attribute.AddressAttributeValues; foreach (var attributeValue in attributeValues) { var attributeValueModel = new AddressAttributeValueModel { Id = attributeValue.Id, Name = attributeValue.GetLocalized(x => x.Name, language.Id), IsPreSelected = attributeValue.IsPreSelected }; attributeModel.Values.Add(attributeValueModel); } } //set already selected attributes var selectedAddressAttributes = overrideAttributes ?? (address?.Attributes); switch (attribute.AttributeControlType) { case AttributeControlType.DropdownList: case AttributeControlType.RadioList: case AttributeControlType.Checkboxes: { if (selectedAddressAttributes != null) { //clear default selection foreach (var item in attributeModel.Values) { item.IsPreSelected = false; } //select new values var selectedValues = await _addressAttributeParser.ParseAddressAttributeValues(selectedAddressAttributes); foreach (var attributeValue in selectedValues) { if (attributeModel.Id == attributeValue.AddressAttributeId) { foreach (var item in attributeModel.Values) { if (attributeValue.Id == item.Id) { item.IsPreSelected = true; } } } } } } break; case AttributeControlType.ReadonlyCheckboxes: { //do nothing //values are already pre-set } break; case AttributeControlType.TextBox: case AttributeControlType.MultilineTextbox: { if (selectedAddressAttributes != null) { var enteredText = selectedAddressAttributes.Where(x => x.Key == attribute.Id).Select(x => x.Value).ToList(); if (enteredText.Any()) { attributeModel.DefaultValue = enteredText[0]; } } } break; case AttributeControlType.ColorSquares: case AttributeControlType.ImageSquares: case AttributeControlType.Datepicker: case AttributeControlType.FileUpload: default: //not supported attribute control types break; } model.CustomAddressAttributes.Add(attributeModel); } }
/// <summary> /// Get address attribute values /// </summary> /// <param name="attributesXml">Attributes in XML format</param> /// <returns>Address attribute values</returns> public IList <AddressAttributeValue> ParseAddressAttributeValues(string attributesXml) { return(_addressAttributeParser.ParseAddressAttributeValues(attributesXml)); }