public Task <FilterResultModel <RemainingCustomerPaymentsModel> > Handle(GetRemainingCustomerPaymentsQuery request, CancellationToken cancellationToken)
        {
            var sortBy        = request.SortBy.Trim() != "" ? request.SortBy : "CustomerName";
            var sortDirection = (request.SortDirection.ToUpper() == "DESCENDING") ? true : false;

            FilterResultModel <RemainingCustomerPaymentsModel> result = new FilterResultModel <RemainingCustomerPaymentsModel> ();
            var remaining = _database.Rent
                            .Select(RemainingCustomerPaymentsModel.Projection)
                            .Select(DynamicQueryHelper.GenerateSelectedColumns <RemainingCustomerPaymentsModel> (request.SelectedColumns))
                            .GroupBy(e => new { e.CustomerId, e.CustomerName })
                            .Select(t => new RemainingCustomerPaymentsModel()
            {
                CustomerName = t.Key.CustomerName,
                CustomerId   = t.Key.CustomerId,
                Amount       = t.Sum(o => o.Amount),
                PaidAmount   = t.Sum(o => o.PaidAmount)
            })
                            .Where(r => r.RemainingPayment > 0)
                            .AsQueryable();

            if (request.Filter.Count() > 0)
            {
                remaining = remaining
                            .Where(DynamicQueryHelper
                                   .BuildWhere <RemainingCustomerPaymentsModel> (request.Filter));
            }

            result.Count = remaining.Count();

            var PageSize   = (request.PageSize == 0) ? result.Count : request.PageSize;
            var PageNumber = (request.PageSize == 0) ? 1 : request.PageNumber;

            result.Items = remaining.OrderBy(sortBy, sortDirection)
                           .Skip(PageNumber - 1)
                           .Take(PageSize)
                           .ToList();

            return(Task.FromResult <FilterResultModel <RemainingCustomerPaymentsModel> > (result));
        }
Example #2
0
        public async Task <ActionResult <FilterResultModel <RemainingCustomerPaymentsModel> > > GetRemainingCustomerPayments([FromBody] GetRemainingCustomerPaymentsQuery query)
        {
            var remainingCustomerPayments = await _Mediator.Send(query);

            return(Ok(remainingCustomerPayments));
        }