Exemplo n.º 1
0
        public Task <FilterResultModel <RemainingPartnerPaymentsModel> > Handle(GetRemainingPartnerPaymentsQuery request, CancellationToken cancellationToken)
        {
            var sortBy        = request.SortBy.Trim() != "" ? request.SortBy : "PartnerName";
            var sortDirection = (request.SortDirection.ToUpper() == "DESCENDING") ? true : false;

            FilterResultModel <RemainingPartnerPaymentsModel> result = new FilterResultModel <RemainingPartnerPaymentsModel> ();
            var remaining = _database.Rent
                            .Where(r => r.Vehicle.Owner != null)
                            .Select(RemainingPartnerPaymentsModel.Projection)

                            .Select(DynamicQueryHelper.GenerateSelectedColumns <RemainingPartnerPaymentsModel> (request.SelectedColumns))
                            .GroupBy(e => new { e.PartnerName, e.PartnerId })
                            .Select(t => new RemainingPartnerPaymentsModel()
            {
                PartnerName = t.Key.PartnerName,
                PartnerId   = t.Key.PartnerId,
                Amount      = t.Sum(o => o.Amount),
                PaidAmount  = t.Sum(o => o.PaidAmount)
            })
                            .Where(r => r.RemainingAmount > 0).AsQueryable();

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

            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 <RemainingPartnerPaymentsModel> > (result));
        }
Exemplo n.º 2
0
        public async Task <ActionResult <FilterResultModel <RemainingPartnerPaymentsModel> > > GetRemainingPartnerPayments([FromBody] GetRemainingPartnerPaymentsQuery query)
        {
            var remainingPartnerPayments = await _Mediator.Send(query);

            return(Ok(remainingPartnerPayments));
        }