/// <summary> /// Joins and generates the data for the full report page. /// </summary> /// <param name="Debug"></param> /// <param name="Severities"></param> /// <param name="License"></param> /// <returns></returns> private IQueryable <RawReportFull> GetDebugData(IQueryable <CalculationDebugDataEntity> Debug, IEnumerable <SeverityEntity> Severities, LicenseMode License) { var organs = new LinqMetaData().Organ; var fu = Debug.ToArray() .Where(x => x.IsFiltered) .Join(Debug.ToArray() .Where(y => !y.IsFiltered), x => x.FingerSector, y => y.FingerSector, (x, y) => new FilteredUnfiltered { OrganComponent = x.OrganComponent, FingerSector = x.FingerSector, FilteredLRRank = x.LRRank, FilteredLRScaledScore = (int)Math.Round(x.LRScaledScore), FilteredEPICRank = x.EPICRank, FilteredEPICScaledScore = (int)Math.Round(x.EPICScaledScore), // fill in report score below FilteredEPICBaseScore = x.EPICBaseScore, FilteredEPICBonusScore = x.EPICBonusScore, FilteredEPICScore = x.EPICScore, UnfilteredLRRank = y.LRRank, UnfilteredLRScaledScore = (int)Math.Round(y.LRScaledScore), UnfilteredEPICRank = y.EPICRank, UnfilteredEPICScaledScore = (int)Math.Round(y.EPICScaledScore), // fill in report score below UnfilteredEPICBaseScore = y.EPICBaseScore, UnfilteredEPICBonusScore = y.EPICBonusScore, UnfilteredEPICScore = y.EPICScore, }); var joined = organs .LeftOuterJoin(fu.Where(y => y.FingerSector.Contains("L")), x => x.LComp, y => y.FingerSector, (y, x) => new RawReportFull { LComp = x != null ? x.FingerSector : "", RComp = y.RComp, OrganId = y.OrganId, Organ = y.Description.Replace(" - Left", "").Replace(" - Right", ""), OrganSystemOrgan = y.OrganSystemOrgans.First(z => z.LicenseOrganSystem.LicenseMode == License), FingerSector = (x != null ? x.FingerSector : ""), LFilteredLRRank = x != null ? x.FilteredLRRank.ToString(CultureInfo.InvariantCulture) : "", LFilteredLRScaledScore = x != null ? x.FilteredLRScaledScore.ToString(CultureInfo.InvariantCulture) : "", LFilteredEPICRank = x != null ? x.FilteredEPICRank.ToString(CultureInfo.InvariantCulture) : "", LFilteredEPICScaledScore = x != null ? x.FilteredEPICScaledScore.ToString(CultureInfo.InvariantCulture) : "", // fill in report score below LFilteredEPICBaseScore = x != null ? x.FilteredEPICBaseScore.ToString(CultureInfo.InvariantCulture) : "", LFilteredEPICBonusScore = x != null ? x.FilteredEPICBonusScore.ToString(CultureInfo.InvariantCulture) : "", LFilteredEPICScore = x != null ? x.FilteredEPICScore.ToString(CultureInfo.InvariantCulture) : "", LUnfilteredLRRank = x != null ? x.UnfilteredLRRank.ToString(CultureInfo.InvariantCulture) : "", LUnfilteredLRScaledScore = x != null ? x.UnfilteredLRScaledScore.ToString(CultureInfo.InvariantCulture) : "", LUnfilteredEPICRank = x != null ? x.UnfilteredEPICRank.ToString(CultureInfo.InvariantCulture) : "", LUnfilteredEPICScaledScore = x != null ? x.UnfilteredEPICScaledScore.ToString(CultureInfo.InvariantCulture) : "", // fill in report score below LUnfilteredEPICBaseScore = x != null ? x.UnfilteredEPICBaseScore.ToString(CultureInfo.InvariantCulture) : "", LUnfilteredEPICBonusScore = x != null ? x.UnfilteredEPICBonusScore.ToString(CultureInfo.InvariantCulture) : "", LUnfilteredEPICScore = x != null ? x.UnfilteredEPICScore.ToString(CultureInfo.InvariantCulture) : "", }) // join right sides .LeftOuterJoin(fu.Where(y => y.FingerSector.Contains("R")), x => x.RComp, y => y.FingerSector, (y, x) => { y.FingerSector = y.FingerSector + (!String.IsNullOrEmpty(y.FingerSector) && x != null ? "/" : "") + (x != null ? x.FingerSector : ""); y.RFilteredLRRank = x != null ? x.FilteredLRRank.ToString(CultureInfo.InvariantCulture) : ""; y.RFilteredLRScaledScore = x != null ? x.FilteredLRScaledScore.ToString(CultureInfo.InvariantCulture) : ""; y.RFilteredEPICRank = x != null ? x.FilteredEPICRank.ToString(CultureInfo.InvariantCulture) : ""; y.RFilteredEPICScaledScore = x != null ? x.FilteredEPICScaledScore.ToString(CultureInfo.InvariantCulture) : ""; // fill in report score below y.RFilteredEPICBaseScore = x != null ? x.FilteredEPICBaseScore.ToString(CultureInfo.InvariantCulture) : ""; y.RFilteredEPICBonusScore = x != null ? x.FilteredEPICBonusScore.ToString(CultureInfo.InvariantCulture) : ""; y.RFilteredEPICScore = x != null ? x.FilteredEPICScore.ToString(CultureInfo.InvariantCulture) : ""; y.RUnfilteredLRRank = x != null ? x.UnfilteredLRRank.ToString(CultureInfo.InvariantCulture) : ""; y.RUnfilteredLRScaledScore = x != null ? x.UnfilteredLRScaledScore.ToString(CultureInfo.InvariantCulture) : ""; y.RUnfilteredEPICRank = x != null ? x.UnfilteredEPICRank.ToString(CultureInfo.InvariantCulture) : ""; y.RUnfilteredEPICScaledScore = x != null ? x.UnfilteredEPICScaledScore.ToString(CultureInfo.InvariantCulture) : ""; // fill in report score below y.RUnfilteredEPICBaseScore = x != null ? x.UnfilteredEPICBaseScore.ToString(CultureInfo.InvariantCulture) : ""; y.RUnfilteredEPICBonusScore = x != null ? x.UnfilteredEPICBonusScore.ToString(CultureInfo.InvariantCulture) : ""; y.RUnfilteredEPICScore = x != null ? x.UnfilteredEPICScore.ToString(CultureInfo.InvariantCulture) : ""; return(y); }); var report = joined .Join(Severities, x => x.OrganId, y => y.OrganId, (x, y) => { x.PhysicalLeft = y != null && y.PhysicalLeft.HasValue ? y.PhysicalLeft.Value.ToString(CultureInfo.InvariantCulture) : ""; x.PhysicalRight = y != null && y.PhysicalRight.HasValue ? y.PhysicalRight.Value.ToString(CultureInfo.InvariantCulture) : ""; x.MentalLeft = y != null && y.MentalLeft.HasValue ? y.MentalLeft.Value.ToString(CultureInfo.InvariantCulture) : ""; x.MentalRight = y != null && y.MentalRight.HasValue ? y.MentalRight.Value.ToString(CultureInfo.InvariantCulture) : ""; return(x); }); return(report.AsQueryable()); }