Ejemplo n.º 1
0
        public async Task ReceivedList()
        {
            var routeValue = _routeData.Values;
            var pageSize   = _request.Query["perPage"].ToInt32OrDefault(20);
            var pageIndex  = _request.Query["currentPage"].ToInt32OrDefault(1);
            var name       = _request.Query["name"].ToString();
            var group      = _request.Query["group"].ToString();
            var content    = _request.Query["content"].ToString();
            var status     = routeValue["status"]?.ToString() ?? nameof(StatusName.Succeeded);

            var queryDto = new MessageQueryDto
            {
                MessageType = MessageType.Subscribe,
                Group       = group,
                Name        = name,
                Content     = content,
                StatusName  = status,
                CurrentPage = pageIndex - 1,
                PageSize    = pageSize
            };

            var result = MonitoringApi.Messages(queryDto);

            await _response.WriteAsJsonAsync(result);
        }
Ejemplo n.º 2
0
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var tableName = queryDto.MessageType == MessageType.Publish ? _pubName : _recName;

            return(_capRepository.QueryMessages(tableName, queryDto.Name, queryDto.Group, queryDto.Content,
                                                queryDto.StatusName, queryDto.PageSize, queryDto.CurrentPage * queryDto.PageSize));
        }
Ejemplo n.º 3
0
        public PagedQueryResult <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var tableName = queryDto.MessageType == MessageType.Publish ? _pubName : _recName;

            var where = string.Empty;

            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                where += " and Lower(\"StatusName\") = Lower(@StatusName)";
            }

            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                where += " and Lower(\"Name\") = Lower(@Name)";
            }

            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                where += " and Lower(\"Group\") = Lower(@Group)";
            }

            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                where += " and \"Content\" ILike @Content";
            }

            var sqlQuery =
                $"select * from {tableName} where 1=1 {where} order by \"Added\" desc offset @Offset limit @Limit";

            using var connection = new NpgsqlConnection(_options.ConnectionString);

            var count = connection.ExecuteScalar <int>($"select count(1) from {tableName} where 1=1 {where}",
                                                       new NpgsqlParameter("@StatusName", queryDto.StatusName ?? string.Empty),
                                                       new NpgsqlParameter("@Group", queryDto.Group ?? string.Empty),
                                                       new NpgsqlParameter("@Name", queryDto.Name ?? string.Empty),
                                                       new NpgsqlParameter("@Content", $"%{queryDto.Content}%"));

            object[] sqlParams =
            {
                new NpgsqlParameter("@StatusName", queryDto.StatusName ?? string.Empty),
                new NpgsqlParameter("@Group",      queryDto.Group ?? string.Empty),
                new NpgsqlParameter("@Name",       queryDto.Name ?? string.Empty),
                new NpgsqlParameter("@Content",    $"%{queryDto.Content}%"),
                new NpgsqlParameter("@Offset",     queryDto.CurrentPage * queryDto.PageSize),
                new NpgsqlParameter("@Limit",      queryDto.PageSize)
            };

            var items = connection.ExecuteReader(sqlQuery, reader =>
            {
                var messages = new List <MessageDto>();

                while (reader.Read())
                {
                    var index = 0;
                    messages.Add(new MessageDto
                    {
                        Id         = reader.GetInt64(index++).ToString(),
                        Version    = reader.GetString(index++),
                        Name       = reader.GetString(index++),
                        Group      = queryDto.MessageType == MessageType.Subscribe ? reader.GetString(index++) : default,
Ejemplo n.º 4
0
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var tableName = queryDto.MessageType == MessageType.Publish ? _pubName : _recName;

            var where = string.Empty;
            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                where += " and statusname=@StatusName";
            }

            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                where += " and name=@Name";
            }

            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                where += " and [group]=@Group";
            }

            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                where += " and content like @Content";
            }

            var sqlQuery2008 =
                $@"select * from 
                (SELECT t.*, ROW_NUMBER() OVER(order by t.Added desc) AS row_number
                    from {tableName} as t
                    where 1=1 {where}) as tbl
                where tbl.row_number between @offset and @offset + @limit";

            var sqlQuery =
                $"select * from {tableName} where 1=1 {where} order by Added desc offset @Offset rows fetch next @Limit rows only";

            object[] sqlParams =
            {
                new SqlParameter("@StatusName", queryDto.StatusName ?? string.Empty),
                new SqlParameter("@Group",      queryDto.Group ?? string.Empty),
                new SqlParameter("@Name",       queryDto.Name ?? string.Empty),
                new SqlParameter("@Content",    $"%{queryDto.Content}%"),
                new SqlParameter("@Offset",     queryDto.CurrentPage * queryDto.PageSize),
                new SqlParameter("@Limit",      queryDto.PageSize)
            };

            using var connection = new SqlConnection(_options.ConnectionString);
            return(connection.ExecuteReader(_options.IsSqlServer2008 ? sqlQuery2008 : sqlQuery, reader =>
            {
                var messages = new List <MessageDto>();

                while (reader.Read())
                {
                    var index = 0;
                    messages.Add(new MessageDto
                    {
                        Id = reader.GetInt64(index++),
                        Version = reader.GetString(index++),
                        Name = reader.GetString(index++),
                        Group = queryDto.MessageType == MessageType.Subscribe ? reader.GetString(index++) : default,
Ejemplo n.º 5
0
        public PagedQueryResult <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var name = queryDto.MessageType == MessageType.Publish
                ? _options.PublishedCollection
                : _options.ReceivedCollection;
            var collection = _database.GetCollection <BsonDocument>(name);

            var builder = Builders <BsonDocument> .Filter;
            var filter  = builder.Empty;

            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                filter &= builder.Regex("StatusName", $"/{queryDto.StatusName}/i");
            }

            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                filter &= builder.Eq("Name", queryDto.Name);
            }

            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                filter &= builder.Eq("Group", queryDto.Group);
            }

            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                filter &= builder.Regex("Content", $".*{queryDto.Content}.*");
            }

            ProjectionDefinition <BsonDocument, MessageDto> projection =
                new FindExpressionProjectionDefinition <BsonDocument, MessageDto>(p => new MessageDto
            {
                Id         = p["_id"].ToString(),
                Version    = p["Version"].ToString(),
                Group      = p["Group"] == null ? null : p["Group"].ToString(),
                Name       = p["Name"].ToString(),
                Content    = p["Content"].ToString(),
                Added      = p["Added"].ToLocalTime(),
                ExpiresAt  = p["ExpiresAt"].ToNullableLocalTime(),
                Retries    = p["Retries"].ToInt32(),
                StatusName = p["StatusName"].ToString()
            });

            var items = collection
                        .Find(filter)
                        .SortByDescending(x => x["Added"])
                        .Skip(queryDto.PageSize * queryDto.CurrentPage)
                        .Limit(queryDto.PageSize)
                        .Project(projection)
                        .ToList();

            var count = collection.CountDocuments(filter);

            return(new PagedQueryResult <MessageDto> {
                Items = items, PageIndex = queryDto.CurrentPage, PageSize = queryDto.PageSize, Totals = count
            });
        }
Ejemplo n.º 6
0
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var tableName = queryDto.MessageType == MessageType.Publish ? _pubName : _recName;

            var where = string.Empty;
            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                where += " and StatusName=@StatusName";
            }

            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                where += " and Name=@Name";
            }

            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                where += " and `Group`=@Group";
            }

            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                where += " and Content like CONCAT('%',@Content,'%')";
            }

            var sqlQuery =
                $"select * from `{tableName}` where 1=1 {where} order by Added desc limit @Limit offset @Offset";

            object[] sqlParams =
            {
                new MySqlParameter("@StatusName", queryDto.StatusName ?? string.Empty),
                new MySqlParameter("@Group",      queryDto.Group ?? string.Empty),
                new MySqlParameter("@Name",       queryDto.Name ?? string.Empty),
                new MySqlParameter("@Content",    $"%{queryDto.Content}%"),
                new MySqlParameter("@Offset",     queryDto.CurrentPage * queryDto.PageSize),
                new MySqlParameter("@Limit",      queryDto.PageSize)
            };

            using var connection = new MySqlConnection(_options.ConnectionString);
            return(connection.ExecuteReader(sqlQuery, reader =>
            {
                var messages = new List <MessageDto>();

                while (reader.Read())
                {
                    var index = 0;
                    messages.Add(new MessageDto
                    {
                        Id = reader.GetInt64(index++),
                        Version = reader.GetString(index++),
                        Name = reader.GetString(index++),
                        Group = queryDto.MessageType == MessageType.Subscribe ? reader.GetString(index++) : default,
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var tableName = queryDto.MessageType == MessageType.Publish ? _pubName : _recName;

            var where = string.Empty;

            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                where += " AND `StatusName` = @StatusName";
            }
            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                where += " AND `Name` = @Name";
            }
            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                where += " AND `Group` = @Group";
            }
            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                where += " AND `Content` LIKE @Content";
            }
            var sqlQuery = $"SELECT * FROM `{tableName}` WHERE 1=1 {where} ORDER BY `Added` DESC LIMIT @Offset,@Limit";

            object[] sqlParams = new SqliteParameter[]
            {
                new SqliteParameter("@StatusName", queryDto.StatusName ?? string.Empty),
                new SqliteParameter("@Group", queryDto.Group ?? string.Empty),
                new SqliteParameter("@Name", queryDto.Name ?? string.Empty),
                new SqliteParameter("@Content", $"%{queryDto.Content}%"),
                new SqliteParameter("@Offset", queryDto.CurrentPage * queryDto.PageSize),
                new SqliteParameter("@Limit", queryDto.PageSize)
            };

            using var connection        = SqliteFactory.Instance.CreateConnection();
            connection.ConnectionString = _options.ConnectionString;
            return(connection.ExecuteReader(sqlQuery, reader =>
            {
                var messages = new List <MessageDto>();

                while (reader.Read())
                {
                    var index = 0;
                    messages.Add(new MessageDto
                    {
                        Id = reader.GetInt64(index++),
                        Version = reader.GetString(index++),
                        Name = reader.GetString(index++),
                        Group = queryDto.MessageType == MessageType.Subscribe ? reader.GetString(index++) : default,
Ejemplo n.º 8
0
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var tableName = queryDto.MessageType == MessageType.Publish ? _pubName : _recName;

            var where = string.Empty;

            var sqlParams = new List <object>();

            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                where += " AND LOWER(\"StatusName\") = LOWER(:StatusName)";
                sqlParams.Add(new OracleParameter(":StatusName", queryDto.StatusName ?? string.Empty));
            }
            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                where += " AND LOWER(\"Name\") = LOWER(:Name)";
                sqlParams.Add(new OracleParameter(":Name", queryDto.Name ?? string.Empty));
            }
            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                where += " AND LOWER(\"Group\") = LOWER(:Group1)";
                sqlParams.Add(new OracleParameter(":Group1", queryDto.Group ?? string.Empty));
            }
            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                where += " AND \"Content\" Like CONCAT('%',:Content,'%')";
                sqlParams.Add(new OracleParameter(":Content", $"%{queryDto.Content}%"));
            }
            sqlParams.Add(new OracleParameter(":Offset", queryDto.CurrentPage * queryDto.PageSize));
            sqlParams.Add(new OracleParameter(":OffsetEnd", queryDto.CurrentPage * queryDto.PageSize + queryDto.PageSize));
            var sqlQuery = $"SELECT * FROM (SELECT ROWNUM AS rowno,t.* FROM {tableName} t WHERE \"Id\">0 {where} ORDER BY \"Added\" DESC) alias WHERE alias.rowno BETWEEN :Offset AND :OffsetEnd";


            using var connection = new OracleConnection(_options.ConnectionString);
            return(connection.ExecuteReader(sqlQuery, reader =>
            {
                var messages = new List <MessageDto>();

                while (reader.Read())
                {
                    var index = 1;
                    messages.Add(new MessageDto
                    {
                        Id = reader.GetInt64(index++),
                        Version = reader.GetString(index++),
                        Name = reader.GetString(index++),
                        Group = queryDto.MessageType == MessageType.Subscribe ? reader.GetString(index++) : default,
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var tableName = queryDto.MessageType == MessageType.Publish ? _pubName : _recName;

            var where = string.Empty;
            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                where += " and statusname=@StatusName";
            }

            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                where += " and name=@Name";
            }

            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                where += " and [group]=@Group";
            }

            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                where += " and content like @Content";
            }

            var sqlQuery2008 =
                $@"select * from 
                (SELECT t.*, ROW_NUMBER() OVER(order by t.Added desc) AS row_number
                    from {tableName} as t
                    where 1=1 {where}) as tbl
                where tbl.row_number between @offset and @offset + @limit";

            var sqlQuery =
                $"select * from {tableName} where 1=1 {where} order by Added desc offset @Offset rows fetch next @Limit rows only";

            return(UseConnection(conn => conn.Query <MessageDto>(_options.IsSqlServer2008 ? sqlQuery2008 : sqlQuery, new
            {
                queryDto.StatusName,
                queryDto.Group,
                queryDto.Name,
                Content = "%" + queryDto.Content + "%",
                Offset = queryDto.CurrentPage * queryDto.PageSize,
                Limit = queryDto.PageSize
            }, DbTransaction).ToList()));
        }
Ejemplo n.º 10
0
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var tableName = queryDto.MessageType == MessageType.Publish ? "published" : "received";

            var where = string.Empty;

            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                if (string.Equals(queryDto.StatusName, StatusName.Processing,
                                  StringComparison.CurrentCultureIgnoreCase))
                {
                    where += " and \"StatusName\" in (N'Processing',N'Scheduled',N'Enqueued')";
                }
                else
                {
                    where += " and Lower(\"StatusName\") = Lower(@StatusName)";
                }
            }
            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                where += " and Lower(\"Name\") = Lower(@Name)";
            }
            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                where += " and Lower(\"Group\") = Lower(@Group)";
            }
            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                where += " and \"Content\" ILike '%@Content%'";
            }

            var sqlQuery =
                $"select * from \"{_options.Schema}\".\"{tableName}\" where 1=1 {where} order by \"Added\" desc offset @Offset limit @Limit";

            return(UseConnection(conn => conn.Query <MessageDto>(sqlQuery, new
            {
                queryDto.StatusName,
                queryDto.Group,
                queryDto.Name,
                queryDto.Content,
                Offset = queryDto.CurrentPage * queryDto.PageSize,
                Limit = queryDto.PageSize
            }).ToList()));
        }
Ejemplo n.º 11
0
        public PagedQueryResult <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var name = queryDto.MessageType == MessageType.Publish
                ? _options.PublishedCollection
                : _options.ReceivedCollection;
            var collection = _database.GetCollection <MessageDto>(name);

            var builder = Builders <MessageDto> .Filter;
            var filter  = builder.Empty;

            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                filter &= builder.Where(x => x.StatusName.ToLower() == queryDto.StatusName);
            }

            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                filter &= builder.Eq(x => x.Name, queryDto.Name);
            }

            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                filter &= builder.Eq(x => x.Group, queryDto.Group);
            }

            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                filter &= builder.Regex(x => x.Content, ".*" + queryDto.Content + ".*");
            }

            var items = collection
                        .Find(filter)
                        .SortByDescending(x => x.Added)
                        .Skip(queryDto.PageSize * queryDto.CurrentPage)
                        .Limit(queryDto.PageSize)
                        .ToList();

            var count = collection.CountDocuments(filter);

            return(new PagedQueryResult <MessageDto> {
                Items = items, PageIndex = queryDto.CurrentPage, PageSize = queryDto.PageSize, Totals = count
            });
        }
Ejemplo n.º 12
0
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var tableName = queryDto.MessageType == MessageType.Publish ? "published" : "received";

            var where = string.Empty;
            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                if (string.Equals(queryDto.StatusName, StatusName.Processing,
                                  StringComparison.CurrentCultureIgnoreCase))
                {
                    where += " and StatusName in (N'Processing',N'Scheduled',N'Enqueued')";
                }
                else
                {
                    where += " and StatusName=@StatusName";
                }
            }
            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                where += " and Name=@Name";
            }
            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                where += " and Group=@Group";
            }
            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                where += " and Content like '%@Content%'";
            }

            var sqlQuery =
                $"select * from `{_prefix}.{tableName}` where 1=1 {where} order by Added desc limit @Limit offset @Offset";

            return(UseConnection(conn => conn.Query <MessageDto>(sqlQuery, new
            {
                queryDto.StatusName,
                queryDto.Group,
                queryDto.Name,
                queryDto.Content,
                Offset = queryDto.CurrentPage * queryDto.PageSize,
                Limit = queryDto.PageSize
            }).ToList()));
        }
Ejemplo n.º 13
0
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            queryDto.StatusName = StatusName.Standardized(queryDto.StatusName);

            var name = queryDto.MessageType == MessageType.Publish
                ? _options.PublishedCollection
                : _options.ReceivedCollection;
            var collection = _database.GetCollection <MessageDto>(name);

            var builder = Builders <MessageDto> .Filter;
            var filter  = builder.Empty;

            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                filter = filter & builder.Eq(x => x.StatusName, queryDto.StatusName);
            }

            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                filter = filter & builder.Eq(x => x.Name, queryDto.Name);
            }

            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                filter = filter & builder.Eq(x => x.Group, queryDto.Group);
            }

            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                filter = filter & builder.Regex(x => x.Content, ".*" + queryDto.Content + ".*");
            }

            var result = collection
                         .Find(filter)
                         .SortByDescending(x => x.Added)
                         .Skip(queryDto.PageSize * queryDto.CurrentPage)
                         .Limit(queryDto.PageSize)
                         .ToList();

            return(result);
        }
Ejemplo n.º 14
0
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var tableName = queryDto.MessageType == MessageType.Publish ? _pubName : _recName;

            var where = string.Empty;

            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                where += " and Lower(\"StatusName\") = Lower(@StatusName)";
            }

            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                where += " and Lower(\"Name\") = Lower(@Name)";
            }

            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                where += " and Lower(\"Group\") = Lower(@Group)";
            }

            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                where += " and \"Content\" ILike concat('%',@Content,'%')";
            }

            var sqlQuery =
                $"select * from {tableName} where 1=1 {where} order by \"Added\" desc offset @Offset limit @Limit";

            return(UseConnection(conn => conn.Query <MessageDto>(sqlQuery, new
            {
                queryDto.StatusName,
                queryDto.Group,
                queryDto.Name,
                queryDto.Content,
                Offset = queryDto.CurrentPage * queryDto.PageSize,
                Limit = queryDto.PageSize
            }, transaction: DbTransaction).ToList()));
        }
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var tableName = queryDto.MessageType == MessageType.Publish ? _pubName : _recName;

            var where = string.Empty;
            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                where += " and StatusName=@StatusName";
            }

            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                where += " and Name=@Name";
            }

            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                where += " and `Group`=@Group";
            }

            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                where += " and Content like CONCAT('%',@Content,'%')";
            }

            var sqlQuery =
                $"select * from `{tableName}` where 1=1 {where} order by Added desc limit @Limit offset @Offset";

            return(UseConnection(conn => conn.Query <MessageDto>(sqlQuery, new
            {
                queryDto.StatusName,
                queryDto.Group,
                queryDto.Name,
                queryDto.Content,
                Offset = queryDto.CurrentPage * queryDto.PageSize,
                Limit = queryDto.PageSize
            }).ToList()));
        }
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var tableName = queryDto.MessageType == MessageType.Publish ? _published : _received;

            var where = string.Empty;
            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                where += " and `StatusName` = @StatusName";
            }

            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                where += " and `Name` = @Name";
            }

            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                where += " and `Group` = @Group";
            }

            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                where += " and `Content` like @Content";
            }

            var sqlQuery =
                $"select * from `{tableName}` where 1=1 {where} order by `Added` desc limit @Offset,@Limit";

            return(UseConnection(conn => conn.Query <MessageDto>(sqlQuery, new
            {
                queryDto.StatusName,
                queryDto.Group,
                queryDto.Name,
                Content = $"%{queryDto.Content}%",//参数化Like查询的一个错误
                Offset = queryDto.CurrentPage * queryDto.PageSize,
                Limit = queryDto.PageSize
            }).ToList()));
        }
Ejemplo n.º 17
0
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var tableName = queryDto.MessageType == MessageType.Publish ? "Published" : "Received";

            var where = string.Empty;
            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                where += " and statusname=@StatusName";
            }

            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                where += " and name=@Name";
            }

            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                where += " and group=@Group";
            }

            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                where += " and content like '%@Content%'";
            }

            var sqlQuery =
                $"select * from [{_options.Schema}].{tableName} where 1=1 {where} order by Added desc offset @Offset rows fetch next @Limit rows only";

            return(UseConnection(conn => conn.Query <MessageDto>(sqlQuery, new
            {
                queryDto.StatusName,
                queryDto.Group,
                queryDto.Name,
                queryDto.Content,
                Offset = queryDto.CurrentPage * queryDto.PageSize,
                Limit = queryDto.PageSize
            }).ToList()));
        }
Ejemplo n.º 18
0
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            if (queryDto.MessageType == MessageType.Publish)
            {
                var expression = LiteDBStorage.PublishedMessages.FindAll();
                if (!string.IsNullOrEmpty(queryDto.StatusName))
                {
                    expression = expression.Where(x => x.StatusName.ToString().Equals(queryDto.StatusName, StringComparison.InvariantCultureIgnoreCase));
                }

                if (!string.IsNullOrEmpty(queryDto.Name))
                {
                    expression = expression.Where(x => x.Name.Equals(queryDto.Name, StringComparison.InvariantCultureIgnoreCase));
                }

                if (!string.IsNullOrEmpty(queryDto.Content))
                {
                    expression = expression.Where(x => x.Content.Contains(queryDto.Content));
                }

                var offset = queryDto.CurrentPage * queryDto.PageSize;
                var size   = queryDto.PageSize;

                return(expression.Skip(offset).Take(size).Select(x => new MessageDto()
                {
                    Added = x.Added,
                    Version = "N/A",
                    Content = x.Content,
                    ExpiresAt = x.ExpiresAt,
                    Id = long.Parse(x.Id),
                    Name = x.Name,
                    Retries = x.Retries,
                    StatusName = x.StatusName.ToString()
                }).ToList());
            }
            else
            {
                var expression = LiteDBStorage.ReceivedMessages.FindAll();

                if (!string.IsNullOrEmpty(queryDto.StatusName))
                {
                    expression = expression.Where(x => x.StatusName.ToString().Equals(queryDto.StatusName, StringComparison.InvariantCultureIgnoreCase));
                }

                if (!string.IsNullOrEmpty(queryDto.Name))
                {
                    expression = expression.Where(x => x.Name.Equals(queryDto.Name, StringComparison.InvariantCultureIgnoreCase));
                }

                if (!string.IsNullOrEmpty(queryDto.Group))
                {
                    expression = expression.Where(x => x.Group.Equals(queryDto.Group, StringComparison.InvariantCultureIgnoreCase));
                }

                if (!string.IsNullOrEmpty(queryDto.Content))
                {
                    expression = expression.Where(x => x.Content.Contains(queryDto.Content));
                }

                var offset = queryDto.CurrentPage * queryDto.PageSize;
                var size   = queryDto.PageSize;

                return(expression.Skip(offset).Take(size).Select(x => new MessageDto()
                {
                    Added = x.Added,
                    Group = x.Group,
                    Version = "N/A",
                    Content = x.Content,
                    ExpiresAt = x.ExpiresAt,
                    Id = long.Parse(x.Id),
                    Name = x.Name,
                    Retries = x.Retries,
                    StatusName = x.StatusName.ToString()
                }).ToList());
            }
        }
Ejemplo n.º 19
0
        protected override void Execute()
        {
            WriteLiteral("\r\n");



#line 9 "..\..\PublishedPage.cshtml"

            Layout = new LayoutPage(Strings.PublishedMessagesPage_Title);

            int from, perPage;

            int.TryParse(Query("from"), out from);
            int.TryParse(Query("count"), out perPage);
            string name    = Query("name");
            string content = Query("content");

            var monitor  = Storage.GetMonitoringApi();
            var pager    = new Pager(from, perPage, GetTotal(monitor));
            var queryDto = new MessageQueryDto
            {
                MessageType = MessageType.Publish,
                Name        = name,
                Content     = content,
                StatusName  = StatusName,
                CurrentPage = pager.CurrentPage - 1,
                PageSize    = pager.RecordsPerPage
            };
            var succeededMessages = monitor.Messages(queryDto);



#line default
#line hidden
            WriteLiteral("\r\n<div class=\"row\">\r\n    <div class=\"col-md-3\">\r\n        ");



#line 35 "..\..\PublishedPage.cshtml"
            Write(Html.MessagesSidebar(MessageType.Publish));


#line default
#line hidden
            WriteLiteral("\r\n    </div>\r\n    <div class=\"col-md-9\">\r\n        <h1 class=\"page-header\">");



#line 38 "..\..\PublishedPage.cshtml"
            Write(Strings.PublishedPage_Title);


#line default
#line hidden
            WriteLiteral("</h1>\r\n\r\n");



#line 40 "..\..\PublishedPage.cshtml"
            if (succeededMessages.Count == 0)
            {
#line default
#line hidden
                WriteLiteral("        <div class=\"alert alert-info\">\r\n            ");



#line 43 "..\..\PublishedPage.cshtml"
                Write(Strings.MessagesPage_NoMessages);


#line default
#line hidden
                WriteLiteral("\r\n        </div>\r\n");



#line 45 "..\..\PublishedPage.cshtml"
            }
            else
            {
#line default
#line hidden
                WriteLiteral("        <div class=\"js-jobs-list\">\r\n            <div class=\"btn-toolbar btn-toolb" +
                             "ar-top\">\r\n                <form class=\"row\">\r\n                    <div class=\"c" +
                             "ol-md-3\">\r\n                        <input type=\"text\" class=\"form-control\" name=" +
                             "\"name\" value=\"");



#line 52 "..\..\PublishedPage.cshtml"
                Write(Query(" name"));


#line default
#line hidden
                WriteLiteral("\" placeholder=\"");



#line 52 "..\..\PublishedPage.cshtml"
                Write(Strings.MessagesPage_Query_MessageName);


#line default
#line hidden
                WriteLiteral("\" />\r\n                    </div>\r\n                    <div class=\"col-md-5\">\r\n  " +
                             "                      <div class=\"input-group\">\r\n                            <in" +
                             "put type=\"text\" class=\"form-control\" name=\"content\" value=\"");



#line 56 "..\..\PublishedPage.cshtml"
                Write(Query(" content"));


#line default
#line hidden
                WriteLiteral("\" placeholder=\"");



#line 56 "..\..\PublishedPage.cshtml"
                Write(Strings.MessagesPage_Query_MessageBody);


#line default
#line hidden
                WriteLiteral("\" />\r\n                            <span class=\"input-group-btn\">\r\n               " +
                             "                 <button class=\"btn btn-info\">");



#line 58 "..\..\PublishedPage.cshtml"
                Write(Strings.MessagesPage_Query_Button);


#line default
#line hidden
                WriteLiteral(@"</button>
                            </span>
                        </div>
                    </div>
                </form>
            </div>
            <div class=""btn-toolbar btn-toolbar-top"">
                <button class=""js-jobs-list-command btn btn-sm btn-primary""
                        data-url=""");



#line 66 "..\..\PublishedPage.cshtml"
                Write(Url.To("/published/requeue"));


#line default
#line hidden
                WriteLiteral("\"\r\n                data-loading-text=\"");



#line 67 "..\..\PublishedPage.cshtml"
                Write(Strings.Common_Enqueueing);


#line default
#line hidden
                WriteLiteral("\"\r\n                disabled=\"disabled\">\r\n                <span class=\"glyphicon g" +
                             "lyphicon-repeat\"></span>\r\n                ");



#line 70 "..\..\PublishedPage.cshtml"
                Write(Strings.Common_RequeueMessages);


#line default
#line hidden
                WriteLiteral("\r\n                </button>\r\n\r\n                ");



#line 73 "..\..\PublishedPage.cshtml"
                Write(Html.PerPageSelector(pager));


#line default
#line hidden
                WriteLiteral(@"
            </div>

            <div class=""table-responsive"">
                <table class=""table"">
                    <thead>
                        <tr>
                            <th style=""width:60px;"">
                                <input type=""checkbox"" class=""js-jobs-list-select-all"" />
                            </th>
                            <th style=""width:22%;"">");



#line 83 "..\..\PublishedPage.cshtml"
                Write(Strings.Common_Id);


#line default
#line hidden
                WriteLiteral("</th>\r\n                            <th>");

#line 84 "..\..\PublishedPage.cshtml"
                Write(Strings.Common_Version);


#line default
#line hidden
                WriteLiteral("</th>\r\n                            <th>");

#line 84 "..\..\PublishedPage.cshtml"
                Write(Strings.MessagesPage_Table_Name);


#line default
#line hidden
                WriteLiteral("</th>\r\n                            <th class=\"min-width\">");



#line 85 "..\..\PublishedPage.cshtml"
                Write(Strings.MessagesPage_Table_Retries);


#line default
#line hidden
                WriteLiteral("</th>\r\n");



#line 86 "..\..\PublishedPage.cshtml"
                if (string.Equals(StatusName, "Processing", StringComparison.CurrentCultureIgnoreCase))
                {
#line default
#line hidden
                    WriteLiteral("                            <th>");



#line 88 "..\..\PublishedPage.cshtml"
                    Write(Strings.MessagesPage_Table_State);


#line default
#line hidden
                    WriteLiteral("</th>\r\n");



#line 89 "..\..\PublishedPage.cshtml"
                }


#line default
#line hidden
                WriteLiteral("                            <th class=\"align-right\">");



#line 90 "..\..\PublishedPage.cshtml"
                Write(Strings.MessagesPage_Table_ExpiresAt);


#line default
#line hidden
                WriteLiteral("</th>\r\n                        </tr>\r\n                    </thead>\r\n             " +
                             "       <tbody>\r\n");



#line 94 "..\..\PublishedPage.cshtml"
                foreach (var message in succeededMessages)
                {
#line default
#line hidden
                    WriteLiteral("                        <tr class=\"js-jobs-list-row hover\">\r\n                    " +
                                 "        <td>\r\n                                <input type=\"checkbox\" class=\"js-j" +
                                 "obs-list-checkbox\" name=\"messages[]\" value=\"");



#line 98 "..\..\PublishedPage.cshtml"
                    Write(message.Id);


#line default
#line hidden
                    WriteLiteral("\" />\r\n                            </td>\r\n                            <td class=\"w" +
                                 "ord-break\">\r\n                                <a href=\"javascript:;\" data-url=\'");



#line 101 "..\..\PublishedPage.cshtml"
                    Write(Url.To("/published/message/") + message.Id);


#line default
#line hidden
                    WriteLiteral("\' class=\"openModal\">#");



#line 101 "..\..\PublishedPage.cshtml"
                    Write(message.Id);


#line default
#line hidden
                    WriteLiteral("</a>\r\n                            </td>\r\n                            <td>\r\n      " +
                                 "                          ");


#line 102 "..\..\PublishedPage.cshtml"
                    Write(message.Version);


#line default
#line hidden
                    WriteLiteral("</a>\r\n                            </td>\r\n                            <td>\r\n      " +
                                 "                          ");
#line 104 "..\..\PublishedPage.cshtml"
                    Write(message.Name);


#line default
#line hidden
                    WriteLiteral("\r\n                            </td>\r\n                            <td>\r\n          " +
                                 "                      ");



#line 107 "..\..\PublishedPage.cshtml"
                    Write(message.Retries);


#line default
#line hidden
                    WriteLiteral("\r\n                            </td>\r\n");



#line 109 "..\..\PublishedPage.cshtml"
                    if (string.Equals(StatusName, "Processing", StringComparison.CurrentCultureIgnoreCase))
                    {
#line default
#line hidden
                        WriteLiteral("                            <td>\r\n                                ");



#line 112 "..\..\PublishedPage.cshtml"
                        Write(message.StatusName);


#line default
#line hidden
                        WriteLiteral("\r\n                            </td>\r\n");



#line 114 "..\..\PublishedPage.cshtml"
                    }


#line default
#line hidden
                    WriteLiteral("                            <td class=\"align-right\">\r\n");



#line 116 "..\..\PublishedPage.cshtml"
                    if (message.ExpiresAt.HasValue)
                    {
#line default
#line hidden

#line 118 "..\..\PublishedPage.cshtml"
                        Write(Html.RelativeTime(message.ExpiresAt.Value));


#line default
#line hidden

#line 118 "..\..\PublishedPage.cshtml"
                    }


#line default
#line hidden
                    WriteLiteral("                            </td>\r\n\r\n                        </tr>\r\n");



#line 123 "..\..\PublishedPage.cshtml"
                }


#line default
#line hidden
                WriteLiteral("                    </tbody>\r\n                </table>\r\n            </div>\r\n     " +
                             "       ");



#line 127 "..\..\PublishedPage.cshtml"
                Write(Html.Paginator(pager));


#line default
#line hidden
                WriteLiteral("\r\n        </div>\r\n");



#line 129 "..\..\PublishedPage.cshtml"



#line default
#line hidden
                WriteLiteral(@"        <div>
            <div class=""modal fade"" tabindex=""-1"" role=""dialog"">
                <div class=""modal-dialog"" role=""document"">
                    <div class=""modal-content"">
                        <div class=""modal-header"">
                            <button type=""button"" class=""close"" data-dismiss=""modal"" aria-label=""Close""><span aria-hidden=""true"">&times;</span></button>
                            <h4 class=""modal-title"">Message Content</h4>
                        </div>
                        <div id=""jsonContent"" style=""max-height:500px;overflow-y:auto;"" class=""modal-body"">
                        </div>
                        <div class=""modal-footer"">
                            <button type=""button"" class=""btn btn-sm btn-primary"" id=""formatBtn"" onclick="""">");



#line 141 "..\..\PublishedPage.cshtml"
                Write(Strings.MessagesPage_Modal_Format);


#line default
#line hidden
                WriteLiteral("</button>\r\n                            <button type=\"button\" class=\"btn btn-sm bt" +
                             "n-primary\" id=\"rawBtn\" onclick=\"\">");



#line 142 "..\..\PublishedPage.cshtml"
                Write(Strings.MessagesPage_Modal_Raw);


#line default
#line hidden
                WriteLiteral("</button>\r\n                            <button type=\"button\" class=\"btn btn-sm bt" +
                             "n-primary\" id=\"expandBtn\" onclick=\"\">");



#line 143 "..\..\PublishedPage.cshtml"
                Write(Strings.MessagesPage_Modal_Expand);


#line default
#line hidden
                WriteLiteral("</button>\r\n                            <button type=\"button\" class=\"btn btn-sm bt" +
                             "n-primary\" id=\"collapseBtn\" onclick=\"\">");



#line 144 "..\..\PublishedPage.cshtml"
                Write(Strings.MessagesPage_Model_Collaspse);


#line default
#line hidden
                WriteLiteral("</button>\r\n                        </div>\r\n                    </div><!-- /.modal" +
                             "-content -->\r\n                </div><!-- /.modal-dialog -->\r\n            </div><" +
                             "!-- /.modal -->\r\n        </div>\r\n");



#line 150 "..\..\PublishedPage.cshtml"
            }


#line default
#line hidden
            WriteLiteral("    </div>\r\n</div>");
        }
Ejemplo n.º 20
0
 public IList <MessageDto> Messages(MessageQueryDto queryDto)
 {
     if (queryDto.MessageType == MessageType.Publish)
     {
         return(_storage.UseDbContext(dbContext =>
         {
             IQueryable <Models.PublishedMessage> queryable = dbContext.Set <Models.PublishedMessage>();
             if (!string.IsNullOrEmpty(queryDto.StatusName))
             {
                 queryable = queryable.Where(t => string.Equals(t.StatusName, queryDto.StatusName, StringComparison.InvariantCultureIgnoreCase));
             }
             if (!string.IsNullOrEmpty(queryDto.Name))
             {
                 queryable = queryable.Where(t => t.Name == queryDto.Name);
             }
             if (!string.IsNullOrEmpty(queryDto.Content))
             {
                 queryable = queryable.Where(t => t.Name == queryDto.Content);
             }
             return queryable.OrderBy(t => t.Added).Skip(queryDto.CurrentPage * queryDto.PageSize).Take(queryDto.PageSize).Select(t => new MessageDto()
             {
                 Name = t.Name,
                 Content = t.Content,
                 Added = t.Added,
                 StatusName = t.StatusName,
                 Retries = t.Retries,
                 Id = t.Id,
                 ExpiresAt = t.ExpiresAt,
                 Version = _options.Version
                           // Version = dbContext.Entry(t).Property("Version").CurrentValue?.ToString()
             }).ToList();
         }));
     }
     else
     {
         return(_storage.UseDbContext(dbContext =>
         {
             IQueryable <Models.ReceivedMessage> queryable = dbContext.Set <Models.ReceivedMessage>();
             if (!string.IsNullOrEmpty(queryDto.StatusName))
             {
                 queryable = queryable.Where(t => string.Equals(t.StatusName, queryDto.StatusName, StringComparison.InvariantCultureIgnoreCase));
             }
             if (!string.IsNullOrEmpty(queryDto.Name))
             {
                 queryable = queryable.Where(t => t.Name == queryDto.Name);
             }
             if (!string.IsNullOrEmpty(queryDto.Group))
             {
                 queryable = queryable.Where(t => t.Group == queryDto.Group);
             }
             if (!string.IsNullOrEmpty(queryDto.Content))
             {
                 queryable = queryable.Where(t => t.Name == queryDto.Content);
             }
             return queryable.OrderBy(t => t.Added).Skip(queryDto.CurrentPage * queryDto.PageSize).Take(queryDto.PageSize).Select(t => new MessageDto()
             {
                 Name = t.Name,
                 Group = t.Group,
                 Content = t.Content,
                 Added = t.Added,
                 StatusName = t.StatusName,
                 Retries = t.Retries,
                 Id = t.Id,
                 ExpiresAt = t.ExpiresAt,
                 Version = _options.Version
                           // Version = dbContext.Entry(t).Property("Version").CurrentValue?.ToString()
             }).ToList();
         }));
     }
 }
Ejemplo n.º 21
0
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var tableName = queryDto.MessageType == MessageType.Publish ? _pubName : _recName;

            // The order of sqlParam items must same to the parameter in SQL query string
            var sqlParams = new List <OracleParameter>();

            var where = string.Empty;
            if (!string.IsNullOrEmpty(queryDto.StatusName))
            {
                where += " AND \"StatusName\" = :P_StatusName";
                // The 'Succeeded' and 'succeeded' it not equal in oracle
                sqlParams.Add(new OracleParameter(":P_StatusName", ToCamelCase(queryDto.StatusName) ?? string.Empty));
            }

            if (!string.IsNullOrEmpty(queryDto.Name))
            {
                where += " AND \"Name\" = :P_Name";
                sqlParams.Add(new OracleParameter(":P_Name", queryDto.Name ?? string.Empty));
            }

            if (!string.IsNullOrEmpty(queryDto.Group))
            {
                where += " AND \"Group\" = :P_Group";
                sqlParams.Add(new OracleParameter(":P_Group", queryDto.Group ?? string.Empty));
            }

            if (!string.IsNullOrEmpty(queryDto.Content))
            {
                where += " AND \"Content\" LIKE CONCAT('%',:P_Content,'%')";
                sqlParams.Add(new OracleParameter(":P_Content", $"%{queryDto.Content}%"));
            }

            var sqlQuery = $@"
                 SELECT * FROM
                 (
		                SELECT t1.*, ROW_NUMBER() OVER(ORDER BY ""Added"" DESC)
                    AS irowid FROM(
                            SELECT * FROM ""{tableName}""
                            WHERE 1=1 {where}
                        ) t1
                ) t2
                WHERE t2.irowid > :RowStart AND t2.irowid <= :P_RowEnd";

            sqlParams.AddRange(new OracleParameter[]
            {
                new OracleParameter(":P_RowStart", (queryDto.CurrentPage) * queryDto.PageSize),
                new OracleParameter(":P_RowEnd", ((queryDto.CurrentPage) * queryDto.PageSize) + queryDto.PageSize)
            });

            using var connection = new OracleConnection(_options.ConnectionString);
            return(connection.ExecuteReader(sqlQuery, reader =>
            {
                var messages = new List <MessageDto>();

                while (reader.Read())
                {
                    var index = 0;
                    messages.Add(new MessageDto
                    {
                        Id = reader.GetInt64(index++),
                        Version = reader.GetString(index++),
                        Name = reader.GetString(index++),
                        Group = queryDto.MessageType == MessageType.Subscribe ? reader.GetString(index++) : default,
Ejemplo n.º 22
0
        public IList <MessageDto> Messages(MessageQueryDto queryDto)
        {
            var connection = GetConnection();

            if (queryDto.MessageType == MessageType.Publish)
            {
                var expression = connection.PublishedMessages.Where(x => true);

                if (!string.IsNullOrEmpty(queryDto.StatusName))
                {
                    expression = expression.Where(x => x.StatusName == queryDto.StatusName);
                }

                if (!string.IsNullOrEmpty(queryDto.Name))
                {
                    expression = expression.Where(x => x.Name == queryDto.Name);
                }

                if (!string.IsNullOrEmpty(queryDto.Content))
                {
                    expression = expression.Where(x => x.Content.Contains(queryDto.Content));
                }

                var offset = queryDto.CurrentPage * queryDto.PageSize;
                var size   = queryDto.PageSize;

                return(expression.Skip(offset).Take(size).Select(x => new MessageDto()
                {
                    Added = x.Added,
                    Content = x.Content,
                    ExpiresAt = x.ExpiresAt,
                    Id = x.Id,
                    Name = x.Name,
                    Retries = x.Retries,
                    StatusName = x.StatusName
                }).ToList());
            }
            else
            {
                var expression = connection.ReceivedMessages.Where(x => true);

                if (!string.IsNullOrEmpty(queryDto.StatusName))
                {
                    expression = expression.Where(x => x.StatusName == queryDto.StatusName);
                }

                if (!string.IsNullOrEmpty(queryDto.Name))
                {
                    expression = expression.Where(x => x.Name == queryDto.Name);
                }

                if (!string.IsNullOrEmpty(queryDto.Group))
                {
                    expression = expression.Where(x => x.Group == queryDto.Name);
                }

                if (!string.IsNullOrEmpty(queryDto.Content))
                {
                    expression = expression.Where(x => x.Content.Contains(queryDto.Content));
                }

                var offset = queryDto.CurrentPage * queryDto.PageSize;
                var size   = queryDto.PageSize;

                return(expression.Skip(offset).Take(size).Select(x => new MessageDto()
                {
                    Added = x.Added,
                    Content = x.Content,
                    ExpiresAt = x.ExpiresAt,
                    Id = x.Id,
                    Name = x.Name,
                    Retries = x.Retries,
                    StatusName = x.StatusName
                }).ToList());
            }
        }
Ejemplo n.º 23
0
        public PagedQueryResult <MessageDto> Messages(MessageQueryDto queryDto)
        {
            if (queryDto.MessageType == MessageType.Publish)
            {
                var expression = InMemoryStorage.PublishedMessages.Values.Where(x => true);

                if (!string.IsNullOrEmpty(queryDto.StatusName))
                {
                    expression = expression.Where(x => x.StatusName.ToString().Equals(queryDto.StatusName, StringComparison.InvariantCultureIgnoreCase));
                }

                if (!string.IsNullOrEmpty(queryDto.Name))
                {
                    expression = expression.Where(x => x.Name.Equals(queryDto.Name, StringComparison.InvariantCultureIgnoreCase));
                }

                if (!string.IsNullOrEmpty(queryDto.Content))
                {
                    expression = expression.Where(x => x.Content.Contains(queryDto.Content));
                }

                var offset = queryDto.CurrentPage * queryDto.PageSize;
                var size   = queryDto.PageSize;

                var allItems = expression.Select(x => new MessageDto()
                {
                    Added      = x.Added,
                    Version    = "N/A",
                    Content    = x.Content,
                    ExpiresAt  = x.ExpiresAt,
                    Id         = x.DbId,
                    Name       = x.Name,
                    Retries    = x.Retries,
                    StatusName = x.StatusName.ToString()
                });

                return(new PagedQueryResult <MessageDto>()
                {
                    Items = allItems.Skip(offset).Take(size).ToList(),
                    PageIndex = queryDto.CurrentPage,
                    PageSize = queryDto.PageSize,
                    Totals = allItems.Count()
                });
            }
            else
            {
                var expression = InMemoryStorage.ReceivedMessages.Values.Where(x => true);

                if (!string.IsNullOrEmpty(queryDto.StatusName))
                {
                    expression = expression.Where(x => x.StatusName.ToString().Equals(queryDto.StatusName, StringComparison.InvariantCultureIgnoreCase));
                }

                if (!string.IsNullOrEmpty(queryDto.Name))
                {
                    expression = expression.Where(x => x.Name.Equals(queryDto.Name, StringComparison.InvariantCultureIgnoreCase));
                }

                if (!string.IsNullOrEmpty(queryDto.Group))
                {
                    expression = expression.Where(x => x.Group.Equals(queryDto.Group, StringComparison.InvariantCultureIgnoreCase));
                }

                if (!string.IsNullOrEmpty(queryDto.Content))
                {
                    expression = expression.Where(x => x.Content.Contains(queryDto.Content));
                }

                var offset = queryDto.CurrentPage * queryDto.PageSize;
                var size   = queryDto.PageSize;

                var allItems = expression.Select(x => new MessageDto()
                {
                    Added      = x.Added,
                    Group      = x.Group,
                    Version    = "N/A",
                    Content    = x.Content,
                    ExpiresAt  = x.ExpiresAt,
                    Id         = x.DbId,
                    Name       = x.Name,
                    Retries    = x.Retries,
                    StatusName = x.StatusName.ToString()
                });

                return(new PagedQueryResult <MessageDto>()
                {
                    Items = allItems.Skip(offset).Take(size).ToList(),
                    PageIndex = queryDto.CurrentPage,
                    PageSize = queryDto.PageSize,
                    Totals = allItems.Count()
                });
            }
        }