/// <summary> /// Merges options and values and returns one list with option value view models for edit (values are returned as strings). /// </summary> /// <param name="options">The options.</param> /// <param name="optionValues">The option values.</param> /// <returns> /// List of option values view models, merged from options and option values /// </returns> public List <OptionValueEditViewModel> GetMergedOptionValuesForEdit(IEnumerable <IOption> options, IEnumerable <IOption> optionValues) { var optionModels = new List <OptionValueEditViewModel>(); if (optionValues != null) { foreach (var optionValue in optionValues.Distinct()) { IOption option = null; if (options != null) { option = options.FirstOrDefault(f => f.Key.Trim().Equals(optionValue.Key.Trim(), StringComparison.OrdinalIgnoreCase)); } var optionViewModel = new OptionValueEditViewModel { Type = optionValue.Type, OptionKey = optionValue.Key.Trim(), OptionValue = optionValue.Value, OptionDefaultValue = option != null ? option.Value : null }; if (option == null) { optionViewModel.CanEditOption = true; } optionModels.Add(optionViewModel); } } if (options != null) { foreach (var option in options.Distinct()) { if (!optionModels.Any(f => f.OptionKey.Equals(option.Key.Trim(), StringComparison.OrdinalIgnoreCase))) { optionModels.Add(new OptionValueEditViewModel { Type = option.Type, OptionKey = option.Key.Trim(), OptionValue = null, OptionDefaultValue = option.Value }); } } } return(optionModels.OrderBy(o => o.OptionKey).ToList()); }
/// <summary> /// Merges options and values and returns one list with option value view models for edit (values are returned as strings). /// </summary> /// <param name="options">The options.</param> /// <param name="optionValues">The option values.</param> /// <returns> /// List of option values view models, merged from options and option values /// </returns> public List <OptionValueEditViewModel> GetMergedOptionValuesForEdit(IEnumerable <IOption> options, IEnumerable <IOption> optionValues) { var optionModels = new List <OptionValueEditViewModel>(); if (optionValues != null) { foreach (var optionValue in optionValues.Distinct()) { IOption option = null; if (options != null) { option = options.FirstOrDefault( f => f.Key.Trim().Equals(optionValue.Key.Trim(), StringComparison.OrdinalIgnoreCase) && f.Type == optionValue.Type); } var optionViewModel = new OptionValueEditViewModel { Type = optionValue.Type, CustomOption = optionValue.CustomOption != null ? new CustomOptionViewModel { Identifier = optionValue.CustomOption.Identifier, Title = optionValue.CustomOption.Title } : null, OptionKey = optionValue.Key.Trim(), OptionValue = ClearFixValueForEdit(optionValue.Type, optionValue.Value), OptionDefaultValue = option != null?ClearFixValueForEdit(option.Type, option.Value) : null, UseDefaultValue = false }; if (option == null) { optionViewModel.CanEditOption = true; } optionModels.Add(optionViewModel); } } if (options != null) { foreach (var option in options.Distinct()) { if (!optionModels.Any(f => f.OptionKey.Equals(option.Key.Trim(), StringComparison.OrdinalIgnoreCase))) { optionModels.Add( new OptionValueEditViewModel { Type = option.Type, CustomOption = option.CustomOption != null ? new CustomOptionViewModel { Identifier = option.CustomOption.Identifier, Title = option.CustomOption.Title } : null, OptionKey = option.Key.Trim(), OptionValue = ClearFixValueForEdit(option.Type, option.Value), OptionDefaultValue = ClearFixValueForEdit(option.Type, option.Value), UseDefaultValue = true }); } } } SetCustomOptionValueTitles(optionModels, optionModels); return(optionModels.OrderBy(o => o.OptionKey).ToList()); }