public async Task <IActionResult> AddSetting(Guid userId, SettingKind settingKind, string value, CancellationToken token) { var setting = await _context.Settings.FirstOrDefaultAsync(s => s.Kind == settingKind, token); var result = await _mediatr.Process( new AddUserSettingCommand(await GetRequestUserAsync(token)) { Value = value, SettingId = setting.Id, UserId = userId }, token); if (!result.Succeeded) { throw result.Exception; } return(RedirectToAction("Edit", new { id = userId })); }
/// <summary>表示されているタブをデフォルトにリセットします</summary> /// <param name="parameter"></param> private void ExecuteResetToDefault(object parameter) { if (parameter == null) { //todo:error log return; } //todo:実装 if (Enum.IsDefined(typeof(SettingKind), parameter)) { SettingKind kind = (SettingKind)Enum.ToObject(typeof(SettingKind), parameter); switch (kind) { case SettingKind.GeneralSetting: ResetGeneralSetting(); break; case SettingKind.SearchAndSynonymSetting: ResetSearchAndSynonymSetting(); break; case SettingKind.AdvancedSetting: ResetAdvancedSetting(); break; case SettingKind.All: ResetGeneralSetting(); ResetSearchAndSynonymSetting(); ResetAdvancedSetting(); break; default: // 勝手にリセットされては困るうえ、想定外なので何もさせない Logger.Error(CLASS_NAME, "ExecuteResetToDefault", $"SettingKind is invalid. kind:[{kind}]"); break; } } else { // 現状、想定していない Logger.Error(CLASS_NAME, "ExecuteResetToDefault", "parameter is null!"); return; } }
/// <summary>設定の変更を通知します</summary> /// todo:SettingManagerに設定ファイル読み書きが移管されたらこのあたり作成する internal void NotifySettingChanged(SettingKind kind) { switch (kind) { case CommonLibrary.SettingKind.AdvancedSetting: AdvancedSettingChangedEvent(this, new Events.SettingChangedEventArgs(typeof(AdvancedSetting), GetSettingManager.GetSetting(typeof(AdvancedSetting)))); break; case CommonLibrary.SettingKind.GeneralSetting: GeneralSettingChangedEvent(this, new Events.SettingChangedEventArgs(typeof(GeneralSetting), GetSettingManager.GetSetting(typeof(GeneralSetting)))); break; case CommonLibrary.SettingKind.SearchAndSynonymSetting: SearchAndSynonymSettingChangedEvent(this, new Events.SettingChangedEventArgs(typeof(SearchAndSynonymSetting), GetSettingManager.GetSetting(typeof(SearchAndSynonymSetting)))); break; case CommonLibrary.SettingKind.All: Events.SettingChangedEventArgs args = new Events.SettingChangedEventArgs(typeof(AdvancedSetting), GetSettingManager.GetSetting(typeof(AdvancedSetting))); args.AddChangedSetting(typeof(GeneralSetting), GetSettingManager.GetSetting(typeof(GeneralSetting))); args.AddChangedSetting(typeof(SearchAndSynonymSetting), GetSettingManager.GetSetting(typeof(SearchAndSynonymSetting))); AdvancedSettingChangedEvent(this, args); GeneralSettingChangedEvent(this, args); SearchAndSynonymSettingChangedEvent(this, args); break; default: //todo:error log break; } //SettingChangedEventHandlerに、設定変更に対応するべきメソッドを全て登録させる //設計イメージとしては、このメソッド内で最初にイベント引数を作成しておく //Updateが必要な設定ファイル情報を粛々と入れていき、この中で発火させる。引数で受け取った方が良いかもしれない。 //登録されたメソッドが、自分自身で更新要不要を判断する AdvancedSettingChangedEvent(this, new Events.SettingChangedEventArgs(null)); }
public UserSetting GetSetting(SettingKind kind) { return(Settings?.SingleOrDefault(s => s.Setting.Kind == kind)); }
public void SetKind(SettingKind kind) { Kind = kind; }
public Setting(Guid id, string name, SettingKind kind) { Id = id; Name = name; Kind = kind; }