private CategoryAttributeValue GetCategoryAttributeValuesForMultiselect(CategoryAttribute attribute, AttributeValueModel attributeValue) { var selectedOptions = new Collection<CategoryAttributeOption>(); for (var i = 0; i < attribute.Options.Count; i++) if (bool.Parse(attributeValue.Values[i])) selectedOptions.Add(attribute.Options.ElementAt(i)); return selectedOptions.Any() ? new CategoryAttributeValue { Attribute = attribute, SelectedOptions = selectedOptions } : null; }
public static AttributeValueModel[] GetCategoryAttributeValueModel(IEnumerable<CategoryAttributeValue> attributeValues, bool forExpert = false) { List<AttributeValueModel> results = new List<AttributeValueModel>(); foreach(var value in attributeValues) { var selectedValues = new List<string>(); if (value.Attribute.Type == CategoryAttributeType.MultiSelect || forExpert) { foreach (var option in value.Attribute.Options) { var isSelected = value.SelectedOptions.Contains(option); selectedValues.Add(isSelected.ToString()); } } var model = new AttributeValueModel { AttributeId = value.Attribute.Id, Value = value.Attribute.Type == CategoryAttributeType.SingleSelect && !forExpert ? value.SelectedOptions.Single().Id.ToString() : value.Value, Values = selectedValues.ToArray() }; results.Add(model); } return results.ToArray(); }
private ActionResult GetChildCategoryAttributesActionResult(AttributeValueModel[] attributeValues, int attributeId) { var helper = new CategoryAttributeHelper(); var categoryAttributeValues = helper.GetCategoryAttributeValues(attributeValues.Where(cv => cv.AttributeId == attributeId), true); var allSubAttributes = categoryAttributeValues.SelectMany(cav => cav.Attribute.ChildAttributes); var selectedSubAttributes = allSubAttributes.Where(sa => categoryAttributeValues.Any(cav => cav.SelectedOptions.Intersect(sa.ParentOptions).Any())); var attributes = selectedSubAttributes.Where(ca => ca.Type == CategoryAttributeType.MultiSelect || ca.Type == CategoryAttributeType.SingleSelect).ToList(); var model = new ExpertCategoryAttributesModel { CategoryAttributes = attributes, CategoryAttributeValues = attributeValues }; return PartialView(MVC.Account.Views._ExpertCategoryAttributes, model); }