public async Task <IPagedList <Operation> > GetOperationsAsync(OperationSearchParameter searchParameters)
        {
            if (searchParameters.Limit <= 0)
            {
                return(new PagedList <Operation>(new Operation[0], 1, 1));
            }

            var filter = Builders <Operation> .Filter.Empty;

            if (searchParameters.EntityId != null)
            {
                filter = filter & Builders <Operation> .Filter.Eq(x => x.EntityId, searchParameters.EntityId);
            }

            if (searchParameters.EntityType != null)
            {
                filter = filter & Builders <Operation> .Filter.Eq(x => x.EntityType, searchParameters.EntityType);
            }

            var collection = GetOperationsCollection();
            var query      = collection.Find(filter)
                             .SortBy(x => x.Date)
                             .Skip(searchParameters.Skip)
                             .Limit(searchParameters.Limit);

            _logger.LogDebug($"Get operations query: {query}.");
            var filteredOperations = await query.ToListAsync();

            var totalRows = (int)await collection.CountDocumentsAsync(filter);

            return(filteredOperations.ToPagedList(searchParameters.Skip, searchParameters.Limit, totalRows));
        }
        public async Task <IActionResult> GetAsync(OperationSearchParameter search)
        {
            if (search == null)
            {
                search = new OperationSearchParameter();
            }

            var operations = await _operationsService.GetOperationsAsync(search);

            var pagedListDto = _mapper.Map <PagedListDto <OperationDto> >(operations);

            pagedListDto.BuildNavigationLinks(Request.GetDisplayUrl());
            return(Ok(pagedListDto));
        }
        public async Task <IPagedList <Operation> > GetOperationsAsync(OperationSearchParameter searchParameters)
        {
            var result = await _operationsRepository.GetOperationsAsync(searchParameters);

            return(result);
        }