Files
XMLParser/XMLProgramm/Program.cs
2021-08-11 21:11:50 +02:00

74 lines
3.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using XMLParser;
namespace XMLProgramm
{
class CSVWriter
{
FileStream handle = null;
public CSVWriter()
{
handle = File.Create("./data.csv");
string WriteHeader = "Filename,Inspektionsdatum,Straßenablaufeanzahl,SonstigeLeitungen,Längenzugabe,Hauptkanallänge";
byte[] bytes = Encoding.UTF8.GetBytes(WriteHeader);
handle.Write(bytes,0,bytes.Length);
}
~CSVWriter()
{
handle.Close();
handle.Dispose();
}
internal void WriteDay(Dictionary<ECalculatedResult, decimal> calculated, List<KanalObjekt> inspektionenAmTag)
{
int anzahlStraßenablaufe = (int)calculated[ECalculatedResult.STRASSENABLAUFANZAHL];
int sonstigeLeitungen = (int)calculated[ECalculatedResult.SONSTIGEANZAHL];
decimal LaengeZulageMeter = calculated[ECalculatedResult.LAENGEZULAGEMETER];
decimal HauptkanalLänge = calculated[ECalculatedResult.HAUPTKANALUMSATZ] / 1.6m;
KanalObjekt last = inspektionenAmTag.Last();
string writeToFile = last.XmlFileName + "," + last.Inspektionsdaten.OptischeInspektion.Inspektionsdatum + ","+anzahlStraßenablaufe+","+sonstigeLeitungen+","+LaengeZulageMeter+","+HauptkanalLänge;
//throw new NotImplementedException();
}
}
class Program
{
static void Main(string[] args)
{
CSVWriter csvWriter = new CSVWriter();
List<KanalObjekt> objekte = new List<KanalObjekt>();
DirectoryInfo info = new DirectoryInfo("./");
FileInfo[] daten = info.GetFiles("*.xml");
foreach(FileInfo aktuell in daten) {
XMLParse ser = new XMLParse(aktuell.FullName);
objekte.AddRange(ser.KanalObjekte);
}
IEnumerable<string> datums = objekte.OrderBy(d => d.Inspektionsdaten.OptischeInspektion.Inspektionstime).Select(x => x.Inspektionsdaten.OptischeInspektion.Inspektionsdatum).Distinct();
decimal gesamt = 0.0m;
//Dictionary<string,decimal> s = CalculateDay(objekte.FindAll(x => x.Inspektionsdaten.OptischeInspektion.Inspektionsdatum.Equals("05.08.2021")));
foreach(string datum in datums) {
List<KanalObjekt> InspektionenAmTag = objekte.FindAll(x => x.Inspektionsdaten.OptischeInspektion.Inspektionsdatum.Equals(datum));
Dictionary<ECalculatedResult,decimal> s = Calculate.CalculateDay(InspektionenAmTag);
csvWriter.WriteDay(s,InspektionenAmTag);
Console.WriteLine("Umsatz am : "+datum + " " + s[ECalculatedResult.GESAMTUMSATZ]);
gesamt +=s[ECalculatedResult.GESAMTUMSATZ];
//if(datum.Equals("05.08.2021")) Debugger.Break();
}
int anzahlTage = datums.Count();
decimal Durchschnitt = gesamt / anzahlTage;
int prognosedays = 63;
Console.WriteLine(string.Format("Tage : {0} \nGesamt umsatz: {1}\nDurchschnitt : {2}\nPrognose für {3} tage {4}",anzahlTage,gesamt,Durchschnitt,prognosedays,prognosedays*Durchschnitt));
}
}
}