diff --git a/PMCProjekt/.vs/PMCProjekt/v17/.suo b/PMCProjekt/.vs/PMCProjekt/v17/.suo index 24c52bf..c9b62f1 100644 Binary files a/PMCProjekt/.vs/PMCProjekt/v17/.suo and b/PMCProjekt/.vs/PMCProjekt/v17/.suo differ diff --git a/PMCProjekt/.vs/PMCProjekt/v17/DocumentLayout.json b/PMCProjekt/.vs/PMCProjekt/v17/DocumentLayout.json index 34527c2..77d7387 100644 --- a/PMCProjekt/.vs/PMCProjekt/v17/DocumentLayout.json +++ b/PMCProjekt/.vs/PMCProjekt/v17/DocumentLayout.json @@ -22,9 +22,9 @@ "Title": "Program.cs", "DocumentMoniker": "C:\\Users\\bib\\Documents\\PMC_Projekt\\PMCProjekt\\PMCProjekt\\Program.cs", "RelativeDocumentMoniker": "PMCProjekt\\Program.cs", - "ToolTip": "C:\\Users\\bib\\Documents\\PMC_Projekt\\PMCProjekt\\PMCProjekt\\Program.cs", - "RelativeToolTip": "PMCProjekt\\Program.cs", - "ViewState": "AQIAAHwAAAAAAAAAAAAQwHsAAAAlAAAA", + "ToolTip": "C:\\Users\\bib\\Documents\\PMC_Projekt\\PMCProjekt\\PMCProjekt\\Program.cs*", + "RelativeToolTip": "PMCProjekt\\Program.cs*", + "ViewState": "AQIAAHMAAAAAAAAAAAAkwHoAAAAAAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-14T09:14:59.548Z", "EditorCaption": "" diff --git a/PMCProjekt/PMCProjekt/Program.cs b/PMCProjekt/PMCProjekt/Program.cs index 31d2522..ead2124 100644 --- a/PMCProjekt/PMCProjekt/Program.cs +++ b/PMCProjekt/PMCProjekt/Program.cs @@ -1,5 +1,4 @@ -using MySql.Data.MySqlClient; -using System; +using System; using System.IO; using System.Text.RegularExpressions; @@ -9,171 +8,82 @@ namespace PMCProjekt { static void Main(string[] args) { - MySqlConnection myconnection; - string meineVerbindungszeichenfolge; - // Kundennummer eingeben - // Console.Write("Bitte geben Sie die Kundennummer ein (z.B. K2-002): "); - //string kundennummer = Console.ReadLine(); - meineVerbindungszeichenfolge = "server=localhost;uid=root;pwd=root;database=import_export"; + Console.Write("Bitte geben Sie die Kundennummer ein (z.B. K2-002): "); + string kundennummer = Console.ReadLine(); - try + // Datei einlesen + string dateiPfad = "C:/Schule/PMC/import_yutani.csv"; + if (File.Exists(dateiPfad)) { - myconnection = new MySqlConnection(meineVerbindungszeichenfolge); - myconnection.Open(); - - // Datei einlesen - string dateiPfad = "C:/Schule/PMC/import_yutani.csv"; - if (File.Exists(dateiPfad)) + using (StreamReader sr = new StreamReader(dateiPfad)) { - using (StreamReader sr = new StreamReader(dateiPfad)) + string zeile; + while ((zeile = sr.ReadLine()) != null) { - string zeile; - while ((zeile = sr.ReadLine()) != null) + // Werte aus der Zeile extrahieren + string[] werte = zeile.Split(','); + if (werte.Length >= 4) { - // Werte aus der Zeile extrahieren - string[] werte = zeile.Split(','); - if (werte.Length >= 4) + string anrede = werte[0]; + string vorname = werte[1]; + string nachname = werte[2]; + string geburtsdatum = werte[3]; + string adresse = werte.Length > 4 ? werte[4] : null; + string plz = werte.Length > 5 ? werte[5] : null; + string stadt = werte.Length > 6 ? werte[6] : null; + string email = werte.Length > 7 ? werte[7] : null; + string telefonnummern = werte.Length > 8 ? werte[8] : null; + + // Daten validieren und ungültige Daten protokollieren + if (!DatenValidieren(anrede, vorname, nachname, geburtsdatum, adresse, plz, stadt, email, telefonnummern)) { - string anrede = werte[0]; - string vorname = werte[1]; - string nachname = werte[2]; - string geburtsdatum = werte[3]; - string adresse = werte.Length > 4 ? werte[4] : null; - string plz = werte.Length > 5 ? werte[5] : null; - string stadt = werte.Length > 6 ? werte[6] : null; - string email = werte.Length > 7 ? werte[7] : null; - string telefonnummern = werte.Length > 8 ? werte[8] : null; - - // Daten validieren - if (DatenValidieren(anrede, vorname, nachname, geburtsdatum, plz, email, telefonnummern)) - { - // Nutzer in die Tabelle 'user' einfügen - // string abfrage = "INSERT INTO user (clientId, genderId, firstname, lastname, birthdate, created) VALUES (@clientId, @genderId, @firstname, @lastname, @birthdate, NOW())"; - // using (MySqlCommand mycommand = new MySqlCommand(abfrage, myconnection)) - // { - // mycommand.Parameters.AddWithValue("@clientId", HoleKundenId(kundennummer)); - // mycommand.Parameters.AddWithValue("@genderId", HoleGeschlechtsId(anrede)); - // mycommand.Parameters.AddWithValue("@firstname", vorname); - // mycommand.Parameters.AddWithValue("@lastname", nachname); - // mycommand.Parameters.AddWithValue("@birthdate", DateTime.ParseExact(geburtsdatum, "dd.MM.yyyy", null)); - - // mycommand.ExecuteNonQuery(); - // } - - // // Adresse in die Tabelle 'address' einfügen - // if (adresse != null || plz != null || stadt != null) - // { - // string adressAbfrage = "INSERT INTO address (userId, street, postalcode, city) VALUES (LAST_INSERT_ID(), @street, @plz, @city)"; - // using (MySqlCommand adressBefehl = new MySqlCommand(adressAbfrage, myconnection)) - // { - // adressBefehl.Parameters.AddWithValue("@street", adresse); - // adressBefehl.Parameters.AddWithValue("@plz", plz); - // adressBefehl.Parameters.AddWithValue("@city", stadt); - - // adressBefehl.ExecuteNonQuery(); - // } - // } - - // // E-Mail in die Tabelle 'email' einfügen - // if (email != null) - // { - // string emailAbfrage = "INSERT INTO email (userId, email) VALUES (LAST_INSERT_ID(), @Email)"; - // using (MySqlCommand emailBefehl = new MySqlCommand(emailAbfrage, myconnection)) - // { - // emailBefehl.Parameters.AddWithValue("@Email", email); - // emailBefehl.ExecuteNonQuery(); - // } - // } - - // // Telefonnummern in die Tabelle 'phone' einfügen - // if (telefonnummern != null) - // { - // string[] telefonNummern = telefonnummern.Split(';'); - // foreach (var telefon in telefonNummern) - // { - // string[] telefonTeile = telefon.Split(' '); - // if (telefonTeile.Length == 2) - // { - // string telefonAbfrage = "INSERT INTO phone (userId, phoneprefix, phonenumber) VALUES (LAST_INSERT_ID(), @phoneprefix, @phonenumber)"; - // using (MySqlCommand telefonBefehl = new MySqlCommand(telefonAbfrage, myconnection)) - // { - // telefonBefehl.Parameters.AddWithValue("@phoneprefix", telefonTeile[0]); - // telefonBefehl.Parameters.AddWithValue("@phonenumber", telefonTeile[1]); - - // telefonBefehl.ExecuteNonQuery(); - // } - // } - // } - // } - } - else - { - // Ungültige Daten protokollieren - ProtokolliereUngueltigeDaten(werte); - } + ProtokolliereUngueltigeDaten(werte); + Console.WriteLine("Ungültige Daten: " + string.Join(",", werte)); } + else + { + Console.WriteLine("Gültige Daten: " + string.Join(",", werte)); + } + } + else + { + // Protokolliere Zeilen mit zu wenigen Datenfeldern + ProtokolliereUngueltigeDaten(werte); + Console.WriteLine("Ungültige Daten (zu wenige Felder): " + string.Join(",", werte)); } } } - else - { - Console.WriteLine("Datei nicht gefunden."); - } - - myconnection.Close(); } - catch (MySqlException ex) + else { - Console.WriteLine("Fehler: " + ex.Message); + Console.WriteLine("Datei nicht gefunden."); } } - // Kunden-ID basierend auf der Kundennummer ermitteln - static int HoleKundenId(string kundennummer) - { - // Kunden-ID zurückgeben basierend auf der Kundennummer - return 1; // Logik hier ersetzen - } - - // Geschlechts-ID basierend auf der Anrede ermitteln - static int HoleGeschlechtsId(string anrede) - { - if (anrede.ToLower() == "herr") return 1; - if (anrede.ToLower() == "frau") return 2; - if (anrede.ToLower() == "divers") return 3; - return 0; // Unbekannt oder nicht angegeben - } - - // Daten validieren - static bool DatenValidieren(string anrede, string vorname, string nachname, string geburtsdatum, string plz, string email, string telefonnummern) + static bool DatenValidieren(string anrede, string vorname, string nachname, string geburtsdatum, string adresse, string plz, string stadt, string email, string telefonnummern) { bool istGueltig = true; // Geburtsdatum validieren - DateTime parsedDate; - if (!DateTime.TryParseExact(geburtsdatum, "dd.MM.yyyy", null, System.Globalization.DateTimeStyles.None, out parsedDate)) + if (!PrüfGeburtstag(geburtsdatum)) { + Console.WriteLine($"Ungültiges Geburtsdatum: {geburtsdatum}"); istGueltig = false; } // E-Mail-Adresse validieren - if (!string.IsNullOrEmpty(email)) + if (!string.IsNullOrEmpty(email) && !PrüfEmail(email)) { - Regex emailRegex = new Regex(@"^[^@\s]+@[^@\s]+\.[^@\s]+$"); - if (!emailRegex.IsMatch(email)) - { - istGueltig = false; - } + Console.WriteLine($"Ungültige E-Mail-Adresse: {email}"); + istGueltig = false; } // Postleitzahl validieren - if (!string.IsNullOrEmpty(plz)) + if (!string.IsNullOrEmpty(plz) && !PrüfPLZ(plz)) { - if (plz.Length != 5 || !int.TryParse(plz, out _)) - { - istGueltig = false; - } + Console.WriteLine($"Ungültige Postleitzahl: {plz}"); + istGueltig = false; } // Telefonnummern validieren @@ -182,12 +92,9 @@ namespace PMCProjekt string[] telefonNummern = telefonnummern.Split(';'); foreach (var telefon in telefonNummern) { - string[] telefonTeile = telefon.Split(' '); - if (telefonTeile.Length != 2 || - telefonTeile[0].Length < 3 || telefonTeile[0].Length > 5 || - telefonTeile[1].Length < 4 || telefonTeile[1].Length > 10 || - !int.TryParse(telefonTeile[0], out _) || !int.TryParse(telefonTeile[1], out _)) + if (!PrüfTelefon(telefon)) { + Console.WriteLine($"Ungültige Telefonnummer: {telefon}"); istGueltig = false; } } @@ -196,10 +103,33 @@ namespace PMCProjekt return istGueltig; } - // Ungültige Daten protokollieren + static bool PrüfGeburtstag(string geburtsdatum) + { + string pattern = @"^\d{4}\-\d{2}\-\d{2}$"; + return Regex.IsMatch(geburtsdatum, pattern); + } + + static bool PrüfEmail(string email) + { + string pattern = @"^[a-z]+\.[a-z]+@[a-z]+\.[a-z]{2,}$"; + return Regex.IsMatch(email, pattern); + } + + static bool PrüfPLZ(string plz) + { + string pattern = @"^[0-9]{5}$"; + return Regex.IsMatch(plz, pattern); + } + + static bool PrüfTelefon(string telefon) + { + string pattern = @"^[0-9]{3,5}\s?[0-9]{4,10}$"; + return Regex.IsMatch(telefon, pattern); + } + static void ProtokolliereUngueltigeDaten(string[] daten) { - string protokollPfad = "C:/Schule/PMC/ungueltige_Daten.txt"; + string protokollPfad = "C:/Schule/PMC/ungueltige_Daten.csv"; using (StreamWriter sw = new StreamWriter(protokollPfad, true)) { sw.WriteLine(string.Join(",", daten)); diff --git a/PMCProjekt/PMCProjekt/obj/Debug/net8.0/PMCProjekt.AssemblyInfo.cs b/PMCProjekt/PMCProjekt/obj/Debug/net8.0/PMCProjekt.AssemblyInfo.cs index d159a58..1c627fa 100644 --- a/PMCProjekt/PMCProjekt/obj/Debug/net8.0/PMCProjekt.AssemblyInfo.cs +++ b/PMCProjekt/PMCProjekt/obj/Debug/net8.0/PMCProjekt.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("PMCProjekt")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ccf519442eacb4415c21da9b808d1323f8d13b0b")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+3ecbf97c766628394acad938d340da68a9d05e5c")] [assembly: System.Reflection.AssemblyProductAttribute("PMCProjekt")] [assembly: System.Reflection.AssemblyTitleAttribute("PMCProjekt")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/PMCProjekt/PMCProjekt/obj/Debug/net8.0/PMCProjekt.AssemblyInfoInputs.cache b/PMCProjekt/PMCProjekt/obj/Debug/net8.0/PMCProjekt.AssemblyInfoInputs.cache index 92d12a6..3dc8954 100644 --- a/PMCProjekt/PMCProjekt/obj/Debug/net8.0/PMCProjekt.AssemblyInfoInputs.cache +++ b/PMCProjekt/PMCProjekt/obj/Debug/net8.0/PMCProjekt.AssemblyInfoInputs.cache @@ -1 +1 @@ -2b86785557cecb37507fb5607216d2388b73f1747577587e3fc6b51529995d44 +d4ca53237659e1a7007941b655e24571191b87dfdcf8a3a5ea0ebb2f5de16263