Esempio n. 1
0
        public async Task ShouldGetPayRunList()
        {
            ClearDatabase();
            var payRunDateRanges = CreateDateRanges(DateTimeOffset.UtcNow.Date.AddDays(-600), 30, 15);
            var payRuns          = payRunDateRanges.Select(dateRange =>
                                                           TestDataHelper.CreatePayRun(startDate: dateRange.Start, endDate: dateRange.End,
                                                                                       paidUpToDate: dateRange.End)).ToList();

            _generator.CreatePayRuns(payRuns);

            var parameters = new PayRunListParameters {
                PageNumber = 1, PageSize = 15
            };
            var url = new UrlFormatter()
                      .SetBaseUrl($"api/v1/payruns")
                      .AddParameter("pageNumber", parameters.PageNumber)
                      .AddParameter("pageSize", parameters.PageSize)
                      .ToString();

            var response = await _fixture.RestClient
                           .GetAsync <PagedResponse <PayRunListResponse> >(url);

            Assert.NotNull(response);
            response.Message.StatusCode.Should().Be(HttpStatusCode.OK);
            response.Content.Data.Count().Should().Be(15);
        }
        public async Task <ActionResult <PagedResponse <PayRunListResponse> > > GetPayRunList(
            [FromQuery] PayRunListParameters parameters)
        {
            var result = await _getPayRunListUseCase.GetPayRunList(parameters).ConfigureAwait(false);

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(result.PagingMetaData));
            return(Ok(result));
        }
Esempio n. 3
0
        public async Task <PagedResponse <PayRunListResponse> > GetPayRunList(PayRunListParameters parameters)
        {
            var res = await _payRunGateway.GetPayRunList(parameters).ConfigureAwait(false);

            return(new PagedResponse <PayRunListResponse>()
            {
                PagingMetaData = res.PagingMetaData,
                Data = res.ToResponse()
            });
        }
        public async Task <PagedList <PayRunListDomain> > GetPayRunList(PayRunListParameters parameters)
        {
            var types               = Enum.GetValues(typeof(PayrunType)).OfType <PayrunType>().Select(x => (int)x).ToArray();
            var statuses            = Enum.GetValues(typeof(PayrunStatus)).OfType <PayrunStatus>().Select(x => (int)x).ToArray();
            var paidStatuses        = new[] { PayrunStatus.Paid, PayrunStatus.PaidWithHold };
            var heldInvoiceStatuses = new[] { InvoiceStatus.Held, InvoiceStatus.Released, InvoiceStatus.ReleaseAccepted };
            var payRunList          = await _dbContext.Payruns
                                      .FilterPayRunList(parameters.SearchTerm, parameters.PayRunType,
                                                        parameters.PayRunStatus, parameters.DateFrom, parameters.DateTo)
                                      .Select(pr => new PayRunListDomain
            {
                PayRunId         = pr.Id,
                PayRunNumber     = pr.Number,
                PayRunTypeId     = (int)pr.Type,
                PayRunTypeName   = types.Contains((int)pr.Type) ? pr.Type.ToDescription() : string.Empty,
                PayRunStatusId   = (int)pr.Status,
                PayRunStatusName = statuses.Contains((int)pr.Status) ? pr.Status.GetDisplayName() : string.Empty,
                TotalAmountPaid  = paidStatuses.Contains(pr.Status) ? pr.PayrunInvoices.Where(pi => pi.InvoiceStatus == InvoiceStatus.Accepted).Sum(pi => pi.Invoice.GrossTotal) : pr.Paid,
                TotalAmountHeld  = pr.PayrunInvoices.Where(pi => heldInvoiceStatuses.Contains(pi.InvoiceStatus)).Sum(pi => pi.Invoice.GrossTotal),
                DateFrom         = pr.StartDate,
                DateTo           = pr.EndDate,
                DateCreated      = pr.DateCreated
            })
                                      .OrderByDescending(p => p.DateCreated)
                                      .ToListAsync();

            payRunList = payRunList
                         .Skip((parameters.PageNumber - 1) * parameters.PageSize)
                         .Take(parameters.PageSize).ToList();

            var payRunCount = await _dbContext.Payruns
                              .FilterPayRunList(parameters.SearchTerm, parameters.PayRunType,
                                                parameters.PayRunStatus, parameters.DateFrom, parameters.DateTo)
                              .CountAsync();

            return(PagedList <PayRunListDomain> .ToPagedList(payRunList, payRunCount, parameters.PageNumber, parameters.PageSize));
        }