Exemple #1
0
        /// <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());
        }