Пример #1
0
        public async Task <PaginatedListResult <Invoice> > Search(InvoicesRequestViewModel viewModel)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException(nameof(viewModel));
            }

            var query = BaseQuery();

            query = SearchFilter(query, viewModel);
            query = SearchSort(query, viewModel);

            return(await query.ToPaginatedListResultAsync(viewModel));
        }
Пример #2
0
        protected IQueryable <Invoice> SearchSort(IQueryable <Invoice> query, InvoicesRequestViewModel viewModel)
        {
            string sortName = viewModel.SortName?.ToUpper();

            if (sortName == InvoicesRequestViewModel.OrderFields.Number)
            {
                query = query.OrderUsingSearchOptions(viewModel, x => x.Number);
            }
            else if (sortName == InvoicesRequestViewModel.OrderFields.Date)
            {
                query = query.OrderUsingSearchOptions(viewModel, x => x.Date);
            }
            else if (sortName == InvoicesRequestViewModel.OrderFields.SumWithoutKm)
            {
                query = query.OrderUsingSearchOptions(viewModel, x => x.NetoSum);
            }
            else if (sortName == InvoicesRequestViewModel.OrderFields.SumKm)
            {
                query = query.OrderUsingSearchOptions(viewModel, x => x.VatSum);
            }
            else if (sortName == InvoicesRequestViewModel.OrderFields.SumBruto)
            {
                query = query.OrderUsingSearchOptions(viewModel, x => x.BrutoSum);
            }
            else if (sortName == InvoicesRequestViewModel.OrderFields.Client)
            {
                query = query.OrderUsingSearchOptions(viewModel, x => x.Customer.Name);
            }
            //else if (sortName == InvoicesRequestViewModel.OrderFields.PaymentMethod) // TODO
            //query = query.OrderUsingSearchOptions(viewModel, x => x.PaymentMethod);
            else if (sortName == InvoicesRequestViewModel.OrderFields.Seller)
            {
                query = query.OrderUsingSearchOptions(viewModel, x => x.Number);
            }
            else
            {
                query = query.OrderBy(x => x.Id);
            }
            return(query);
        }
Пример #3
0
 protected IQueryable <Invoice> SearchFilter(IQueryable <Invoice> query, InvoicesRequestViewModel viewModel)
 {
     return(query);
 }
Пример #4
0
        public async Task <ServiceResult <PaginatedListResult <InvoicesResponseViewModel> > > Search(InvoicesRequestViewModel viewModel)
        {
            var paginatedListWithModel = await _repository.Search(viewModel);

            // Mapping
            List <InvoicesResponseViewModel> Mapping(List <Invoice> list)
            {
                return(list?
                       .Select(model => new InvoicesResponseViewModel
                {
                    Id = model.Id,
                    Number = model.Number,
                    Date = model.Date,
                    SumWithoutKm = model.NetoSum,
                    SumKm = model.VatSum,
                    SumBruto = model.BrutoSum,
                    Client = model.Customer?.Name,
                    //PaymentMethod = model
                    Seller = model.SellerName
                })
                       .ToList());
            }

            var paginatedListWithViewModel = paginatedListWithModel.Copy(Mapping);

            return(ServiceResultFactory.Success(paginatedListWithViewModel));
        }
Пример #5
0
 public async Task <IActionResult> Search([FromQuery] InvoicesRequestViewModel viewModel)
 => await HandleResultAsync(() => _service.Search(viewModel));