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); } }
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>()); }
public void AddOptionCategory(int column, IOptionCategory optionCategory) { _viewModel.AddOptionCategory(column, optionCategory); }