public CareCaseDataList GetResidentCases(ListCasesRequest request) { string?ncId = null; //grab both mosaic id and nc reference id if (!string.IsNullOrWhiteSpace(request.MosaicId)) { string ncIdTmp = _databaseGateway.GetNCReferenceByPersonId(request.MosaicId); if (!string.IsNullOrEmpty(ncIdTmp)) { ncId = ncIdTmp; } string mosaicIdTmp = _databaseGateway.GetPersonIdByNCReference(request.MosaicId); if (!string.IsNullOrEmpty(mosaicIdTmp)) { ncId = request.MosaicId; request.MosaicId = mosaicIdTmp; } } var(response, totalCount) = _processDataGateway.GetProcessData(request, ncId); var allCareCaseData = response.ToList(); long?deletedRecordsCount = null; if (request.MosaicId != null || request.WorkerEmail != null || request.FormName != null || request.FirstName != null || request.LastName != null) { var filter = GenerateFilterDefinition(request); if (request.IncludeDeletedRecordsCount) { var deletedRecordsFilter = GenerateFilterDefinition(request, addDeletedRecordsFilter: false); deletedRecordsFilter &= Builders <CaseSubmission> .Filter.Eq(x => x.Deleted, true); deletedRecordsCount = _mongoGateway.GetRecordsCountByFilter(MongoConnectionStrings.Map[Collection.ResidentCaseSubmissions], deletedRecordsFilter); } var caseSubmissions = _mongoGateway .LoadRecordsByFilter(MongoConnectionStrings.Map[Collection.ResidentCaseSubmissions], filter, null) .Item1 .Select(x => x.ToCareCaseData(request)) .ToList(); allCareCaseData.AddRange(caseSubmissions); totalCount += caseSubmissions.Count; } var careCaseData = SortData(request.SortBy ?? "", request.OrderBy ?? "desc", allCareCaseData) .Skip(request.Cursor) .Take(request.Limit) .ToList(); int?nextCursor = request.Cursor + request.Limit; //support page size 1 if (nextCursor == totalCount || careCaseData.Count < request.Limit) { nextCursor = null; } return(new CareCaseDataList { Cases = careCaseData.ToList(), NextCursor = nextCursor, DeletedRecordsCount = deletedRecordsCount }); }
public GetProcessDataResponse ExecuteGet(GetProcessDataRequest request) { var gatewayResult = _processDataGateway.GetProcessData(request.processRef); return(new GetProcessDataResponse(request, gatewayResult, DateTime.Now)); }