public async Task <ServiceUserSearchResponse> GetServiceUsers(ServiceUserQueryRequest request) { var serviceUserInformation = await _residentsService.SearchServiceUserInformationAsync(request) .EnsureExistsAsync($"service user with hackney Id : {request.HackneyId} not found"); var hackneyIds = serviceUserInformation.Residents.Select(s => int.Parse(s.MosaicId)).ToList(); var carePackages = await _carePackageGateway.GetServiceUserActivePackages(hackneyIds); foreach (var serviceUser in serviceUserInformation.Residents) { var carePackage = carePackages.FirstOrDefault(c => c.ServiceUser?.HackneyId == Convert.ToInt32(serviceUser.MosaicId)); if (carePackage != null) { serviceUser.ActivePackage = carePackage.PackageType.GetDisplayName(); serviceUser.ActivePackageId = carePackage.Id; } } var pagedResidentsResponse = PagedList <ResidentResponse> .ToPagedList(serviceUserInformation.Residents, serviceUserInformation.totalCount, request.PageNumber, request.PageSize); return(new ServiceUserSearchResponse { Residents = new PagedResponse <ResidentResponse>() { PagingMetaData = pagedResidentsResponse.PagingMetaData, Data = serviceUserInformation.Residents }, nextCursor = serviceUserInformation.nextCursor, totalCount = serviceUserInformation.totalCount }); }
public async Task <ServiceUserInformationResponse> SearchServiceUserInformationAsync(ServiceUserQueryRequest request) { var url = new UrlFormatter() .SetBaseUrl("residents") .AddParameter("mosaic_id", request.HackneyId) .AddParameter("first_name", request.FirstName) .AddParameter("last_name", request.LastName) .AddParameter("postCode", request.PostCode) .AddParameter("date_of_birth", request.DateOfBirth) .AddParameter("cursor", request.Cursor ?? 0) .ToString(); return(await _restClient .GetAsync <ServiceUserInformationResponse>(url, "Could not retrieve service user information")); }
public async Task <ActionResult <ServiceUserSearchResponse> > SearchServiceUser([FromQuery] ServiceUserQueryRequest request) { var result = await _getServiceUserMasterSearchUseCase.GetServiceUsers(request); return(Ok(result)); }