Advertisement
MBrendecke

Telefon

Apr 17th, 2019
350
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. using System.IO;
  5. using System.Windows.Forms;
  6.  
  7. namespace SynVation_Vergleichstool
  8. {
  9.     public partial class SynVationVergleichstool : Form
  10.     {
  11.         private OpenFileDialog _dialog;
  12.         private string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
  13.         private string connectionstring = @"Data Source=localhost;Initial Catalog=Telefonabgleich CSV Tool;Integrated Security=True";
  14.         private int pos_air = 0;
  15.         private int pos_telekom = 0;
  16.         private int pos_haustelefon = 0;
  17.         private string anrufer_get = "";
  18.         private string anrufer_air = "";
  19.         private SqlCommand cmd;
  20.         private SqlConnection con;
  21.  
  22.         public SynVationVergleichstool() => InitializeComponent();
  23.  
  24.         private void InitOpenFileDialog() => _dialog = new OpenFileDialog
  25.         {
  26.             DefaultExt = ".txt",
  27.             Filter = "Comma Seperated (*.txt)|*.txt"
  28.         };
  29.  
  30.         private void SetText(TextBox box, string @default = "") =>
  31.             box.Text = (_dialog.ShowDialog() == DialogResult.OK)
  32.             ? _dialog.FileName
  33.             : @default;
  34.  
  35.         private void search_airspeed_Click(object sender, EventArgs e) => SetText(pfad_airspeed);
  36.         private void search_get_Click(object sender, EventArgs e) => SetText(pfad_get);
  37.         private void search_telekom_Click(object sender, EventArgs e) => SetText(pfad_telekom);
  38.         private void search_haustelefon_Click(object sender, EventArgs e) => SetText(pfad_haustelefon);
  39.  
  40.         private void kombinieren_Button_Click(object sender, EventArgs e)
  41.         {
  42.             StreamReader reader_Haustelefon = new StreamReader(Path.Combine(docPath, "Haus_Telefonnummern.txt")/*haustelefon_PfadDatei*/);
  43.             // StreamReader reader_GetDatei = new StreamReader(Path.Combine(docPath, "get_12_2018.txt")/*get_PfadDatei*/);
  44.             StreamReader reader_AirDatei = new StreamReader(Path.Combine(docPath, "airspeed_12_2018.txt")/*air_PfadDatei*/);
  45.             StreamReader reader_Telekomdatei = new StreamReader(Path.Combine(docPath, "telekom_12_2018.txt")/*telekom_PfadDatei*/);
  46.  
  47.             string[] zeilenget = File.ReadAllLines(pfad_get.Text);
  48.  
  49.             foreach (string zeile in zeilenget)
  50.             {
  51.                 string[] words = zeile.Split(new[] { "\",\"" }, StringSplitOptions.None);
  52.  
  53.                 if (words.Length >= 1)
  54.                 {
  55.  
  56.                     // Die einzelnen Dateien aus der Get Datei werden herausgezogen damit ich diese später mit den Daten aus der Telekomdatei vergleichen kann
  57.  
  58.  
  59.                     string empfänger_Get = words[(int)getstruktur.Empfänger].Trim('"').Replace("+49", "0");/*TrimStart('+').TrimStart('4').TrimStart('9');*/
  60.  
  61.                     string verbunden = words[(int)getstruktur.Verbunden];
  62.  
  63.  
  64.                     string Datum = words[(int)getstruktur.Datum].Trim('"');
  65.  
  66.                     anrufer_get = "0" + words[(int)getstruktur.Anrufer].Trim('"').TrimStart('+').TrimStart('4').TrimStart('9');
  67.  
  68.  
  69.                     string[] Datum_Array1 = words[(int)getstruktur.Datum].Trim('"').Split('.');
  70.                     string[] uhrzeit1 = words[(int)getstruktur.Uhrzeit1].Trim('"').Split(':');
  71.                     string[] uhrzeit2 = words[(int)getstruktur.Uhrzeit2].Trim('"').Split(':');
  72.                     string[] uhrzeit3 = words[(int)getstruktur.Uhrzeit3].Trim('"').Split(':');
  73.                     string count = words[(int)getstruktur.id].Trim('"');
  74.  
  75.                     string uhrzeit_angerufen = uhrzeit1[0] + ":" + uhrzeit1[1] + ":" + uhrzeit1[2];
  76.  
  77.                     if (uhrzeit2.Length < 2)
  78.                     {
  79.                         uhrzeit2 = words[(int)getstruktur.Uhrzeit3].Trim('"').Split(':');
  80.                     }
  81.  
  82.                     string uhrzeit_angenommen = uhrzeit2[0] + ":" + uhrzeit2[1] + ":" + uhrzeit2[2];
  83.                     string uhrzeit_beendet = uhrzeit3[0] + ":" + uhrzeit3[1] + ":" + uhrzeit3[2];
  84.  
  85.                     // eine Datetime erstellt werden um später Datum und Uhrzeit miteinander zu vergleichen
  86.  
  87.                     DateTime uhrzeitget_DT1 = new DateTime(Convert.ToInt32(Datum_Array1[2]), Convert.ToInt32(Datum_Array1[1]), Convert.ToInt32(Datum_Array1[0]),
  88.                     Convert.ToInt16(uhrzeit1[0]), Convert.ToInt16(uhrzeit1[1]), Convert.ToInt16(uhrzeit1[2]));
  89.  
  90.                     DateTime uhrzeitget_DT2 = new DateTime(Convert.ToInt32(Datum_Array1[2]), Convert.ToInt32(Datum_Array1[1]), Convert.ToInt32(Datum_Array1[0]),
  91.                     Convert.ToInt16(uhrzeit2[0]), Convert.ToInt16(uhrzeit2[1]), Convert.ToInt16(uhrzeit2[2]));
  92.  
  93.                     DateTime uhrzeitget_DT3 = new DateTime(Convert.ToInt32(Datum_Array1[2]), Convert.ToInt32(Datum_Array1[1]), Convert.ToInt32(Datum_Array1[0]),
  94.                     Convert.ToInt16(uhrzeit2[0]), Convert.ToInt16(uhrzeit2[1]), Convert.ToInt16(uhrzeit2[2]));
  95.  
  96.  
  97.                     // 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
  98.  
  99.                     TimeSpan differenz_get_telekom1 = new TimeSpan(0, 0, 0);
  100.                     TimeSpan differenz_get_telekom2 = new TimeSpan(0, 0, 0);
  101.                     TimeSpan differenz_get_telekom3 = new TimeSpan(0, 0, 0);
  102.                     TimeSpan span = new TimeSpan(0, 4, 0);
  103.  
  104.                     // Hat die Uhrzeit und das Datum übereingestimmt sollen die notwendigen Dateien zum Späteren zusammenfügen zurück gegeben werden.
  105.  
  106.                     var data_get = new Data_Klasse_Get
  107.                     {
  108.                         anrufer = "0" + words[(int)getstruktur.Anrufer].Trim('"').TrimStart('+').TrimStart('4').TrimStart('9'),
  109.                         empfänger = "0" + words[(int)getstruktur.Empfänger].Trim('"').TrimStart('+').TrimStart('4').TrimStart('9'),
  110.  
  111.                         Empty = false
  112.                     };
  113.  
  114.                     var air_result = air_getdata(pos_air++, reader_AirDatei, empfänger_Get, uhrzeitget_DT1, uhrzeitget_DT2, uhrzeitget_DT3);
  115.                     anrufer_air = air_result.anrufer;
  116.  
  117.                     var telekom_result = telekom_getdata(pos_telekom++, reader_Telekomdatei, empfänger_Get, uhrzeitget_DT1, uhrzeitget_DT2, uhrzeitget_DT3);
  118.                     var haustelefon_result = haustelefon_getdata(pos_haustelefon, pfad_haustelefon.Text, anrufer_get);
  119.  
  120.                     string tarif = "Keine Daten";
  121.                     string kosten = "Keine Daten";
  122.                     string name_anrufer = "Keine Daten";
  123.                     string dauer = "0.00";
  124.                     string empfänger = data_get.empfänger;
  125.  
  126.                     if (!haustelefon_result.Empty)
  127.                     {
  128.                         name_anrufer = haustelefon_result.haus_name;
  129.                     }
  130.  
  131.                     if (!telekom_result.Empty)
  132.                     {
  133.                         tarif = telekom_result.tarif;
  134.                         dauer = telekom_result.gesprächsdauer;
  135.                         kosten = telekom_result.kosten;
  136.                     }
  137.                     if (air_result.Empty)
  138.                     {
  139.                         anrufer_air = "Keine Daten";
  140.                     }
  141.  
  142.                     using (con = new SqlConnection(connectionstring))
  143.                     {
  144.                         // Hier wird die ID aus der Datenbank (Tabelle Auswertung) mit der ID aus der Getdatei verglichen. Sind beide gleich soll diese übersprungen werden                    
  145.                         con.Open();
  146.                         DataTable table_data = new DataTable();
  147.                         SqlCommand checkid = new SqlCommand("SELECT ID FROM Auswertung WHERE ID = @ID;");
  148.                         checkid.Parameters.AddWithValue("@ID", count);
  149.                         SqlDataAdapter cmd_adapter = new SqlDataAdapter(checkid);
  150.                         cmd_adapter.Fill(table_data);
  151.  
  152.                         // SQL Connection in die Tabelle Auswertung in der die Daten übertragen werden sollen
  153.  
  154.                         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);
  155.  
  156.                         cmd.Parameters.AddWithValue("@ID", count);
  157.                         cmd.Parameters.AddWithValue("@Name", name_anrufer);
  158.                         cmd.Parameters.AddWithValue("@Anrufer_Get", anrufer_get);
  159.                         cmd.Parameters.AddWithValue("@Anrufer_Air", anrufer_air);
  160.                         cmd.Parameters.AddWithValue("@Empfaenger", empfänger);
  161.                         cmd.Parameters.AddWithValue("@Datum", Datum);
  162.                         cmd.Parameters.AddWithValue("@Uhrzeit_angerufen", uhrzeit_angerufen);
  163.                         cmd.Parameters.AddWithValue("@Uhrzeit_abgenommen", uhrzeit_angenommen);
  164.                         cmd.Parameters.AddWithValue("@Uhrzeit_beendet", uhrzeit_beendet);
  165.                         cmd.Parameters.AddWithValue("@Dauer", dauer);
  166.                         cmd.Parameters.AddWithValue("@Tarif", tarif);
  167.                         cmd.Parameters.AddWithValue("@Kosten", kosten);
  168.  
  169.                         cmd.ExecuteNonQuery();
  170.                     }
  171.                 }
  172.             }
  173.  
  174.         }
  175.  
  176.         private Data_Klasse_Airspeed air_getdata(long pos, StreamReader reader_AirDatei, string empfänger_get, DateTime getDT1, DateTime getDT2, DateTime getDT3)
  177.         {
  178.             long neuepos = pos;
  179.  
  180.             reader_AirDatei.DiscardBufferedData();
  181.             reader_AirDatei.BaseStream.Seek(0, System.IO.SeekOrigin.Begin);
  182.  
  183.             while (reader_AirDatei.EndOfStream == false)
  184.             {
  185.  
  186.                 string buffer_air = reader_AirDatei.ReadLine();
  187.                 string[] words = buffer_air.Split(',');
  188.                 neuepos++;
  189.  
  190.                 if (words.Length >= 1)
  191.                 {
  192.  
  193.                     string[] empfänger_air_array_SIP = words[(int)airspeedstruktur.Empfänger_SIP].Trim('"').Split('/');
  194.  
  195.                     string empfänger_air1 = words[(int)airspeedstruktur.Empfänger].Trim('"');
  196.                     string empfänger_air2 = words[(int)airspeedstruktur.Empfänger].Trim('"').TrimStart('0');
  197.                     string empfänger_air3 = "";
  198.                     empfänger_air2 = "0" + empfänger_air2;
  199.  
  200.  
  201.                     if (empfänger_air_array_SIP.Length >= 3)
  202.                     {
  203.                         empfänger_air3 = empfänger_air_array_SIP[2].TrimStart('0');
  204.                         empfänger_air3 = "0" + empfänger_air3;
  205.                     }
  206.  
  207.                     if (empfänger_get == empfänger_air1 || empfänger_air2 == empfänger_get || empfänger_get == empfänger_air3)
  208.                     {
  209.                         string DatumUhrzeit1 = words[(int)airspeedstruktur.DatumUndUhrzeit_1].Replace(' ', ',').Replace('-', ',').Trim('"');
  210.                         string DatumUhrzeit2 = words[(int)airspeedstruktur.DatumUndUhrzeit_2].Replace(' ', ',').Replace('-', ',').Trim('"');
  211.                         string DatumUhrzeit3 = words[(int)airspeedstruktur.DatumUndUhrzeit_3].Replace(' ', ',').Replace('-', ',').Trim('"');
  212.  
  213.  
  214.                         // 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
  215.  
  216.                         if (DatumUhrzeit2.Length <= 2)
  217.                         {
  218.                             DatumUhrzeit2 = "1980,01,01,00:00:00";
  219.                         }
  220.  
  221.                         // Hier werden Arays erstellt aus deren Werten später die DateTimes zu den 3 verschiedenen Uhrzeiten generiert werden soll
  222.  
  223.                         string[] DatumUhrzeitA1 = DatumUhrzeit1.Split(',');
  224.                         string[] DatumUhrzeitA2 = DatumUhrzeit2.Split(',');
  225.                         string[] DatumUhrzeitA3 = DatumUhrzeit3.Split(',');
  226.  
  227.                         string[] uhrzeitairin1 = DatumUhrzeitA1[3].Split(':');
  228.                         string[] uhrzeitairin2 = DatumUhrzeitA2[3].Split(':');
  229.                         string[] uhrzeitairin3 = DatumUhrzeitA3[3].Split(':');
  230.  
  231.                         DateTime dateT_uhrzeitair1 = new DateTime(Convert.ToInt32(DatumUhrzeitA1[0]), Convert.ToInt32(DatumUhrzeitA1[1]), Convert.ToInt32(DatumUhrzeitA1[2]),
  232.                         Convert.ToInt32(uhrzeitairin1[0]), Convert.ToInt32(uhrzeitairin1[1]), Convert.ToInt32(uhrzeitairin1[2]));
  233.  
  234.                         DateTime dateT_uhrzeitair2 = new DateTime(Convert.ToInt32(DatumUhrzeitA2[0]), Convert.ToInt32(DatumUhrzeitA2[1]), Convert.ToInt32(DatumUhrzeitA2[2]),
  235.                         Convert.ToInt32(uhrzeitairin2[0]), Convert.ToInt32(uhrzeitairin2[1]), Convert.ToInt32(uhrzeitairin2[2]));
  236.  
  237.                         DateTime dateT_uhrzeitair3 = new DateTime(Convert.ToInt32(DatumUhrzeitA3[0]), Convert.ToInt32(DatumUhrzeitA3[1]), Convert.ToInt32(DatumUhrzeitA3[2]),
  238.                         Convert.ToInt32(uhrzeitairin3[0]), Convert.ToInt32(uhrzeitairin3[1]), Convert.ToInt32(uhrzeitairin3[2]));
  239.  
  240.                         TimeSpan differenz_air_get1 = new TimeSpan(0, 0, 0);
  241.                         TimeSpan differenz_air_get2 = new TimeSpan(0, 0, 0);
  242.                         TimeSpan differenz_air_get3 = new TimeSpan(0, 0, 0);
  243.                         TimeSpan span = new TimeSpan(0, 3, 0);
  244.  
  245.                         // 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
  246.  
  247.                         if (dateT_uhrzeitair1 > getDT1)
  248.                         {
  249.                             differenz_air_get1 = dateT_uhrzeitair1 - getDT1;
  250.                         }
  251.                         if (dateT_uhrzeitair1 < getDT1)
  252.                         {
  253.                             differenz_air_get1 = getDT1 - dateT_uhrzeitair1;
  254.                         }
  255.  
  256.                         if (dateT_uhrzeitair2 > getDT2)
  257.                         {
  258.                             differenz_air_get2 = dateT_uhrzeitair2 - getDT2;
  259.                         }
  260.                         if (dateT_uhrzeitair2 < getDT2)
  261.                         {
  262.                             differenz_air_get2 = getDT2 - dateT_uhrzeitair2;
  263.                         }
  264.  
  265.                         if (dateT_uhrzeitair3 > getDT3)
  266.                         {
  267.                             differenz_air_get3 = dateT_uhrzeitair3 - getDT3;
  268.                         }
  269.                         if (dateT_uhrzeitair3 < getDT3)
  270.                         {
  271.                             differenz_air_get3 = getDT3 - dateT_uhrzeitair3;
  272.                         }
  273.  
  274.                         // falls die Daten übereinstimmen sollen die gewünschten Informationen aus der Air Datei zurückgegeben werden
  275.  
  276.                         if (differenz_air_get1 <= span || differenz_air_get2 <= span || differenz_air_get3 <= span)
  277.                         {
  278.                             Data_Klasse_Airspeed data_air = new Data_Klasse_Airspeed
  279.                             {
  280.                                 anrufer = words[(int)airspeedstruktur.Anrufer].Trim('"').TrimStart('+').TrimStart('4').TrimStart('9'),
  281.                                 pos = neuepos,
  282.                                 Empty = false
  283.                             };
  284.  
  285.                             return data_air;
  286.                         }
  287.                     }
  288.                 }
  289.             }
  290.  
  291.             Data_Klasse_Airspeed data_air1 = new Data_Klasse_Airspeed
  292.             {
  293.                 Empty = true
  294.             };
  295.             return data_air1;
  296.         }
  297.  
  298.         private Data_Klasse_Telekom telekom_getdata(string path, string empfänger_get, DateTime getDT1, DateTime getDT2, DateTime getDT3)
  299.         {
  300.             Data_Klasse_Telekom data_telekom = new Data_Klasse_Telekom
  301.             {
  302.                 Empty = true
  303.             };
  304.  
  305.             string[] lines = File.ReadAllLines(path);
  306.             foreach (string line in lines)
  307.             {
  308.                 string[] words = line.Split(';');
  309.                 if (words.Length >= 8)
  310.                 {
  311.                     string empfänger_telekom = words[(int)telekomstruktur.Empfänger];
  312.  
  313.                     string[] uhrzeitanfang_telekom = words[(int)telekomstruktur.Uhrzeit].Split(':');
  314.                     string datumtelekom = words[(int)telekomstruktur.Datum];
  315.                     string[] datetelekom = words[(int)telekomstruktur.Datum].Split('.');
  316.                     string[] uhrzeitanfangtelekom = words[(int)telekomstruktur.Uhrzeit].Split(':');
  317.                     string gesprächsdauer = words[(int)telekomstruktur.Gesprächsdauer];
  318.                     string kosten = words[(int)telekomstruktur.Kosten];
  319.  
  320.                     if (empfänger_get == empfänger_telekom)
  321.                     {
  322.                         DateTime TelekomDT = new DateTime(Convert.ToInt32(datetelekom[2]), Convert.ToInt32(datetelekom[1]), Convert.ToInt32(datetelekom[0]),
  323.                             Convert.ToInt32(uhrzeitanfangtelekom[0]), Convert.ToInt32(uhrzeitanfangtelekom[1]), Convert.ToInt32(uhrzeitanfangtelekom[2]));
  324.  
  325.  
  326.                         TimeSpan differenz_telekom_get1 = (TelekomDT > getDT1) ? TelekomDT - getDT1 : getDT1 - TelekomDT;
  327.                         TimeSpan differenz_telekom_get2 = (TelekomDT > getDT2) ? TelekomDT - getDT2 : getDT2 - TelekomDT;
  328.                         TimeSpan differenz_telekom_get3 = (TelekomDT > getDT3) ? TelekomDT - getDT3 : getDT3 - TelekomDT;
  329.                         TimeSpan span = new TimeSpan(0, 4, 0);
  330.  
  331.                         if (differenz_telekom_get1 < span || differenz_telekom_get2 < span || differenz_telekom_get3 < span)
  332.                         {
  333.                             data_telekom = new Data_Klasse_Telekom
  334.                             {
  335.                                 Datum = words[(int)telekomstruktur.Datum],
  336.                                 Uhrzeit = words[(int)telekomstruktur.Uhrzeit],
  337.                                 kosten = words[(int)telekomstruktur.Kosten],
  338.                                 empfänger = words[(int)telekomstruktur.Empfänger],
  339.                                 gesprächsdauer = words[(int)telekomstruktur.Gesprächsdauer],
  340.                                 tarif = words[(int)telekomstruktur.Tarif],
  341.                                 Empty = false
  342.                             };
  343.  
  344.                             break;
  345.                         }
  346.                     }
  347.                 }
  348.             }
  349.  
  350.             return data_telekom;
  351.         }
  352.  
  353.         private Data_Klasse_Haustelefon haustelefon_getdata(long pos, string path, string anrufer_get)
  354.         {
  355.             string[] lines = File.ReadAllLines(path);
  356.  
  357.             var data = new Data_Klasse_Haustelefon
  358.             {
  359.                 Empty = true
  360.             };
  361.  
  362.             foreach (string line in lines)
  363.             {
  364.                 string[] words = line.Split(',');
  365.                 if (words.Length >= 1 && words[(int)haustelefonstruktur.haustelefonnummer] == anrufer_get)
  366.                 {
  367.                     data.haus_name = words[(int)haustelefonstruktur.haustelefonname];
  368.                     data.pos = ++pos;
  369.                     data.Empty = false;
  370.                     break;
  371.                 }
  372.             }
  373.  
  374.             return data;
  375.         }
  376.     }
  377. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement