Exemplo n.º 1
0
        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));
        }
Exemplo n.º 4
0
 public UserSetting GetSetting(SettingKind kind)
 {
     return(Settings?.SingleOrDefault(s => s.Setting.Kind == kind));
 }
Exemplo n.º 5
0
 public void SetKind(SettingKind kind)
 {
     Kind = kind;
 }
Exemplo n.º 6
0
 public Setting(Guid id, string name, SettingKind kind)
 {
     Id   = id;
     Name = name;
     Kind = kind;
 }