diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs index a53f8fa8d..47ef287e9 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriodSetService.cs @@ -89,7 +89,7 @@ namespace IRaCIS.Application.Services await _readingPeriodPlanRepository.SaveChangesAsync(); } var readSet = (await _readingPeriodSetRepository.Where(x => x.Id == inDto.ReadingPeriodSetId).Include(x => x.ReadingPeriodSites).FirstOrDefaultAsync()).IfNullThrowException(); - var visitQuery = _subjectVisitRepository.Where(x => x.TrialId == readSet.TrialId && x.InPlan); + var visitQuery = _subjectVisitRepository.Where(x => x.TrialId == readSet.TrialId && x.InPlan&&x.LatestScanDate!=null); if (readSet.ReadingScope == ReadingScopeEnum.Site) { var siteIds = readSet.ReadingPeriodSites.Select(x => x.SiteId); @@ -97,21 +97,28 @@ namespace IRaCIS.Application.Services } visitQuery = visitQuery.WhereIf(readSet.ExpirationDate != null, x => x.LatestScanDate <= readSet.ExpirationDate.Value) - .WhereIf(readSet.ExpirationVisitNum != null, x => x.VisitNum <= readSet.ExpirationVisitNum); + .WhereIf(readSet.ExpirationVisitNum != null, x => x.VisitNum == readSet.ExpirationVisitNum); var subjectVisits = await visitQuery.Include(x => x.Subject).Include(x => x.TrialSite).GroupBy(x => x.SubjectId).Select(x => new { SubjectId = x.Key, Visit = x.ToList() }).ToListAsync(); + List visits = new List(); subjectVisits.ForEach(x => { - var finalVisit = x.Visit.Where(x => x.IsFinalVisit).FirstOrDefault(); - if (finalVisit != null) + var expirationDate = readSet.ExpirationDate; + var subjectvisitlist = new List(); + if (expirationDate != null) { - var visit = x.Visit.Where(x => x.VisitNum < finalVisit.VisitNum).OrderByDescending(x=>x.VisitNum).FirstOrDefault(); - if(visit!=null) + subjectvisitlist = x.Visit.Where(x => x.LatestScanDate <= expirationDate).ToList(); + } + + if (readSet.ExpirationVisitNum != null) + { + var visit = x.Visit.Where(x => x.VisitNum == readSet.ExpirationVisitNum).FirstOrDefault(); + if (visit != null) { visits.Add(visit); } @@ -123,11 +130,15 @@ namespace IRaCIS.Application.Services { visits.Add(visit); } + } + + }); - return visits.Where(x => _readModuleRepository.Where(y => y.ReadingSetType == readSet.ReadingSetType && x.Id == y.SubjectVisitId).Count() == 0) + return visits + //Where(x => _readModuleRepository.Where(y => y.ReadingSetType == readSet.ReadingSetType && x.Id == y.SubjectVisitId).Count() == 0) .Select(x => new PreviewTheReadingListOutDto { ExpirationDate= readSet.ExpirationDate,