using FastMember; using KlassenBIB; using SanShared; using System; using System.Collections.Generic; using System.Data; using System.Data.SQLite; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xaml; namespace Database { class UpdateDatabase { public static void UpdateNewGuids() { if (Datenbank.Instance.loadedProjekt == null) return; foreach(var entries in Datenbank.Instance.loadedProjekt.Objekte) { if(entries.Guid.Equals(Guid.Empty)) entries.Guid = Guid.NewGuid(); foreach(var sanierungen in entries.Sanierung) { if (sanierungen.Guid.Equals(Guid.Empty)) sanierungen.Guid = Guid.NewGuid(); } } return; } public static void CreateSQLiteDB() { var source = Datenbank.Instance.TeufelDB; // Auftraggber Datatable DataTable dtauftraggeber = new DataTable(); // Verbindung zur SQLite herstellen SQLiteConnection Connection = new SQLiteConnection("Data Source=datenbank.db;Version=3;"); SQLiteCommand Command = new SQLiteCommand("SELECT * FROM Auftraggeber", Connection); SQLiteDataAdapter auftraggeberDA = new SQLiteDataAdapter(); //auftraggeberDA.SelectCommand = Command; SQLiteCommandBuilder cmd = new SQLiteCommandBuilder(auftraggeberDA); auftraggeberDA.SelectCommand = Command; auftraggeberDA.InsertCommand = cmd.GetInsertCommand(); Connection.Open(); auftraggeberDA.Fill(dtauftraggeber); DataTable srcdtAuftraggeber = new DataTable(); using (var reader = ObjectReader.Create(source.Auftraggeber, "Name", "Strasse", "Ort", "Ansprechpartner")) { srcdtAuftraggeber.Load(reader); } foreach (DataRow s in srcdtAuftraggeber.Rows) { DataRow dr = dtauftraggeber.NewRow(); //dr.BeginEdit(); dr["Name"] = s["Name"]; dr["Strasse"] = s["Strasse"]; dr["Ort"] = s["Ort"]; dr["Ansprechpartner"] = s["Ansprechpartner"]; //dr.EndEdit(); dtauftraggeber.Rows.Add(dr); } auftraggeberDA.Update(dtauftraggeber); //Imprägnierberichte DataTable dtimprägnierberichte = new DataTable(); using (var reader = ObjectReader.Create(source.Imprägnierungen)) { dtimprägnierberichte.Load(reader); } Command = new SQLiteCommand("SELECT * FROM Projekt",Connection); SQLiteDataAdapter projektDA = new SQLiteDataAdapter(); cmd = new SQLiteCommandBuilder(projektDA); projektDA.SelectCommand = Command; projektDA.InsertCommand = cmd.GetInsertCommand(); Command = new SQLiteCommand("SELECT * FROM Inspektionsobjekt", Connection); SQLiteDataAdapter objektDA = new SQLiteDataAdapter(); cmd = new SQLiteCommandBuilder(objektDA); objektDA.SelectCommand = Command; objektDA.InsertCommand = cmd.GetInsertCommand(); DataTable dtprojekte = new DataTable(); DataTable dtObjekte = new DataTable(); projektDA.Fill(dtprojekte); objektDA.Fill(dtObjekte); int projektID = 1; // Alle Projekte durch gehen foreach(Projekt projekt in source.Projekte) { DataRow projektRow = dtprojekte.NewRow(); projektRow["ID"] = projektID; projektRow["Nummer"] = projekt.Nummer; projektRow["Ort"] = projekt.Ort; projektRow["SanierungsIDPrefix"] = projekt.SanierungsIDPrefix; projektRow["SanierungsIDSuffix"] = projekt.SanierungsIDSuffix; int objektID = 1; // Alle einzelne Inspektionsobjekte foreach(var inspektionsobjekt in projekt.Objekte) { DataRow objektRow = dtObjekte.NewRow(); objektRow["id"] = objektID; objektRow["ref_projekt_id"] = projektID; objektRow["StrasseName"] = inspektionsobjekt.StrasseName; objektRow["Ort"] = inspektionsobjekt.OrtName; objektRow["Hausnummer"] = inspektionsobjekt.Hausnummer; objektRow["Projektnummer"] = inspektionsobjekt.Projektnummer; objektRow["Objektbezeichnung"] = inspektionsobjekt.Objektbezeichnung; objektRow["VonPunkt"] = inspektionsobjekt.VonPunkt; objektRow["BisPunkt"] = inspektionsobjekt.BisPunkt; objektRow["RohrMaterial"] = inspektionsobjekt.RohrMaterial; objektRow["Kanalrohrweite"] = inspektionsobjekt.Kanalrohrweite; objektRow["Haltungslaenge"] = inspektionsobjekt.Haltungslaenge; objektRow["Schachtlaenge"] = inspektionsobjekt.Schachtlaenge; objektRow["HaltungGemessen"] = inspektionsobjekt.HaltungGemessen.ToString(); objektRow["Bemerkung"] = inspektionsobjekt.Bemerkung; objektRow["Inspektionsrichtung"] = inspektionsobjekt.Inspektionsrichtung; objektRow["Sanierungsnummer"] = inspektionsobjekt.Sanierungsnummer; foreach(Sanierung sanierung in inspektionsobjekt.Sanierung) { } dtObjekte.Rows.Add(objektRow); objektID++; } dtprojekte.Rows.Add(projektRow); projektID++; } projektDA.Update(dtprojekte); objektDA.Update(dtObjekte); Connection.Close(); } public static void MakeNewDatabaseSystem() { List projekte = new List(); Projekt tempProjekt = null; foreach (DirectoryInfo projekt in (new DirectoryInfo("./projekte").GetDirectories())) { projekte.Add(projekt.Name); } foreach (string t in projekte) { string filepath = Path.Combine("projekte", t, string.Format("{0}.xaml", t)); if (!File.Exists(filepath)) continue; tempProjekt = XamlServices.Load(filepath) as KlassenBIB.Projekt; Datenbank.Instance.TeufelDB.Projekte.Add(tempProjekt); //var x = Datenbank.Instance.MainDatenbank.AuftraggeberListe; } } public static void GenerateNewBeziehungen() { string imprägnierungsnummer = ""; foreach(Projekt projekt in Datenbank.Instance.TeufelDB.Projekte) { projekt.Auftraggeber = Datenbank.Instance.TeufelDB.Auftraggeber.Find(x => x.Name.Equals(projekt.Auftraggeber.Name)); foreach(Inspektionsobjekt inspektionsobjekt in projekt.Objekte) { if(inspektionsobjekt.Sanierung.Count > 0) { foreach(var sanierung in inspektionsobjekt.Sanierung) { if(sanierung is KlassenBIB.InlinerSanierung) { KlassenBIB.InlinerSanierung san = (sanierung as KlassenBIB.InlinerSanierung); if (!(san.Imprägnierungsbericht is KlassenBIB.WerkseitigImprägniert)) continue; KlassenBIB.WerkseitigImprägniert werkseitigImprägniert = (KlassenBIB.WerkseitigImprägniert)san.Imprägnierungsbericht; imprägnierungsnummer = werkseitigImprägniert.Imprägniernummer; //san.Imprägnierungsbericht = null; san.Imprägnierungsbericht = Datenbank.Instance.TeufelDB.Imprägnierungen.Find(x => x.Imprägniernummer.Equals(imprägnierungsnummer)); } } } } } //Debugger.Break(); } public static void TransferAuftraggeber() { /* List projekte = new List(); List auftraggebers = new List(); Projekt tempProjekt = null; foreach(DirectoryInfo projekt in (new DirectoryInfo("./projekte").GetDirectories())) { projekte.Add(projekt.Name); } foreach(string t in projekte) { string filepath = Path.Combine("projekte", t, string.Format("{0}.xaml", t)); if (!File.Exists(filepath)) continue; tempProjekt = XamlServices.Load(filepath) as KlassenBIB.Projekt; //auftraggebers.Add(tempProjekt.Auftraggeber); if (tempProjekt.Auftraggeber.Name == null && tempProjekt.Auftraggeber.Ort == null && tempProjekt.Auftraggeber.Ansprechpartner == null) continue; IAuftraggeber test = Datenbank.Instance.MainDatenbank.AuftraggeberListe.Find(x =>x.Name.Equals(tempProjekt.Auftraggeber.Name)); if (test != null) { continue; } Datenbank.Instance.MainDatenbank.AuftraggeberListe.Add(tempProjekt.Auftraggeber); } */ } } }