public async Task <IActionResult> Edit(ContactAttributeModel model, bool continueEditing) { var contactAttribute = await _contactAttributeService.GetContactAttributeById(model.Id); if (contactAttribute == null) { //No contact attribute found with the specified id return(RedirectToAction("List")); } if (ModelState.IsValid) { contactAttribute = await _contactAttributeViewModelService.UpdateContactAttributeModel(contactAttribute, model); SuccessNotification(_localizationService.GetResource("Admin.Catalog.Attributes.ContactAttributes.Updated")); if (continueEditing) { //selected tab SaveSelectedTabIndex(); return(RedirectToAction("Edit", new { id = contactAttribute.Id })); } return(RedirectToAction("List")); } //If we got this far, something failed, redisplay form //Stores await model.PrepareStoresMappingModel(contactAttribute, _storeService, true); //ACL await model.PrepareACLModel(contactAttribute, true, _customerService); await _contactAttributeViewModelService.PrepareConditionAttributes(model, contactAttribute); return(View(model)); }
public virtual async Task <ContactAttribute> InsertContactAttributeModel(ContactAttributeModel model) { var contactAttribute = model.ToEntity(); await _contactAttributeService.InsertContactAttribute(contactAttribute); //activity log await _customerActivityService.InsertActivity("AddNewContactAttribute", contactAttribute.Id, _localizationService.GetResource("ActivityLog.AddNewContactAttribute"), contactAttribute.Name); return(contactAttribute); }
public async Task <IActionResult> Create(ContactAttributeModel model, bool continueEditing) { if (ModelState.IsValid) { var contactAttribute = await _contactAttributeViewModelService.InsertContactAttributeModel(model); Success(_translationService.GetResource("Admin.Catalog.Attributes.ContactAttributes.Added")); return(continueEditing ? RedirectToAction("Edit", new { id = contactAttribute.Id }) : RedirectToAction("List")); } //If we got this far, something failed, redisplay form return(View(model)); }
public async Task <IActionResult> Create() { var model = new ContactAttributeModel(); //locales await AddLocales(_languageService, model.Locales); //condition await _contactAttributeViewModelService.PrepareConditionAttributes(model, null); return(View(model)); }
//create public IActionResult Create() { var model = new ContactAttributeModel(); //locales AddLocales(_languageService, model.Locales); //Stores model.PrepareStoresMappingModel(null, false, _storeService); //ACL model.PrepareACLModel(null, false, _customerService); //condition _contactAttributeViewModelService.PrepareConditionAttributes(model, null); return(View(model)); }
public IActionResult Edit(ContactAttributeModel model, bool continueEditing) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageAttributes)) { return(AccessDeniedView()); } var contactAttribute = _contactAttributeService.GetContactAttributeById(model.Id); if (contactAttribute == null) { //No contact attribute found with the specified id return(RedirectToAction("List")); } if (ModelState.IsValid) { contactAttribute = model.ToEntity(contactAttribute); SaveConditionAttributes(contactAttribute, model); contactAttribute.CustomerRoles = model.SelectedCustomerRoleIds != null?model.SelectedCustomerRoleIds.ToList() : new List <string>(); contactAttribute.Locales = UpdateAttributeLocales(contactAttribute, model); contactAttribute.Stores = model.SelectedStoreIds != null?model.SelectedStoreIds.ToList() : new List <string>(); _contactAttributeService.UpdateContactAttribute(contactAttribute); //activity log _customerActivityService.InsertActivity("EditContactAttribute", contactAttribute.Id, _localizationService.GetResource("ActivityLog.EditContactAttribute"), contactAttribute.Name); SuccessNotification(_localizationService.GetResource("Admin.Catalog.Attributes.ContactAttributes.Updated")); if (continueEditing) { //selected tab SaveSelectedTabIndex(); return(RedirectToAction("Edit", new { id = contactAttribute.Id })); } return(RedirectToAction("List")); } //If we got this far, something failed, redisplay form //Stores PrepareStoresMappingModel(model, contactAttribute, true); //ACL PrepareAclModel(model, contactAttribute, false); return(View(model)); }
public IActionResult Create(ContactAttributeModel model, bool continueEditing) { if (ModelState.IsValid) { var contactAttribute = _contactAttributeViewModelService.InsertContactAttributeModel(model); SuccessNotification(_localizationService.GetResource("Admin.Catalog.Attributes.ContactAttributes.Added")); return(continueEditing ? RedirectToAction("Edit", new { id = contactAttribute.Id }) : RedirectToAction("List")); } //If we got this far, something failed, redisplay form //Stores model.PrepareStoresMappingModel(null, true, _storeService); //ACL model.PrepareACLModel(null, true, _customerService); return(View(model)); }
protected virtual void PrepareAclModel(ContactAttributeModel model, ContactAttribute contactAttribute, bool excludeProperties) { if (model == null) { throw new ArgumentNullException("model"); } model.AvailableCustomerRoles = _customerService .GetAllCustomerRoles(true) .Select(cr => cr.ToModel()) .ToList(); if (!excludeProperties) { if (contactAttribute != null) { model.SelectedCustomerRoleIds = contactAttribute.CustomerRoles.ToArray(); } } }
protected virtual void PrepareStoresMappingModel(ContactAttributeModel model, ContactAttribute contactAttribute, bool excludeProperties) { if (model == null) { throw new ArgumentNullException("model"); } model.AvailableStores = _storeService .GetAllStores() .Select(s => s.ToModel()) .ToList(); if (!excludeProperties) { if (contactAttribute != null) { model.SelectedStoreIds = contactAttribute.Stores.ToArray(); } } }
//create public IActionResult Create() { if (!_permissionService.Authorize(StandardPermissionProvider.ManageAttributes)) { return(AccessDeniedView()); } var model = new ContactAttributeModel(); //locales AddLocales(_languageService, model.Locales); //Stores PrepareStoresMappingModel(model, null, false); //ACL PrepareAclModel(model, null, false); //condition PrepareConditionAttributes(model, null); return(View(model)); }
public virtual async Task PrepareConditionAttributes(ContactAttributeModel model, ContactAttribute contactAttribute) { if (model == null) { throw new ArgumentNullException("model"); } //currenty any contact attribute can have condition. model.ConditionAllowed = true; if (contactAttribute == null) { return; } var selectedAttribute = (await _contactAttributeParser.ParseContactAttributes(contactAttribute.ConditionAttributeXml)).FirstOrDefault(); var selectedValues = await _contactAttributeParser.ParseContactAttributeValues(contactAttribute.ConditionAttributeXml); model.ConditionModel = new ConditionModel() { EnableCondition = !string.IsNullOrEmpty(contactAttribute.ConditionAttributeXml), SelectedAttributeId = selectedAttribute != null ? selectedAttribute.Id : "", ConditionAttributes = (await _contactAttributeService.GetAllContactAttributes(_workContext.CurrentCustomer.StaffStoreId, ignorAcl: true)) //ignore this attribute and non-combinable attributes .Where(x => x.Id != contactAttribute.Id && x.CanBeUsedAsCondition()) .Select(x => new AttributeConditionModel() { Id = x.Id, Name = x.Name, AttributeControlType = x.AttributeControlType, Values = x.ContactAttributeValues .Select(v => new SelectListItem() { Text = v.Name, Value = v.Id.ToString(), Selected = selectedAttribute != null && selectedAttribute.Id == x.Id && selectedValues.Any(sv => sv.Id == v.Id) }).ToList() }).ToList() }; }
protected virtual async Task SaveConditionAttributes(ContactAttribute contactAttribute, ContactAttributeModel model) { string attributesXml = null; if (model.ConditionModel.EnableCondition) { var attribute = await _contactAttributeService.GetContactAttributeById(model.ConditionModel.SelectedAttributeId); if (attribute != null) { switch (attribute.AttributeControlType) { case AttributeControlType.DropdownList: case AttributeControlType.RadioList: case AttributeControlType.ColorSquares: case AttributeControlType.ImageSquares: { var selectedAttribute = model.ConditionModel.ConditionAttributes .FirstOrDefault(x => x.Id == model.ConditionModel.SelectedAttributeId); var selectedValue = selectedAttribute != null ? selectedAttribute.SelectedValueId : null; if (!String.IsNullOrEmpty(selectedValue)) { attributesXml = _contactAttributeParser.AddContactAttribute(attributesXml, attribute, selectedValue); } else { attributesXml = _contactAttributeParser.AddContactAttribute(attributesXml, attribute, string.Empty); } } break; case AttributeControlType.Checkboxes: { var selectedAttribute = model.ConditionModel.ConditionAttributes .FirstOrDefault(x => x.Id == model.ConditionModel.SelectedAttributeId); var selectedValues = selectedAttribute != null?selectedAttribute.Values.Where(x => x.Selected).Select(x => x.Value) : null; if (selectedValues.Any()) { foreach (var value in selectedValues) { attributesXml = _contactAttributeParser.AddContactAttribute(attributesXml, attribute, value); } } else { attributesXml = _contactAttributeParser.AddContactAttribute(attributesXml, attribute, string.Empty); } } break; case AttributeControlType.ReadonlyCheckboxes: case AttributeControlType.TextBox: case AttributeControlType.MultilineTextbox: case AttributeControlType.Datepicker: case AttributeControlType.FileUpload: default: //these attribute types are not supported as conditions break; } } } contactAttribute.ConditionAttributeXml = attributesXml; }
public virtual async Task <ContactAttribute> UpdateContactAttributeModel(ContactAttribute contactAttribute, ContactAttributeModel model) { contactAttribute = model.ToEntity(contactAttribute); await SaveConditionAttributes(contactAttribute, model); await _contactAttributeService.UpdateContactAttribute(contactAttribute); //activity log await _customerActivityService.InsertActivity("EditContactAttribute", contactAttribute.Id, _localizationService.GetResource("ActivityLog.EditContactAttribute"), contactAttribute.Name); return(contactAttribute); }
protected virtual List <LocalizedProperty> UpdateAttributeLocales(ContactAttribute contactAttribute, ContactAttributeModel model) { List <LocalizedProperty> localized = new List <LocalizedProperty>(); foreach (var local in model.Locales) { if (!(String.IsNullOrEmpty(local.Name))) { localized.Add(new LocalizedProperty() { LanguageId = local.LanguageId, LocaleKey = "Name", LocaleValue = local.Name, }); } if (!(String.IsNullOrEmpty(local.TextPrompt))) { localized.Add(new LocalizedProperty() { LanguageId = local.LanguageId, LocaleKey = "TextPrompt", LocaleValue = local.TextPrompt, }); } } return(localized); }
public static ContactAttribute ToEntity(this ContactAttributeModel model, ContactAttribute destination) { return(model.MapTo(destination)); }
public static ContactAttribute ToEntity(this ContactAttributeModel model) { return(model.MapTo <ContactAttributeModel, ContactAttribute>()); }