Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Data;
- using System.Data.SqlClient;
- using System.IO;
- using System.Windows.Forms;
- namespace SynVation_Vergleichstool
- {
- public partial class SynVationVergleichstool : Form
- {
- private OpenFileDialog _dialog;
- private string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
- private string connectionstring = @"Data Source=localhost;Initial Catalog=Telefonabgleich CSV Tool;Integrated Security=True";
- private int pos_air = 0;
- private int pos_telekom = 0;
- private int pos_haustelefon = 0;
- private string anrufer_get = "";
- private string anrufer_air = "";
- private SqlCommand cmd;
- private SqlConnection con;
- public SynVationVergleichstool() => InitializeComponent();
- private void InitOpenFileDialog() => _dialog = new OpenFileDialog
- {
- DefaultExt = ".txt",
- Filter = "Comma Seperated (*.txt)|*.txt"
- };
- private void SetText(TextBox box, string @default = "") =>
- box.Text = (_dialog.ShowDialog() == DialogResult.OK)
- ? _dialog.FileName
- : @default;
- private void search_airspeed_Click(object sender, EventArgs e) => SetText(pfad_airspeed);
- private void search_get_Click(object sender, EventArgs e) => SetText(pfad_get);
- private void search_telekom_Click(object sender, EventArgs e) => SetText(pfad_telekom);
- private void search_haustelefon_Click(object sender, EventArgs e) => SetText(pfad_haustelefon);
- private void kombinieren_Button_Click(object sender, EventArgs e)
- {
- StreamReader reader_Haustelefon = new StreamReader(Path.Combine(docPath, "Haus_Telefonnummern.txt")/*haustelefon_PfadDatei*/);
- // StreamReader reader_GetDatei = new StreamReader(Path.Combine(docPath, "get_12_2018.txt")/*get_PfadDatei*/);
- StreamReader reader_AirDatei = new StreamReader(Path.Combine(docPath, "airspeed_12_2018.txt")/*air_PfadDatei*/);
- StreamReader reader_Telekomdatei = new StreamReader(Path.Combine(docPath, "telekom_12_2018.txt")/*telekom_PfadDatei*/);
- string[] zeilenget = File.ReadAllLines(pfad_get.Text);
- foreach (string zeile in zeilenget)
- {
- string[] words = zeile.Split(new[] { "\",\"" }, StringSplitOptions.None);
- if (words.Length >= 1)
- {
- // Die einzelnen Dateien aus der Get Datei werden herausgezogen damit ich diese später mit den Daten aus der Telekomdatei vergleichen kann
- string empfänger_Get = words[(int)getstruktur.Empfänger].Trim('"').Replace("+49", "0");/*TrimStart('+').TrimStart('4').TrimStart('9');*/
- string verbunden = words[(int)getstruktur.Verbunden];
- string Datum = words[(int)getstruktur.Datum].Trim('"');
- anrufer_get = "0" + words[(int)getstruktur.Anrufer].Trim('"').TrimStart('+').TrimStart('4').TrimStart('9');
- string[] Datum_Array1 = words[(int)getstruktur.Datum].Trim('"').Split('.');
- string[] uhrzeit1 = words[(int)getstruktur.Uhrzeit1].Trim('"').Split(':');
- string[] uhrzeit2 = words[(int)getstruktur.Uhrzeit2].Trim('"').Split(':');
- string[] uhrzeit3 = words[(int)getstruktur.Uhrzeit3].Trim('"').Split(':');
- string count = words[(int)getstruktur.id].Trim('"');
- string uhrzeit_angerufen = uhrzeit1[0] + ":" + uhrzeit1[1] + ":" + uhrzeit1[2];
- if (uhrzeit2.Length < 2)
- {
- uhrzeit2 = words[(int)getstruktur.Uhrzeit3].Trim('"').Split(':');
- }
- string uhrzeit_angenommen = uhrzeit2[0] + ":" + uhrzeit2[1] + ":" + uhrzeit2[2];
- string uhrzeit_beendet = uhrzeit3[0] + ":" + uhrzeit3[1] + ":" + uhrzeit3[2];
- // eine Datetime erstellt werden um später Datum und Uhrzeit miteinander zu vergleichen
- DateTime uhrzeitget_DT1 = new DateTime(Convert.ToInt32(Datum_Array1[2]), Convert.ToInt32(Datum_Array1[1]), Convert.ToInt32(Datum_Array1[0]),
- Convert.ToInt16(uhrzeit1[0]), Convert.ToInt16(uhrzeit1[1]), Convert.ToInt16(uhrzeit1[2]));
- DateTime uhrzeitget_DT2 = new DateTime(Convert.ToInt32(Datum_Array1[2]), Convert.ToInt32(Datum_Array1[1]), Convert.ToInt32(Datum_Array1[0]),
- Convert.ToInt16(uhrzeit2[0]), Convert.ToInt16(uhrzeit2[1]), Convert.ToInt16(uhrzeit2[2]));
- DateTime uhrzeitget_DT3 = new DateTime(Convert.ToInt32(Datum_Array1[2]), Convert.ToInt32(Datum_Array1[1]), Convert.ToInt32(Datum_Array1[0]),
- Convert.ToInt16(uhrzeit2[0]), Convert.ToInt16(uhrzeit2[1]), Convert.ToInt16(uhrzeit2[2]));
- // desweiteren werden 2 leere Dummies erstellt die später für ein gewisses Zeitfenster bei den Uhrzeiten benötigt werden da diese nicht zu 100 % übereinstimmen
- TimeSpan differenz_get_telekom1 = new TimeSpan(0, 0, 0);
- TimeSpan differenz_get_telekom2 = new TimeSpan(0, 0, 0);
- TimeSpan differenz_get_telekom3 = new TimeSpan(0, 0, 0);
- TimeSpan span = new TimeSpan(0, 4, 0);
- // Hat die Uhrzeit und das Datum übereingestimmt sollen die notwendigen Dateien zum Späteren zusammenfügen zurück gegeben werden.
- var data_get = new Data_Klasse_Get
- {
- anrufer = "0" + words[(int)getstruktur.Anrufer].Trim('"').TrimStart('+').TrimStart('4').TrimStart('9'),
- empfänger = "0" + words[(int)getstruktur.Empfänger].Trim('"').TrimStart('+').TrimStart('4').TrimStart('9'),
- Empty = false
- };
- var air_result = air_getdata(pos_air++, reader_AirDatei, empfänger_Get, uhrzeitget_DT1, uhrzeitget_DT2, uhrzeitget_DT3);
- anrufer_air = air_result.anrufer;
- var telekom_result = telekom_getdata(pos_telekom++, reader_Telekomdatei, empfänger_Get, uhrzeitget_DT1, uhrzeitget_DT2, uhrzeitget_DT3);
- var haustelefon_result = haustelefon_getdata(pos_haustelefon, pfad_haustelefon.Text, anrufer_get);
- string tarif = "Keine Daten";
- string kosten = "Keine Daten";
- string name_anrufer = "Keine Daten";
- string dauer = "0.00";
- string empfänger = data_get.empfänger;
- if (!haustelefon_result.Empty)
- {
- name_anrufer = haustelefon_result.haus_name;
- }
- if (!telekom_result.Empty)
- {
- tarif = telekom_result.tarif;
- dauer = telekom_result.gesprächsdauer;
- kosten = telekom_result.kosten;
- }
- if (air_result.Empty)
- {
- anrufer_air = "Keine Daten";
- }
- using (con = new SqlConnection(connectionstring))
- {
- // Hier wird die ID aus der Datenbank (Tabelle Auswertung) mit der ID aus der Getdatei verglichen. Sind beide gleich soll diese übersprungen werden
- con.Open();
- DataTable table_data = new DataTable();
- SqlCommand checkid = new SqlCommand("SELECT ID FROM Auswertung WHERE ID = @ID;");
- checkid.Parameters.AddWithValue("@ID", count);
- SqlDataAdapter cmd_adapter = new SqlDataAdapter(checkid);
- cmd_adapter.Fill(table_data);
- // SQL Connection in die Tabelle Auswertung in der die Daten übertragen werden sollen
- cmd = new SqlCommand("INSERT INTO Auswertung(ID,Name,Anrufer_Get,Anrufer_Air,Empfaenger,Uhrzeit_angerufen,Uhrzeit_abgenommen,Uhrzeit_beendet,Datum,Dauer,Tarif,Kosten) VALUES (@ID,@Name,@Anrufer_Get,@Anrufer_Air,@Empfaenger,@Uhrzeit_angerufen,@Uhrzeit_abgenommen,@Uhrzeit_beendet,@Datum,@Dauer,@Tarif,@Kosten)", con);
- cmd.Parameters.AddWithValue("@ID", count);
- cmd.Parameters.AddWithValue("@Name", name_anrufer);
- cmd.Parameters.AddWithValue("@Anrufer_Get", anrufer_get);
- cmd.Parameters.AddWithValue("@Anrufer_Air", anrufer_air);
- cmd.Parameters.AddWithValue("@Empfaenger", empfänger);
- cmd.Parameters.AddWithValue("@Datum", Datum);
- cmd.Parameters.AddWithValue("@Uhrzeit_angerufen", uhrzeit_angerufen);
- cmd.Parameters.AddWithValue("@Uhrzeit_abgenommen", uhrzeit_angenommen);
- cmd.Parameters.AddWithValue("@Uhrzeit_beendet", uhrzeit_beendet);
- cmd.Parameters.AddWithValue("@Dauer", dauer);
- cmd.Parameters.AddWithValue("@Tarif", tarif);
- cmd.Parameters.AddWithValue("@Kosten", kosten);
- cmd.ExecuteNonQuery();
- }
- }
- }
- }
- private Data_Klasse_Airspeed air_getdata(long pos, StreamReader reader_AirDatei, string empfänger_get, DateTime getDT1, DateTime getDT2, DateTime getDT3)
- {
- long neuepos = pos;
- reader_AirDatei.DiscardBufferedData();
- reader_AirDatei.BaseStream.Seek(0, System.IO.SeekOrigin.Begin);
- while (reader_AirDatei.EndOfStream == false)
- {
- string buffer_air = reader_AirDatei.ReadLine();
- string[] words = buffer_air.Split(',');
- neuepos++;
- if (words.Length >= 1)
- {
- string[] empfänger_air_array_SIP = words[(int)airspeedstruktur.Empfänger_SIP].Trim('"').Split('/');
- string empfänger_air1 = words[(int)airspeedstruktur.Empfänger].Trim('"');
- string empfänger_air2 = words[(int)airspeedstruktur.Empfänger].Trim('"').TrimStart('0');
- string empfänger_air3 = "";
- empfänger_air2 = "0" + empfänger_air2;
- if (empfänger_air_array_SIP.Length >= 3)
- {
- empfänger_air3 = empfänger_air_array_SIP[2].TrimStart('0');
- empfänger_air3 = "0" + empfänger_air3;
- }
- if (empfänger_get == empfänger_air1 || empfänger_air2 == empfänger_get || empfänger_get == empfänger_air3)
- {
- string DatumUhrzeit1 = words[(int)airspeedstruktur.DatumUndUhrzeit_1].Replace(' ', ',').Replace('-', ',').Trim('"');
- string DatumUhrzeit2 = words[(int)airspeedstruktur.DatumUndUhrzeit_2].Replace(' ', ',').Replace('-', ',').Trim('"');
- string DatumUhrzeit3 = words[(int)airspeedstruktur.DatumUndUhrzeit_3].Replace(' ', ',').Replace('-', ',').Trim('"');
- // Uhrzeit 2 ist nicht immer belegt , so versuche ich so die Fehlermeldung zu vermeiden indem ich falls sie nicht vorhanden ist mit diesem Datum befühle
- if (DatumUhrzeit2.Length <= 2)
- {
- DatumUhrzeit2 = "1980,01,01,00:00:00";
- }
- // Hier werden Arays erstellt aus deren Werten später die DateTimes zu den 3 verschiedenen Uhrzeiten generiert werden soll
- string[] DatumUhrzeitA1 = DatumUhrzeit1.Split(',');
- string[] DatumUhrzeitA2 = DatumUhrzeit2.Split(',');
- string[] DatumUhrzeitA3 = DatumUhrzeit3.Split(',');
- string[] uhrzeitairin1 = DatumUhrzeitA1[3].Split(':');
- string[] uhrzeitairin2 = DatumUhrzeitA2[3].Split(':');
- string[] uhrzeitairin3 = DatumUhrzeitA3[3].Split(':');
- DateTime dateT_uhrzeitair1 = new DateTime(Convert.ToInt32(DatumUhrzeitA1[0]), Convert.ToInt32(DatumUhrzeitA1[1]), Convert.ToInt32(DatumUhrzeitA1[2]),
- Convert.ToInt32(uhrzeitairin1[0]), Convert.ToInt32(uhrzeitairin1[1]), Convert.ToInt32(uhrzeitairin1[2]));
- DateTime dateT_uhrzeitair2 = new DateTime(Convert.ToInt32(DatumUhrzeitA2[0]), Convert.ToInt32(DatumUhrzeitA2[1]), Convert.ToInt32(DatumUhrzeitA2[2]),
- Convert.ToInt32(uhrzeitairin2[0]), Convert.ToInt32(uhrzeitairin2[1]), Convert.ToInt32(uhrzeitairin2[2]));
- DateTime dateT_uhrzeitair3 = new DateTime(Convert.ToInt32(DatumUhrzeitA3[0]), Convert.ToInt32(DatumUhrzeitA3[1]), Convert.ToInt32(DatumUhrzeitA3[2]),
- Convert.ToInt32(uhrzeitairin3[0]), Convert.ToInt32(uhrzeitairin3[1]), Convert.ToInt32(uhrzeitairin3[2]));
- TimeSpan differenz_air_get1 = new TimeSpan(0, 0, 0);
- TimeSpan differenz_air_get2 = new TimeSpan(0, 0, 0);
- TimeSpan differenz_air_get3 = new TimeSpan(0, 0, 0);
- TimeSpan span = new TimeSpan(0, 3, 0);
- // und hier soll wieder von der größeren Uhrzeit die kleinere abgezogen werden. Falls die Differenz kleiner als 10 Sekunden so ist die Übereinstimmung richtig
- if (dateT_uhrzeitair1 > getDT1)
- {
- differenz_air_get1 = dateT_uhrzeitair1 - getDT1;
- }
- if (dateT_uhrzeitair1 < getDT1)
- {
- differenz_air_get1 = getDT1 - dateT_uhrzeitair1;
- }
- if (dateT_uhrzeitair2 > getDT2)
- {
- differenz_air_get2 = dateT_uhrzeitair2 - getDT2;
- }
- if (dateT_uhrzeitair2 < getDT2)
- {
- differenz_air_get2 = getDT2 - dateT_uhrzeitair2;
- }
- if (dateT_uhrzeitair3 > getDT3)
- {
- differenz_air_get3 = dateT_uhrzeitair3 - getDT3;
- }
- if (dateT_uhrzeitair3 < getDT3)
- {
- differenz_air_get3 = getDT3 - dateT_uhrzeitair3;
- }
- // falls die Daten übereinstimmen sollen die gewünschten Informationen aus der Air Datei zurückgegeben werden
- if (differenz_air_get1 <= span || differenz_air_get2 <= span || differenz_air_get3 <= span)
- {
- Data_Klasse_Airspeed data_air = new Data_Klasse_Airspeed
- {
- anrufer = words[(int)airspeedstruktur.Anrufer].Trim('"').TrimStart('+').TrimStart('4').TrimStart('9'),
- pos = neuepos,
- Empty = false
- };
- return data_air;
- }
- }
- }
- }
- Data_Klasse_Airspeed data_air1 = new Data_Klasse_Airspeed
- {
- Empty = true
- };
- return data_air1;
- }
- private Data_Klasse_Telekom telekom_getdata(string path, string empfänger_get, DateTime getDT1, DateTime getDT2, DateTime getDT3)
- {
- Data_Klasse_Telekom data_telekom = new Data_Klasse_Telekom
- {
- Empty = true
- };
- string[] lines = File.ReadAllLines(path);
- foreach (string line in lines)
- {
- string[] words = line.Split(';');
- if (words.Length >= 8)
- {
- string empfänger_telekom = words[(int)telekomstruktur.Empfänger];
- string[] uhrzeitanfang_telekom = words[(int)telekomstruktur.Uhrzeit].Split(':');
- string datumtelekom = words[(int)telekomstruktur.Datum];
- string[] datetelekom = words[(int)telekomstruktur.Datum].Split('.');
- string[] uhrzeitanfangtelekom = words[(int)telekomstruktur.Uhrzeit].Split(':');
- string gesprächsdauer = words[(int)telekomstruktur.Gesprächsdauer];
- string kosten = words[(int)telekomstruktur.Kosten];
- if (empfänger_get == empfänger_telekom)
- {
- DateTime TelekomDT = new DateTime(Convert.ToInt32(datetelekom[2]), Convert.ToInt32(datetelekom[1]), Convert.ToInt32(datetelekom[0]),
- Convert.ToInt32(uhrzeitanfangtelekom[0]), Convert.ToInt32(uhrzeitanfangtelekom[1]), Convert.ToInt32(uhrzeitanfangtelekom[2]));
- TimeSpan differenz_telekom_get1 = (TelekomDT > getDT1) ? TelekomDT - getDT1 : getDT1 - TelekomDT;
- TimeSpan differenz_telekom_get2 = (TelekomDT > getDT2) ? TelekomDT - getDT2 : getDT2 - TelekomDT;
- TimeSpan differenz_telekom_get3 = (TelekomDT > getDT3) ? TelekomDT - getDT3 : getDT3 - TelekomDT;
- TimeSpan span = new TimeSpan(0, 4, 0);
- if (differenz_telekom_get1 < span || differenz_telekom_get2 < span || differenz_telekom_get3 < span)
- {
- data_telekom = new Data_Klasse_Telekom
- {
- Datum = words[(int)telekomstruktur.Datum],
- Uhrzeit = words[(int)telekomstruktur.Uhrzeit],
- kosten = words[(int)telekomstruktur.Kosten],
- empfänger = words[(int)telekomstruktur.Empfänger],
- gesprächsdauer = words[(int)telekomstruktur.Gesprächsdauer],
- tarif = words[(int)telekomstruktur.Tarif],
- Empty = false
- };
- break;
- }
- }
- }
- }
- return data_telekom;
- }
- private Data_Klasse_Haustelefon haustelefon_getdata(long pos, string path, string anrufer_get)
- {
- string[] lines = File.ReadAllLines(path);
- var data = new Data_Klasse_Haustelefon
- {
- Empty = true
- };
- foreach (string line in lines)
- {
- string[] words = line.Split(',');
- if (words.Length >= 1 && words[(int)haustelefonstruktur.haustelefonnummer] == anrufer_get)
- {
- data.haus_name = words[(int)haustelefonstruktur.haustelefonname];
- data.pos = ++pos;
- data.Empty = false;
- break;
- }
- }
- return data;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement