/// <summary> /// Merges options and values and returns one list with option value view models for use (values are returned as objects). /// </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 <IOptionValue> GetMergedOptionValues(IEnumerable <IOption> options, IEnumerable <IOption> optionValues) { var optionModels = new List <IOptionValue>(); if (optionValues != null) { foreach (var optionValue in optionValues.Distinct()) { var value = GetValueSafe(optionValue); var optionViewModel = new OptionValueViewModel { Type = optionValue.Type, OptionKey = optionValue.Key.Trim(), OptionValue = value, CustomOption = optionValue.CustomOption != null ? new CustomOptionViewModel { Identifier = optionValue.CustomOption.Identifier, Title = optionValue.CustomOption.Title } : null }; optionModels.Add(optionViewModel); } } if (options != null) { foreach (var option in options.Distinct()) { if (!optionModels.Any(f => f.Key.Equals(option.Key.Trim(), StringComparison.OrdinalIgnoreCase))) { var value = GetValueSafe(option); var optionViewModel = new OptionValueViewModel { Type = option.Type, OptionKey = option.Key.Trim(), OptionValue = value, CustomOption = option.CustomOption != null ? new CustomOptionViewModel { Identifier = option.CustomOption.Identifier, Title = option.CustomOption.Title } : null, }; optionModels.Add(optionViewModel); } } } return(optionModels.OrderBy(o => o.Key).ToList()); }
/// <summary> /// Creates the option value view model. /// </summary> /// <param name="option">The option.</param> /// <returns>Created option value view model</returns> private OptionValueViewModel CreateOptionValueViewModel(IOptionValue option) { var optionViewModel = new OptionValueViewModel { Type = option.Type, OptionKey = option.Key.Trim(), OptionValue = option.Value, CustomOption = option.CustomOption != null ? new CustomOptionViewModel { Identifier = option.CustomOption.Identifier, Title = option.CustomOption.Title, Id = option.CustomOption.Id } : null, }; return(optionViewModel); }