Ejemplo n.º 1
0
        /// <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());
        }
Ejemplo n.º 2
0
        /// <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);
        }