Files
MainSoftware/ProtokollWriter/SBTextFileWriter.cs
2021-02-25 10:52:43 +01:00

128 lines
5.2 KiB
C#

using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using Models;
using ProtokollWriterContract;
namespace ProtokollWriter {
/// Erstellt eine Städtler und Beck Dichtheitsprüfdatei
public class SBTextFileWriter : IProtokollWriter
{
string[] content;
ArrayList newFile = new ArrayList();
int prüfungsnummer = 0;
string targetFile;
Inspektionsobjekt inspObjekt;
Hashtable hashtable = new Hashtable() {
{"DATUM",""},
{"PROJEKTNR","" },
{"PRUEFNR","" },
{"AUFTRAGGEBER_NAME","" },
{"AUFTRAGGEBER_STRASSE","" },
{"AUFTRAGGEBER_ORT","" },
{"AUFTRAGGEBER_TEL","" },
{"BAUVORHABEN_STRASSE","" },
{"BAUVORHABEN_ORT","" },
{"BAUVORHABEN_STANDORT","" },
{"MESSDATEI","" },
{"DN","" },
{"LAENGE","" },
{"VOLUMEN","" },
{"HALTUNGNR","" },
{"VONSCHACHT","" },
{"BISSCHACHT","" },
{"PRUEFRESULTAT","" },
{"BEMERKUNG","" }
};
public void WriteProtokoll(Inspektionsobjekt inspektionsobjekt, uint prüfungsnummer)
{
inspObjekt = inspektionsobjekt;
this.prüfungsnummer = (int)prüfungsnummer;
this.targetFile = string.Format("{0}_{1}.txt",inspObjekt.Objektname);
}
void ReadVorlage() {
content = File.ReadAllLines("./vorlage.txt",Encoding.Default);
}
string getPrüfnummer() {
string[] pruefung = inspObjekt.PressureTests[prüfungsnummer].prüfdatum.Split('.');
return string.Format("{0}{1}{2}-{3}", pruefung[2], pruefung[1], pruefung[0]);
}
double getPruefVolumen() {
double durchmesser = ((double)inspObjekt.Durchmesser / 2)/1000;
double laenge = (double)inspObjekt.ObjektLänge;
double Volumen = Math.PI * (durchmesser * durchmesser) * laenge;
Volumen = Math.Round(Volumen, 3);
return Volumen;
}
void Ersetzen() {
hashtable["DATUM"] = inspObjekt.PressureTests[prüfungsnummer].prüfdatum;
hashtable["PRUEFNR"] = getPrüfnummer();
hashtable["DN"] = inspObjekt.Durchmesser;
hashtable["LAENGE"] = inspObjekt.ObjektLänge;
hashtable["VOLUMEN"] = getPruefVolumen();
hashtable["AUFTRAGGEBER_NAME"] = inspObjekt.Bauvorhaben.Auftraggeber.Name;
hashtable["AUFTRAGGEBER_STRASSE"] = inspObjekt.Bauvorhaben.Auftraggeber.Strasse;
hashtable["AUFTRAGGEBER_ORT"] = inspObjekt.Bauvorhaben.Auftraggeber.Ort;
hashtable["AUFTRAGGEBER_TEL"] = inspObjekt.Bauvorhaben.Auftraggeber.Tel;
hashtable["VONSCHACHT"] = inspObjekt.ObereSchacht;
hashtable["BISSCHACHT"] = inspObjekt.UntereSchacht;
hashtable["PROJEKTNR"] = "000";//Projektnummer;
hashtable["HALTUNGNR"] = inspObjekt.Objektname != null ? inspObjekt.Objektname : inspObjekt.ObereSchacht;
hashtable["MESSDATEI"] = inspObjekt.Objektname != null ? inspObjekt.Objektname : inspObjekt.ObereSchacht;
hashtable["BAUVORHABEN_STRASSE"] = inspObjekt.Bauvorhaben.Strasse;
hashtable["BAUVORHABEN_ORT"] = inspObjekt.Bauvorhaben.Ort;
hashtable["BAUVORHABEN_STANDORT"] = inspObjekt.Bauvorhaben.Strasse;
hashtable["BEMERKUNG"] = inspObjekt.Bemerkung;
hashtable["PRUEFRESULTAT"] = inspObjekt.PressureTests[prüfungsnummer].Bestanden ? "Prüfung Bestanden" : "Prüfung N I C H T Bestanden";
}
void WriteFile() {
string zeile;
for(int i = 0; i < content.Length; i++) {
zeile = content[i];
if(zeile.Contains("{")) {
int start = zeile.IndexOf("{");
int ende = zeile.IndexOf("}");
string cmd = zeile.Substring(start+1,(ende-start) -1);
if(hashtable.ContainsKey(cmd)) {
string rep = "{"+cmd+"}";
string n = zeile.Replace(rep,hashtable[cmd].ToString());
zeile = n;
} else {
if(cmd.StartsWith("@")) {
string n = "";
foreach(MeasureData data in inspObjekt.PressureTests[prüfungsnummer].Measuredatas) {
n = string.Format("{0}{1}\r\n",n,data.ToString());
}
zeile = n;
}
}
}
newFile.Add(zeile);
}
File.WriteAllLines(targetFile,FileConverter(newFile),Encoding.Default);
}
string[] FileConverter(ArrayList content) {
string[] result = new string[content.Count];
int counter = 0;
foreach(var x in content) {
string c = (string)x;
result[counter] = c;
counter++;
}
return result;
}
}
}