Files
2023-01-14 09:39:16 +01:00

292 lines
11 KiB
C#

/*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 dtImpraegnierSource = new DataTable();
using (var reader = ObjectReader.Create(source.Imprägnierungen))
{
dtImpraegnierSource.Load(reader);
}
Command = new SQLiteCommand("SELECT * FROM Impraegnierungen", Connection);
SQLiteDataAdapter imprDA = new SQLiteDataAdapter();
cmd = new SQLiteCommandBuilder(imprDA);
imprDA.SelectCommand = Command;
imprDA.InsertCommand = cmd.GetInsertCommand();
DataTable dtImpr = new DataTable();
imprDA.Fill(dtImpr);
foreach(DataRow s in dtImpraegnierSource.Rows)
{
DataRow dr = dtImpr.NewRow();
dr["Schlauchnummer"] = s["Schlauchnummer"];
dr["DN"] = s["DN"];
dr["Wanddicke"] = s["Wanddicke"];
dr["Laenge"] = s["LinerLänge"];
dr["NochVorhanden"] = s["NochVorhanden"];
dr["Impraegniernummer"] = s["Imprägniernummer"];
dr["ImpraegnierDatum"] = (s["ImprägnierungBeginn"] as KlassenBIB.ImprägnierungStrukture).Zeitstempel.Date.ToShortDateString();
dtImpr.Rows.Add(dr);
}
imprDA.Update(dtImpr);
dtImpr.Clear();
imprDA.Fill(dtImpr);
// Projekt schleife
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)
{
if(sanierung is InlinerSanierung)
{
InlinerSanierung san = (InlinerSanierung)sanierung;
string searchquery = string.Format("Impraegniernummer = '{0}'",(san.Imprägnierungsbericht as WerkseitigImprägniert).Imprägniernummer);
int refimpID = (int)dtImpr.Select(searchquery).Last()["id"];
}
}
dtObjekte.Rows.Add(objektRow);
objektID++;
}
dtprojekte.Rows.Add(projektRow);
projektID++;
}
projektDA.Update(dtprojekte);
objektDA.Update(dtObjekte);
Connection.Close();
}
public static void MakeNewDatabaseSystem()
{
List<string> projekte = new List<string>();
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<string> projekte = new List<string>();
List<IAuftraggeber> auftraggebers = new List<IAuftraggeber>();
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);
}
}
}
}
*/