fast ferig
This commit is contained in:
		
										
											Binary file not shown.
										
									
								
							@@ -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": ""
 | 
			
		||||
 
 | 
			
		||||
@@ -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));
 | 
			
		||||
 
 | 
			
		||||
@@ -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")]
 | 
			
		||||
 
 | 
			
		||||
@@ -1 +1 @@
 | 
			
		||||
2b86785557cecb37507fb5607216d2388b73f1747577587e3fc6b51529995d44
 | 
			
		||||
d4ca53237659e1a7007941b655e24571191b87dfdcf8a3a5ea0ebb2f5de16263
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user