public static MultiDropDownItem ConvertToMultiDropDownItem(this AttributeLevelViewModel model) { var item = new MultiDropDownItem() { Value = model.LevelId.ToString(), Text = model.GetLocalizedName() }; item.Childrens = model.Categories.ConvertToMultiDropDownItems(); return(item); }
private static List <AttributeLevelViewModel> GetMultiLevelData(this ClientFieldData[] formData, string name) { var currentLanguage = Localization.CurrentLanguage; var result = new List <AttributeLevelViewModel>(); var fieldsNameLevel = new string[] { string.Format("{0}-levelEn", name), string.Format("{0}-levelEs", name), string.Format("{0}-levelPt", name), string.Format("{0}-levelFr", name), string.Format("{0}-level-disabled", name), }; var fieldsNameCategory = new string[] { string.Format("{0}-categoryEn", name), string.Format("{0}-categoryEs", name), string.Format("{0}-categoryPt", name), string.Format("{0}-categoryFr", name), string.Format("{0}-category-disabled", name), }; var fieldsLevel = formData.Where(x => !string.IsNullOrWhiteSpace(x.Id) && fieldsNameLevel.Any(y => x.Name == y)); var fieldsCategory = formData.Where(x => !string.IsNullOrWhiteSpace(x.Id) && fieldsNameCategory.Any(y => x.Name == y)); var fieldsLevelGrouped = fieldsLevel.GroupBy(x => x.Id); foreach (var levelItem in fieldsLevelGrouped) { var levelId = 0; var levelModel = new AttributeLevelViewModel(); result.Add(levelModel); var levelField = levelItem.FirstOrDefault(x => x.Name == fieldsNameLevel[0]); levelModel.NameEn = null; if (levelField != null) { levelModel.NameEn = levelField.Value; } levelField = levelItem.FirstOrDefault(x => x.Name == fieldsNameLevel[1]); levelModel.NameEs = null; if (levelField != null) { levelModel.NameEs = levelField.Value; } levelField = levelItem.FirstOrDefault(x => x.Name == fieldsNameLevel[2]); levelModel.NamePt = null; if (levelField != null) { levelModel.NamePt = levelField.Value; } levelField = levelItem.FirstOrDefault(x => x.Name == fieldsNameLevel[3]); levelModel.NameFr = null; if (levelField != null) { levelModel.NameFr = levelField.Value; } levelField = levelItem.FirstOrDefault(x => x.Name == fieldsNameLevel[4]); levelModel.IsEnabled = false; if (levelField != null) { levelModel.IsEnabled = !GetBoolValue(levelField.Value); } if (!levelItem.Key.Contains("new")) { levelId = int.Parse(levelItem.Key); levelModel.LevelId = levelId; } var categoriesFromLevel = fieldsCategory.Where(x => x.ExtraData.Any(y => (y.Key == "data-persist-parent-id") && (y.Value == levelItem.Key))); var categoriesFromLevelGrouped = categoriesFromLevel.GroupBy(x => x.Id); foreach (var categoryItem in categoriesFromLevelGrouped) { var categoryModel = new AttributeCategoryViewModel() { CreateLanguage = currentLanguage, LevelId = levelId }; levelModel.Categories.Add(categoryModel); var field = categoryItem.FirstOrDefault(x => x.Name == fieldsNameCategory[0]); categoryModel.NameEn = null; if (field != null) { categoryModel.NameEn = field.Value; } field = categoryItem.FirstOrDefault(x => x.Name == fieldsNameCategory[1]); categoryModel.NameEs = null; if (field != null) { categoryModel.NameEs = field.Value; } field = categoryItem.FirstOrDefault(x => x.Name == fieldsNameCategory[2]); categoryModel.NamePt = null; if (field != null) { categoryModel.NamePt = field.Value; } field = categoryItem.FirstOrDefault(x => x.Name == fieldsNameCategory[3]); categoryModel.NameFr = null; if (field != null) { categoryModel.NameFr = field.Value; } field = categoryItem.FirstOrDefault(x => x.Name == fieldsNameCategory[4]); categoryModel.IsEnabled = false; if (field != null) { categoryModel.IsEnabled = !GetBoolValue(field.Value); } if (!categoryItem.Key.Contains("new")) { categoryModel.CategoryId = int.Parse(categoryItem.Key); } } } return(result); }