private HashSet <int> ValidateNoExemptYearsWithReportedPerformanceMeasureRow(int relevantPerformanceMeasureID) { var performanceMeasureActualSimples = PerformanceMeasureActualSimples.Where(pma => pma.PerformanceMeasureID == relevantPerformanceMeasureID).ToList(); var projectExemptReportingYearSimples = ProjectExemptReportingYearSimples ?? new List <ProjectExemptReportingYearSimple>(); var exemptYears = projectExemptReportingYearSimples.Where(x => x.IsExempt).Select(x => x.CalendarYear).ToList(); var performanceMeasureActualsWithExemptYear = performanceMeasureActualSimples.Where(x => exemptYears.Contains(x.CalendarYear)).ToList(); return(new HashSet <int>(performanceMeasureActualsWithExemptYear.Select(x => x.PerformanceMeasureActualID.GetValueOrDefault()))); }
private HashSet <int> ValidateNoDuplicatePerformanceMeasureActualRow(int relevantPerformanceMeasureID) { if (PerformanceMeasureActualSimples == null) { return(new HashSet <int>()); } var duplicates = PerformanceMeasureActualSimples .Where(x => x.PerformanceMeasureID == relevantPerformanceMeasureID) .GroupBy(x => new { x.PerformanceMeasureID, x.CalendarYear }) .Select(x => x.ToList()) .ToList() .Select(x => x) .Where(x => x.Select(m => m.PerformanceMeasureActualSubcategoryOptions).ToList().Select(z => String.Join("_", z.Select(s => s.PerformanceMeasureSubcategoryOptionID).ToList())).ToList().HasDuplicates()).ToList(); return(new HashSet <int>(duplicates.SelectMany(x => x).ToList().Select(x => x.PerformanceMeasureActualID.GetValueOrDefault()))); }
private HashSet <int> ValidateNoIncompletePerformanceMeasureActualRow(int relevantPerformanceMeasureID) { if (PerformanceMeasureActualSimples == null) { return(new HashSet <int>()); } var performanceMeasureIDs = PerformanceMeasureActualSimples.Select(x => x.PerformanceMeasureID.GetValueOrDefault()).Distinct(); var performanceMeasuresIDsAndSubcategoryCounts = HttpRequestStorage.DatabaseEntities.PerformanceMeasures.Where(x => performanceMeasureIDs.Contains(x.PerformanceMeasureID)).Select(x => new { x.PerformanceMeasureID, SubcategoryCount = x.PerformanceMeasureSubcategories.Count }); var performanceMeasureActualsWithMissingSubcategoryOptions = PerformanceMeasureActualSimples.Where( x => x.PerformanceMeasureID == relevantPerformanceMeasureID && (!x.ActualValue.HasValue || performanceMeasuresIDsAndSubcategoryCounts.Single(y => x.PerformanceMeasureID == y.PerformanceMeasureID).SubcategoryCount != x.PerformanceMeasureActualSubcategoryOptions.Count || x.PerformanceMeasureActualSubcategoryOptions.Any(y => y.PerformanceMeasureSubcategoryOptionID == null))).ToList(); return(new HashSet <int>(performanceMeasureActualsWithMissingSubcategoryOptions.Select(x => x.PerformanceMeasureActualID.GetValueOrDefault()))); }