Пример #1
0
        private List <NotificationMessage> GetDataFromDb()
        {
            var ret = new List <NotificationMessage>();
            var paramsInitialCounter = _params.InitialCounter;
            var recsToTake           = RowsHelper.MaxRowsToGet(Count, ref paramsInitialCounter);

            _params.InitialCounter = paramsInitialCounter;
            if (recsToTake.Equals(0))
            {
                _counterReader.Save(_params.InitialCounter);
                return(ret);
            }
            _container.Clear();

            foreach (var r in _db[_params.Schema][_params.TableName].All().Take(recsToTake).OrderByDescending(_db[_params.Schema][_params.TableName][_params.OrderByColumnName]))
            {
                _container.Clear();
                GetColumnsByColumnsNames(r);

                if (_validator?.Validate(_container) == true)
                {
                    continue;
                }
                if (_aggregator?.AggregateIfPossible(ret, _container) != false)
                {
                    continue;
                }

                ret.Add(CreateMessage());
            }

            _counterReader.Save(_params.InitialCounter);

            ret.Reverse();
            return(ret);
        }