Example #1
0
        public async Task <Pager <LogDto> > GetLogPager(LogFilterDto filter)
        {
            var sortby = "Logged";

            Expression <Func <LogEntity, bool> > where = x =>
                                                         (true) &&
                                                         (string.IsNullOrEmpty(filter.Search) || x.Message.ToLower().Contains(filter.Search.ToLower())) &&
                                                         (!string.IsNullOrEmpty(x.UserName))
            ;

            var tuple = await _logManager.Pager <LogEntity>(where, sortby, filter.Start, filter.Length);

            var list  = tuple.Item1;
            var count = tuple.Item2;

            if (count == 0)
            {
                return(new Pager <LogDto>(new List <LogDto>(), 0, filter.Start, filter.Length));
            }

            var page = (filter.Start + filter.Length) / filter.Length;

            var result = _mapper.Map <List <LogDto> >(list);

            return(new Pager <LogDto>(result, count, page, filter.Start));
        }
Example #2
0
        public async Task <SelectPaginatedResponse <LogEntity> > SelectPaginated(LogFilterDto filter, int pageNumber, int pageSize)
        {
            var query = "";

            try
            {
                query =
                    $@"SELECT *
	                FROM public.""Log""
	                WHERE ""Ip"" like '%{filter.Ip}%'
                    AND ""UserAgent"" like '%{filter.UserAgent}%'";

                if (filter.Hour != null)
                {
                    query += $@" AND extract(hour from ""Date"") = {filter.Hour}";
                }

                if (filter.Order != null)
                {
                    query += $@" ORDER BY ""{filter.Order}"" {filter.Direction}";
                }

                query += $@" OFFSET {(pageNumber -1) * pageSize} ROWS
	                FETCH NEXT {pageSize} ROWS ONLY"    ;

                var countQuery =
                    $@"SELECT count(*)
	                FROM public.""Log""
	                WHERE ""Ip"" like '%{filter.Ip}%'
                    AND ""UserAgent"" like '%{filter.UserAgent}%'";

                if (filter.Hour != null)
                {
                    countQuery += $@" AND extract(hour from ""Date"") = {filter.Hour}";
                }


                var result = new SelectPaginatedResponse <LogEntity>
                {
                    Obj   = await _unitOfWork.DbConnection.QueryAsync <LogEntity>(query),
                    Count = (await _unitOfWork.DbConnection.QueryAsync <int>(countQuery)).First()
                };

                return(result);
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Pagination failed for query = {$Query}", query);
                throw;
            }
        }
Example #3
0
        public async Task SelectPaginated()
        {
            // Arrange
            var logFilterDto = new LogFilterDto();

            _logService.Setup(a => a.SelectPaginated(logFilterDto, 0, 0))
            .ReturnsAsync(new SelectPaginatedResponse <LogEntity>());

            // Act
            var controller = new LogController(_logger.Object, _logService.Object);
            var result     = await controller.SelectPaginated(logFilterDto, 0, 0);

            // Assert
            Assert.IsType <OkObjectResult>(result.Result);
        }
Example #4
0
        public async Task SelectPaginated()
        {
            // Arrange
            var logFilter = new LogFilterDto();

            _logRepository.Setup(a => a.SelectPaginated(logFilter, 0, 0))
            .ReturnsAsync(new SelectPaginatedResponse <LogEntity>());

            // Act
            var service = new LogService(_logger.Object, _logRepository.Object);
            var result  = await service.SelectPaginated(logFilter, 0, 0);

            // Assert
            Assert.NotNull(result);
        }
Example #5
0
        public async Task <ActionResult <IEnumerable <LogEntity> > > SelectPaginated([FromBody] LogFilterDto filter, int page, int pageSize)
        {
            try
            {
                var result = await _logService.SelectPaginated(filter, page, pageSize);

                return(Ok(result));
            }
            catch (Exception e)
            {
                _logger.LogError(e,
                                 "Log pagination failed for filters={@Filter}, page={$Page} and page size={$PageSize}", filter, page,
                                 pageSize);
                return(BadRequest("Unable to get data. If problem persists, contact an administrator"));
            }
        }
Example #6
0
        public async Task <SelectPaginatedResponse <LogEntity> > SelectPaginated(LogFilterDto filter, int pageNumber, int pageSize)
        {
            try
            {
                var result = await _logRepository.SelectPaginated(filter, pageNumber, pageSize);

                return(result);
            }
            catch (Exception e)
            {
                _logger.LogError(e,
                                 "Pagination failed for filter = {@Filter}, page number = {$PageNumber} and page size = {$PageSize}",
                                 filter, pageNumber, pageSize);
                throw;
            }
        }