public async Task <BrokerPackageViewDomain> GetBrokerPackageViewListAsync( BrokerPackageViewQueryParameters queryParameters) { var filteredPackageQuery = _dbContext.CarePackages .FilterBrokerViewPackages(queryParameters.ServiceUserId, queryParameters.ServiceUserName, queryParameters.Status, queryParameters.BrokerId, queryParameters.FromDate, queryParameters.ToDate); var packages = await filteredPackageQuery .AsNoTracking() .Select(cp => new BrokerPackageItemDomain { PackageId = cp.Id, ServiceUserId = cp.ServiceUserId, ServiceUserName = $"{cp.ServiceUser.FirstName} {cp.ServiceUser.MiddleName ?? string.Empty} {cp.ServiceUser.LastName}", DateOfBirth = cp.ServiceUser.DateOfBirth, Address = cp.ServiceUser.AddressLine1, HackneyId = cp.ServiceUser.HackneyId.ToString(), PackageType = cp.PackageType.GetDisplayName(), PackageStatus = cp.Status.GetDisplayName(), BrokerName = cp.Broker.Name, DateAssigned = cp.DateCreated }) .ToListAsync(); var preferences = FilterPreferences.BrokerListStatus(); packages = packages .OrderBy(x => preferences.IndexOf(x.PackageStatus)).ThenBy(x => x.DateAssigned) .ToList(); packages = packages .Skip((queryParameters.PageNumber - 1) * queryParameters.PageSize) .Take(queryParameters.PageSize).ToList(); var packageCount = await filteredPackageQuery .CountAsync(); var pagedPackages = PagedList <BrokerPackageItemDomain> .ToPagedList(packages, packageCount, queryParameters.PageNumber, queryParameters.PageSize); var statusCount = await filteredPackageQuery .Select(p => new { p.Id, p.Status }) .GroupBy(p => p.Status) .Select(p => new CarePackageByStatusDomain { StatusName = p.Key.GetDisplayName(), Number = p.Count() }) .ToListAsync(); return(new BrokerPackageViewDomain { Packages = pagedPackages, StatusCount = statusCount.ToDictionary(statusGroup => statusGroup.StatusName, statusGroup => statusGroup.Number), PagingMetaData = pagedPackages.PagingMetaData }); }
public GetCarePackageUseCaseTest() { _fixture = new Fixture(); _brokerViewDomain = _fixture.Build <BrokerPackageViewDomain>() .Create(); _queryFilter = new BrokerPackageViewQueryParameters { PageNumber = 1, PageSize = 10 }; _gatewayMock = new Mock <ICarePackageGateway>(); _gatewayMock .Setup(m => m.GetBrokerPackageViewListAsync(_queryFilter)) .ReturnsAsync(_brokerViewDomain); _useCase = new GetCarePackageUseCase( _gatewayMock.Object); }
public async Task <ActionResult <BrokerPackageViewResponse> > GetBrokerPackageView([FromQuery] BrokerPackageViewQueryParameters queryParameters) { var res = await _getCarePackageUseCase.GetBrokerPackageViewListAsync(queryParameters); return(Ok(res)); }
public async Task <BrokerPackageViewResponse> GetBrokerPackageViewListAsync(BrokerPackageViewQueryParameters queryParameters) { var result = await _carePackageGateway.GetBrokerPackageViewListAsync(queryParameters); return(result.ToResponse()); }