예제 #1
0
 public FilterCmdManager()
 {
     String[] filterCmd = ConfigHelper.GetAppConfig ("filter_cmd").Split(',');
     String[] filterBeginCount = ConfigHelper.GetAppConfig ("filter_begin_count").Split(',');
     for (int i = 0; i < filterCmd.Length; i++) {
         FilterCmd fc = new FilterCmd(filterCmd[i],StringKit.toInt(filterBeginCount[i]));
         FilterCmdDict.Add (filterCmd [i], fc);
     }
 }
예제 #2
0
        public override LevelFilterResult FromChatString(string chatString, string option)
        {
            FilterCmd filterCmd   = Cmd.all.getCommand <FilterCmd>("filter");
            string    filterName  = null;
            string    filter      = null;
            string    searchRegex = GeneralUtilities.getSearchRegex(chatString);
            var       count       = 0;

            foreach (KeyValuePair <string, string> pair in filterCmd.savedFilters)
            {
                if (Regex.IsMatch(pair.Key, searchRegex, RegexOptions.IgnoreCase))
                {
                    if (count == 0)
                    {
                        filterName = pair.Key;
                        filter     = pair.Value;
                    }
                    count++;
                }
            }
            if (count == 0)
            {
                return(new LevelFilterResult("Found no matching filters. Try !filter list"));
            }
            if (filterLoadStack.Any(filterTxt => filterTxt == filterName))
            {
                return(new LevelFilterResult("Your -filter contained itself"));
            }
            filterLoadStack.Add(filterName);
            try
            {
                var filters = FilteredPlaylist.ParseFiltersFromString(filter);
                filters.value.Insert(0, new LevelFilterSaved());  // Some commands search through filters to check stuff
                filterLoadStack.RemoveAt(filterLoadStack.Count - 1);
                return(new LevelFilterResult(filters.value));
            }
            catch (Exception e)
            {
                filterLoadStack.RemoveAt(filterLoadStack.Count - 1);
                Console.WriteLine("-last error:\n" + e);
                return(new LevelFilterResult("There was an error retrieving -last"));
            }
        }
예제 #3
0
        public IEnumerable <Category> Filter(FilterCmd command)
        {
            Notification.Clear();
            IEnumerable <Category> results = new List <Category>();

            if (command.IsValid())
            {
                results = _categoryRepository.Filter(command);

                if (Notification.HasNotifications)
                {
                    Notification.AddNotifications(_categoryRepository.Notification.Notifications);
                }
            }
            else
            {
                Notification.AddNotifications(command.Validation);
            }

            return(results);
        }
        public IEnumerable <Category> Filter(FilterCmd command)
        {
            IList <Category> results     = new List <Category>();
            StringBuilder    sql         = new StringBuilder();
            StringBuilder    sqlFilter   = new StringBuilder();
            StringBuilder    sqlKeyWord  = new StringBuilder();
            IList <string>   textKeyWord = command.DismemberKeyWord();

            sql.Append("SELECT Cat FROM Category as Cat");

            if (command.Category.Count > 0)
            {
                sqlFilter.Append(" AND Cat.Id IN (:CategoryId) ");
            }

            if (command.Status.Count > 0)
            {
                sqlFilter.Append(" AND Cat.Status IN (:Status) ");
            }

            if (!string.IsNullOrWhiteSpace(command.PerName))
            {
                sqlFilter.Append(" AND Cat.Name = : PerName ");
            }

            if (!Equals(textKeyWord, null) && textKeyWord.Count > 0)
            {
                sqlFilter.Append(" AND ( ");
                for (int i = 0; i < textKeyWord.Count(); i++)
                {
                    sqlKeyWord.Append(string.Format(" OR CollateLatinGeneral(Cat.Name) LIKE :texto{0} ", i));
                }

                sqlFilter.Append(Regex.Replace(sqlKeyWord.ToString(), @"^ OR ", ""));
                sqlFilter.Append(" ) ");
            }

            sql.Append(Regex.Replace(sqlFilter.ToString(), @"^ And ", " WHERE "));

            var query = Connection.Session.CreateQuery(sql.ToString());

            query.SetMaxResults(command.Maximum);
            query.SetFirstResult((command.Page - 1) * command.Maximum);
            query.SetResultTransformer(new DistinctRootEntityResultTransformer());

            if (command.Category.Count > 0)
            {
                query.SetParameterList("CategoryId", command.Category);
            }

            if (command.Status.Count > 0)
            {
                query.SetParameterList("Status", command.Status);
            }

            if (!string.IsNullOrEmpty(command.PerName))
            {
                query.SetString("PerName", command.PerName);
            }

            if (!Equals(textKeyWord, null) && textKeyWord.Count > 0)
            {
                for (int i = 0; i < textKeyWord.Count(); i++)
                {
                    query.SetString(string.Format("texto{0}", i), string.Format("%{0}%", textKeyWord[i]));
                }
            }

            results = query.List <Category>();

            if (Equals(results, null) || results.Count.Equals(0))
            {
                Notification.AddNotification("Registro não encontrado!", TypeOfMessage.Error);
            }

            return(results);
        }