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
            });
        }
Ejemplo n.º 2
0
        public GetProcessDataResponse ExecuteGet(GetProcessDataRequest request)
        {
            var gatewayResult = _processDataGateway.GetProcessData(request.processRef);

            return(new GetProcessDataResponse(request, gatewayResult, DateTime.Now));
        }