Beispiel #1
0
        public void Register(IEnumerable <IUserOption> userOptions, IOptionCategory optionCategory)
        {
            AssertArg.IsNotNull(userOptions, nameof(userOptions));
            AssertArg.IsNotNull(optionCategory, nameof(optionCategory));

            /* We regect all options if any are already registered. */
            Tuple <IOptionCategory, List <IUserOption> > existingCategoryOptions = null;

            foreach (KeyValuePair <IOptionCategory, List <IUserOption> > pair in categoryDictionary)
            {
                foreach (IUserOption userOption in userOptions)
                {
                    IUserOption existingOption = null;

                    foreach (IUserOption option in pair.Value)
                    {
                        if (!string.IsNullOrEmpty(option.SettingKey) &&
                            object.Equals(option.SettingKey, userOption.SettingKey))
                        {
                            existingOption = option;
                            break;
                        }
                    }
                    //IUserOption existingOption = (from option in pair.Value
                    //					            where object.Equals(option.SettingKey, userOption.SettingKey)
                    //					            select option).FirstOrDefault();

                    if (existingOption != null)
                    {
                        throw new DuplicateItemException(existingOption, userOption);
                    }
                }

                if (pair.Key.Id == optionCategory.Id)
                {
                    existingCategoryOptions = new Tuple <IOptionCategory, List <IUserOption> >(pair.Key, pair.Value);
                }
            }

            List <IUserOption> list;

            if (existingCategoryOptions != null)
            {
                list = existingCategoryOptions.Item2;
            }
            else
            {
                list = new List <IUserOption>();
                categoryDictionary.Add(optionCategory, list);
            }

            foreach (IUserOption userOption in userOptions)
            {
                list.Add(userOption);
            }
        }
Beispiel #2
0
        public void AddCategory(IOptionCategory optionCategory)
        {
            var existingCategory = (from pair in categoryDictionary
                                    where pair.Key.Id == optionCategory.Id
                                    select new { Category = pair.Key, Options = pair.Value }).FirstOrDefault();

            foreach (KeyValuePair <IOptionCategory, List <IUserOption> > pair in categoryDictionary)
            {
                if (pair.Key.Id == optionCategory.Id)
                {
                    existingCategory = new { Category = pair.Key, Options = pair.Value };
                    throw new DuplicateItemException(existingCategory, optionCategory);
                }
            }

            categoryDictionary.Add(optionCategory, new List <IUserOption>());
        }
Beispiel #3
0
 public void AddOptionCategory(int column, IOptionCategory optionCategory)
 {
     _viewModel.AddOptionCategory(column, optionCategory);
 }