コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        public async Task <IActionResult> Create()
        {
            var model = new ContactAttributeModel();

            //locales
            await AddLocales(_languageService, model.Locales);

            //condition
            await _contactAttributeViewModelService.PrepareConditionAttributes(model, null);

            return(View(model));
        }
コード例 #5
0
        //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));
        }
コード例 #6
0
        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));
        }
コード例 #7
0
        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));
        }
コード例 #8
0
        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();
                }
            }
        }
コード例 #9
0
        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();
                }
            }
        }
コード例 #10
0
        //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));
        }
コード例 #11
0
        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()
            };
        }
コード例 #12
0
        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;
        }
コード例 #13
0
        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);
        }
コード例 #14
0
        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);
        }
コード例 #15
0
 public static ContactAttribute ToEntity(this ContactAttributeModel model, ContactAttribute destination)
 {
     return(model.MapTo(destination));
 }
コード例 #16
0
 public static ContactAttribute ToEntity(this ContactAttributeModel model)
 {
     return(model.MapTo <ContactAttributeModel, ContactAttribute>());
 }