} // end GetCurrentGroup private void LoadStandTable(TreeCalculatedValuesDO jsd, List <StandTables> listToLoad, List <LCDDO> justGroups, int classInterval, int whichColumn) { // Which row? nthRow = FindTreeDIBindex(listToLoad, jsd.Tree.DBH, classInterval); //string currMeth = Utilities.MethodLookup(justGroups[whichColumn].Stratum); string currMeth = Utilities.MethodLookup(jsd.Tree.Stratum.Code); // Sum up appropriate value and products // first sum up primary product then check whatProduct to add in secondary switch (whatValue) { case "GBDFT": LoadProperColumn(listToLoad, jsd.GrossBDFTPP * currEF * strAcres, whichColumn); break; case "NBDFT": LoadProperColumn(listToLoad, jsd.NetBDFTPP * currEF * strAcres, whichColumn); break; case "GCUFT": LoadProperColumn(listToLoad, jsd.GrossCUFTPP * currEF * strAcres, whichColumn); break; case "NCUFT": LoadProperColumn(listToLoad, jsd.NetCUFTPP * currEF * strAcres, whichColumn); break; case "TREES": // need to check for 3P and use tally trees instead if (currMeth != "3P") { LoadProperColumn(listToLoad, currEF * strAcres, whichColumn); } else if (currMeth == "3P" || currMeth == "S3P") { if (justGroups[whichColumn].SumExpanFactor > 0) { if (jsd.Tree.STM == "Y") { LoadProperColumn(listToLoad, jsd.Tree.ExpansionFactor, whichColumn); } else { List <LCDDO> allGroups = Global.BL.getLCD().Where( l => l.Stratum == jsd.Tree.Stratum.Code && l.SampleGroup == jsd.Tree.SampleGroup.Code && l.Species == jsd.Tree.Species).ToList(); double allTallied = allGroups.Sum(ag => ag.TalliedTrees); double allExpanFac = allGroups.Sum(ag => ag.SumExpanFactor); double calcValue = allTallied * jsd.Tree.ExpansionFactor / allExpanFac; LoadProperColumn(listToLoad, calcValue, whichColumn); } // endif } } // endif break; } // end switch // secondary if (whatProduct == "BOTH") { switch (whatValue) { case "GBDFT": LoadProperColumn(listToLoad, jsd.GrossBDFTSP * currEF * strAcres, whichColumn); break; case "NBDFT": LoadProperColumn(listToLoad, jsd.NetBDFTSP * currEF * strAcres, whichColumn); break; case "GCUFT": LoadProperColumn(listToLoad, jsd.GrossCUFTSP * currEF * strAcres, whichColumn); break; case "NCUFT": LoadProperColumn(listToLoad, jsd.NetCUFTSP * currEF * strAcres, whichColumn); break; } // switch } // endif what product return; } // end LoadStandTable
} // end buildPrintArray public static List <string> buildPrintArray(TreeCalculatedValuesDO tcv, string currUOM, ref int firstLine) { // currently for VSM4 (CP4) report only var prtArray = new List <string>(); prtArray.Add(""); if (firstLine == 0) { prtArray.Add(tcv.Tree.Stratum.Code.PadLeft(2, ' ')); prtArray.Add(tcv.Tree.SampleGroup.Code.PadLeft(2, ' ')); firstLine = 1; } else { prtArray.Add(" "); prtArray.Add(" "); } // endif firstLine prtArray.Add(tcv.Tree.CuttingUnit.Code.PadLeft(3, ' ')); if (tcv.Tree != null && tcv.Tree.Plot != null) { prtArray.Add(tcv.Tree.Plot.PlotNumber.ToString().PadLeft(4, ' ')); } else { prtArray.Add(" "); } prtArray.Add(tcv.Tree.TreeNumber.ToString().PadLeft(4, ' ')); prtArray.Add(tcv.Tree.Species.PadRight(6, ' ')); prtArray.Add(String.Format("{0,5:F1}", tcv.Tree.DBH).PadLeft(5, ' ')); // volumes used depend on current UOM double currVolume = 0; switch (currUOM) { case "03": prtArray.Add(String.Format("{0,7:F1}", tcv.GrossCUFTPP)); prtArray.Add(String.Format("{0,7:F1}", tcv.NetCUFTPP)); currVolume = tcv.NetCUFTPP; break; case "01": prtArray.Add(String.Format("{0,7:F1}", tcv.GrossBDFTPP)); prtArray.Add(String.Format("{0,7:F1}", tcv.NetBDFTPP)); currVolume = tcv.NetBDFTPP; break; case "05": prtArray.Add(String.Format("{0,7:F1}", tcv.BiomassMainStemPrimary)); prtArray.Add(String.Format("{0,7:F1}", tcv.BiomassMainStemPrimary)); currVolume = tcv.BiomassMainStemPrimary; break; case "02": prtArray.Add(String.Format("{0,7:F1}", tcv.CordsPP)); prtArray.Add(String.Format("{0,7:F1}", tcv.CordsPP)); currVolume = tcv.CordsPP; break; } // end switch on UOM prtArray.Add(String.Format("{0,8:F2}", tcv.Tree.ExpansionFactor)); prtArray.Add(tcv.Tree.KPI.ToString().PadLeft(5, ' ')); // April 2017 -- separate KPI from count table since it includes measured KPI prtArray.Add(" "); prtArray.Add(tcv.Tree.TreeCount.ToString().PadLeft(6, ' ')); // calculate ratio if (tcv.Tree.KPI > 0) { prtArray.Add(String.Format("{0,7:F3}", (currVolume / tcv.Tree.KPI))); } else { prtArray.Add(" "); } // and finally marker's initials if (tcv.Tree != null && tcv.Tree.Initials != null) { prtArray.Add(tcv.Tree.Initials.PadRight(3, ' ')); } else { prtArray.Add(" "); } return(prtArray); } // end buildPrintArray