Files
Kanalsanierungsverwaltung/SanSystem/Database/UpdateDatabase.cs
2022-04-21 08:00:09 +02:00

183 lines
6.5 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);
}
// dtauftraggeber.AcceptChanges();
// auftraggeberDA.Update(dtauftraggeber);
DataTable dtimprägnierberichte = new DataTable();
using (var reader = ObjectReader.Create(source.Imprägnierungen))
{
dtimprägnierberichte.Load(reader);
}
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);
}
*/
}
}
}