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)); }
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)); }