/// <summary>
        /// 用户获取所有提醒设置
        /// </summary>
        /// <param name="userId">用户Id</param>
        /// <returns>用户提醒设置集合(Key:提醒方式Id,Value:提醒设置实体)</returns>
        public Dictionary <string, IEnumerable <UserReminderSettings> > GetAllUserReminderSettings(long userId)
        {
            StringBuilder cacheKey = new StringBuilder(RealTimeCacheHelper.GetListCacheKeyPrefix(CacheVersionType.AreaVersion, "UserId", userId));

            cacheKey.Append("UserReminderSettings");

            IEnumerable <UserReminderSettings> reminderSettingsList = cacheService.Get <IEnumerable <UserReminderSettings> >(cacheKey.ToString());

            if (reminderSettingsList == null)
            {
                var sql = PetaPoco.Sql.Builder;
                sql.Select("*")
                .From("tn_UserReminderSettings")
                .Where("UserId = @0", userId);

                reminderSettingsList = CreateDAO().Fetch <UserReminderSettings>(sql);

                if (reminderSettingsList != null && reminderSettingsList.Count() > 0)
                {
                    cacheService.Add(cacheKey.ToString(), reminderSettingsList, CachingExpirationType.Stable);
                }
            }

            Dictionary <string, IEnumerable <UserReminderSettings> > userReminderSettings = new Dictionary <string, IEnumerable <UserReminderSettings> >();

            if (reminderSettingsList != null && reminderSettingsList.Count() > 0)
            {
                foreach (int modeId in ReminderMode.GetAll().Select(n => n.ModeId))
                {
                    userReminderSettings.Add(modeId.ToString(), reminderSettingsList.Where(n => n.ReminderModeId == modeId).ToList());
                }
            }

            return(userReminderSettings);
        }
        public override void Update(IDatabase db, Court court, IEnumerable <JudgeModel> judges)
        {
            base.Update(db, court, judges);
            court.Name         = Name.Sanatize();
            court.BoardName    = BoardName.Sanatize();
            court.Mail         = Mail.Sanatize();
            court.BoardMail    = BoardMail.Sanatize();
            court.ReminderMode = ReminderMode.TryParseEnum(Model.ReminderMode.Standard);

            if (CourtKey.IsNullOrEmpty())
            {
                court.CourtKey = Rng.Get(16).ToHexString();
            }
            else
            {
                court.CourtKey = CourtKey.Sanatize();
            }

            if (BoardKey.IsNullOrEmpty())
            {
                court.BoardKey = Rng.Get(16).ToHexString();
            }
            else
            {
                court.BoardKey = BoardKey.Sanatize();
            }

            court.LastUpdate    = LastUpdate.ParseTimestamp();
            court.LastReminder  = LastReminder.ParseTimestamp();
            court.ReminderLevel = ReminderLevel.TryParseInt(0, 0, 9);

            if (Substitute == NullOption)
            {
                court.Substitute = null;
            }
            else
            {
                Guid substituteId = Guid.Empty;
                if (Guid.TryParse(Substitute, out substituteId))
                {
                    if (substituteId.Equals(Guid.Empty))
                    {
                        court.Substitute = null;
                    }
                    else
                    {
                        court.Substitute = db.Query <Court>(substituteId);
                    }
                }
            }
        }
        public static string Translate(this ReminderMode value)
        {
            switch (value)
            {
            case ReminderMode.Standard:
                return("Standard");

            case ReminderMode.Infrequent:
                return("Reduziert");

            case ReminderMode.Off:
                return("Aus");

            default:
                throw new InvalidOperationException();
            }
        }