using Database; using KlassenBIB; using SanShared; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SanSystem { class MassenStatistik : IMakeProtokol { List inspektionsobjekts = null; DateTime targetDatum; public MassenStatistik(List inspektionsobjekts, DateTime datum) { this.inspektionsobjekts = inspektionsobjekts; targetDatum = datum; BuildBericht(SearchForWaranties()); } static string ConvertToDecimals(double input, uint kommazahl = 2) { return input.ToString("0.00"); } void BuildBericht(List list) { Hashtable grundDaten = MakeProtokoll("",null,DateTime.MinValue); DataTable inliner = getMassenTableInliner(); double gesamtLiner = 0; double gesamtHarz = 0; foreach (Inspektionsobjekt objekt in list) { DataRow dr = inliner.NewRow(); dr["hausnummer"] = objekt.Hausnummer; dr["sanierungsnummer"] = objekt.Sanierungsnummer; dr["vorbereitet"] = "am " + objekt.HaltungGemessen.ToShortDateString(); int schachtanbindungen = 0; foreach (AbstractSanieren mainsan in objekt.Sanierung) { if ( mainsan.Datum.Day == targetDatum.Day && mainsan.Datum.Month == targetDatum.Month && mainsan.Datum.Year == targetDatum.Year) { if (mainsan is InlinerSanierung) { double linerLang = objekt.Haltungslaenge + objekt.Schachtlaenge + 0.5; gesamtLiner += linerLang; dr["liner_laenge"] = ConvertToDecimals(linerLang); dr["kalibrierschlauch"] = ConvertToDecimals(objekt.Haltungslaenge + (objekt.Schachtlaenge * 2) + 0.3); dr["preliner"] = (mainsan as InlinerSanierung).Preliner ? ConvertToDecimals(linerLang - 0.5): ConvertToDecimals(0.0); dr["harzmenge"] = ConvertToDecimals(objekt.Haltungslaenge * (mainsan as InlinerSanierung).HarzBedarf); gesamtHarz += objekt.Haltungslaenge * (mainsan as InlinerSanierung).Harzbedarf; } if (mainsan is SchachtAnbindung) { schachtanbindungen++; } dr["schachtanbindung"] = schachtanbindungen; } } inliner.Rows.Add(dr); } grundDaten["gesamtHarz"] = ConvertToDecimals(gesamtHarz); grundDaten["gesamtliner"] = ConvertToDecimals(gesamtLiner); grundDaten["Ausdruck_datum"] = targetDatum.ToLongDateString(); grundDaten["Ort"] = inspektionsobjekts.Last().OrtName; grundDaten["Strasse"] = inspektionsobjekts.Last().StrasseName; grundDaten["Projektnummer"] = Datenbank.Instance.loadedProjekt.Nummer; BerichtGen.FrmOptions frmOptions = new BerichtGen.FrmOptions("JUME", "Massenstatistik.docx", ".", "Massenstatistik", grundDaten, null, inliner); frmOptions.ShowDialog(); } public Hashtable MakeProtokoll(string destinationPath, IProjekt projekt, DateTime offset) { Hashtable grundDaten = new Hashtable() { {"Ausdruck_datum","" }, {"Strasse","" }, {"Ort","" }, {"Projektnummer","" }, {"gesamtliner","" }, {"gesamtHarz","" } }; return grundDaten; } DataTable getMassenTableInliner() { DataTable dt = new DataTable("Liner"); DataColumn column = new DataColumn("hausnummer") { MaxLength = 50 }; dt.Columns.Add(column); column = new DataColumn("sanierungsnummer") { MaxLength = 10 }; dt.Columns.Add(column); column = new DataColumn("liner_laenge") { MaxLength = 50 }; dt.Columns.Add(column); column = new DataColumn("kalibrierschlauch") { MaxLength = 50 }; dt.Columns.Add(column); column = new DataColumn("preliner") { MaxLength = 50 }; dt.Columns.Add(column); column = new DataColumn("harzmenge") { MaxLength = 50 }; dt.Columns.Add(column); column = new DataColumn("vorbereitet") { MaxLength = 50 }; dt.Columns.Add(column); column = new DataColumn("schachtanbindung") { MaxLength = 50 }; dt.Columns.Add(column); return dt; } List SearchForWaranties() { if (inspektionsobjekts == null) return null ; List result = new List(); foreach(Inspektionsobjekt objekt in inspektionsobjekts) { bool add = false; if ( objekt.HaltungGemessen.Year == targetDatum.Year && objekt.HaltungGemessen.Month == targetDatum.Month && objekt.HaltungGemessen.Day == targetDatum.Day ) { add = true; } foreach(AbstractSanieren san in objekt.Sanierung) { if (san.Fertig && san.Datum.Day == targetDatum.Day && san.Datum.Month == targetDatum.Month && san.Datum.Year == targetDatum.Year ) add = true; } if (add) result.Add(objekt); } return result; } } }