läuft noch nicht ganz muss noch überprüft werden
This commit is contained in:
parent
ccf519442e
commit
3ecbf97c76
Binary file not shown.
@ -24,7 +24,7 @@
|
|||||||
"RelativeDocumentMoniker": "PMCProjekt\\Program.cs",
|
"RelativeDocumentMoniker": "PMCProjekt\\Program.cs",
|
||||||
"ToolTip": "C:\\Users\\bib\\Documents\\PMC_Projekt\\PMCProjekt\\PMCProjekt\\Program.cs",
|
"ToolTip": "C:\\Users\\bib\\Documents\\PMC_Projekt\\PMCProjekt\\PMCProjekt\\Program.cs",
|
||||||
"RelativeToolTip": "PMCProjekt\\Program.cs",
|
"RelativeToolTip": "PMCProjekt\\Program.cs",
|
||||||
"ViewState": "AQIAAA0AAAAAAAAAAAAQwBcAAAAyAAAA",
|
"ViewState": "AQIAAHwAAAAAAAAAAAAQwHsAAAAlAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
"WhenOpened": "2024-06-14T09:14:59.548Z",
|
"WhenOpened": "2024-06-14T09:14:59.548Z",
|
||||||
"EditorCaption": ""
|
"EditorCaption": ""
|
||||||
|
@ -5,40 +5,25 @@ using System.Text.RegularExpressions;
|
|||||||
|
|
||||||
namespace PMCProjekt
|
namespace PMCProjekt
|
||||||
{
|
{
|
||||||
internal class Program
|
internal class Programm
|
||||||
{
|
{
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
if (args.Length != 1)
|
MySqlConnection myconnection;
|
||||||
{
|
string meineVerbindungszeichenfolge;
|
||||||
Console.WriteLine("Verwendung: PMCProjekt <CSV-Dateipfad>");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
string dateiPfad = args[0];
|
// Kundennummer eingeben
|
||||||
|
// Console.Write("Bitte geben Sie die Kundennummer ein (z.B. K2-002): ");
|
||||||
Console.Write("Bitte geben Sie die Kundennummer ein (z.B. K2-002): ");
|
//string kundennummer = Console.ReadLine();
|
||||||
string kundennummer = Console.ReadLine();
|
meineVerbindungszeichenfolge = "server=localhost;uid=root;pwd=root;database=import_export";
|
||||||
|
|
||||||
MySqlConnection myConnection;
|
|
||||||
string myConnectionString;
|
|
||||||
|
|
||||||
// Verbindung zur Datenbank herstellen
|
|
||||||
myConnectionString = "server=localhost;uid=root;pwd=root;database=import_export";
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
myConnection = new MySqlConnection(myConnectionString);
|
myconnection = new MySqlConnection(meineVerbindungszeichenfolge);
|
||||||
myConnection.Open();
|
myconnection.Open();
|
||||||
|
|
||||||
int clientId = GetClientId(myConnection, kundennummer);
|
// Datei einlesen
|
||||||
if (clientId == -1)
|
string dateiPfad = "C:/Schule/PMC/import_yutani.csv";
|
||||||
{
|
|
||||||
Console.WriteLine("Kundennummer nicht gefunden.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Überprüfen, ob die Datei existiert
|
|
||||||
if (File.Exists(dateiPfad))
|
if (File.Exists(dateiPfad))
|
||||||
{
|
{
|
||||||
using (StreamReader sr = new StreamReader(dateiPfad))
|
using (StreamReader sr = new StreamReader(dateiPfad))
|
||||||
@ -46,9 +31,8 @@ namespace PMCProjekt
|
|||||||
string zeile;
|
string zeile;
|
||||||
while ((zeile = sr.ReadLine()) != null)
|
while ((zeile = sr.ReadLine()) != null)
|
||||||
{
|
{
|
||||||
|
// Werte aus der Zeile extrahieren
|
||||||
string[] werte = zeile.Split(',');
|
string[] werte = zeile.Split(',');
|
||||||
|
|
||||||
// Überprüfen, ob mindestens Anrede, Vorname, Nachname und Geburtsdatum vorhanden sind
|
|
||||||
if (werte.Length >= 4)
|
if (werte.Length >= 4)
|
||||||
{
|
{
|
||||||
string anrede = werte[0];
|
string anrede = werte[0];
|
||||||
@ -61,47 +45,72 @@ namespace PMCProjekt
|
|||||||
string email = werte.Length > 7 ? werte[7] : null;
|
string email = werte.Length > 7 ? werte[7] : null;
|
||||||
string telefonnummern = werte.Length > 8 ? werte[8] : null;
|
string telefonnummern = werte.Length > 8 ? werte[8] : null;
|
||||||
|
|
||||||
// Validieren der Benutzerdaten
|
// Daten validieren
|
||||||
if (ValidateUser(anrede, vorname, nachname, geburtsdatum, adresse, plz, stadt, email, telefonnummern))
|
if (DatenValidieren(anrede, vorname, nachname, geburtsdatum, plz, email, telefonnummern))
|
||||||
{
|
{
|
||||||
// Überprüfen, ob der Benutzer bereits für diesen Kunden existiert
|
// Nutzer in die Tabelle 'user' einfügen
|
||||||
if (!IsUserDuplicate(myConnection, vorname, nachname, clientId))
|
// 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))
|
||||||
// Benutzer in die Tabelle "user" einfügen
|
// {
|
||||||
int userId = InsertUser(myConnection, clientId, anrede, vorname, nachname, geburtsdatum);
|
// 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));
|
||||||
|
|
||||||
// Adresse in die Tabelle "address" einfügen
|
// mycommand.ExecuteNonQuery();
|
||||||
if (!string.IsNullOrEmpty(adresse) && !string.IsNullOrEmpty(plz) && !string.IsNullOrEmpty(stadt))
|
// }
|
||||||
{
|
|
||||||
InsertAddress(myConnection, userId, adresse, plz, stadt);
|
|
||||||
}
|
|
||||||
|
|
||||||
// E-Mail in die Tabelle "email" einfügen
|
// // Adresse in die Tabelle 'address' einfügen
|
||||||
if (!string.IsNullOrEmpty(email))
|
// if (adresse != null || plz != null || stadt != null)
|
||||||
{
|
// {
|
||||||
InsertEmail(myConnection, userId, email);
|
// 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);
|
||||||
|
|
||||||
// Telefonnummern in die Tabelle "phone" einfügen
|
// adressBefehl.ExecuteNonQuery();
|
||||||
if (!string.IsNullOrEmpty(telefonnummern))
|
// }
|
||||||
{
|
// }
|
||||||
string[] telefonListe = telefonnummern.Split(';');
|
|
||||||
foreach (string telefon in telefonListe)
|
// // E-Mail in die Tabelle 'email' einfügen
|
||||||
{
|
// if (email != null)
|
||||||
InsertPhone(myConnection, userId, telefon);
|
// {
|
||||||
}
|
// string emailAbfrage = "INSERT INTO email (userId, email) VALUES (LAST_INSERT_ID(), @Email)";
|
||||||
}
|
// using (MySqlCommand emailBefehl = new MySqlCommand(emailAbfrage, myconnection))
|
||||||
}
|
// {
|
||||||
else
|
// emailBefehl.Parameters.AddWithValue("@Email", email);
|
||||||
{
|
// emailBefehl.ExecuteNonQuery();
|
||||||
// Protokollierung von Duplikaten
|
// }
|
||||||
LogInvalidUser(vorname, nachname, "Benutzer ist bereits für diesen Kunden vorhanden");
|
// }
|
||||||
}
|
|
||||||
|
// // 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
|
else
|
||||||
{
|
{
|
||||||
// Protokollierung von ungültigen Daten
|
// Ungültige Daten protokollieren
|
||||||
LogInvalidUser(vorname, nachname, "Validierung fehlgeschlagen");
|
ProtokolliereUngueltigeDaten(werte);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -112,7 +121,7 @@ namespace PMCProjekt
|
|||||||
Console.WriteLine("Datei nicht gefunden.");
|
Console.WriteLine("Datei nicht gefunden.");
|
||||||
}
|
}
|
||||||
|
|
||||||
myConnection.Close();
|
myconnection.Close();
|
||||||
}
|
}
|
||||||
catch (MySqlException ex)
|
catch (MySqlException ex)
|
||||||
{
|
{
|
||||||
@ -120,108 +129,80 @@ namespace PMCProjekt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Funktion zur Ermittlung der ClientId anhand der Kundennummer
|
// Kunden-ID basierend auf der Kundennummer ermitteln
|
||||||
static int GetClientId(MySqlConnection connection, string clientNumber)
|
static int HoleKundenId(string kundennummer)
|
||||||
{
|
{
|
||||||
string query = "SELECT id FROM client WHERE clientno = @clientNumber";
|
// Kunden-ID zurückgeben basierend auf der Kundennummer
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, connection))
|
return 1; // Logik hier ersetzen
|
||||||
{
|
|
||||||
cmd.Parameters.AddWithValue("@clientNumber", clientNumber);
|
|
||||||
object result = cmd.ExecuteScalar();
|
|
||||||
return result != null ? Convert.ToInt32(result) : -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Funktion zur Validierung der Benutzerdaten
|
// Geschlechts-ID basierend auf der Anrede ermitteln
|
||||||
static bool ValidateUser(string anrede, string vorname, string nachname, string geburtsdatum, string adresse, string plz, string stadt, string email, string telefonnummern)
|
static int HoleGeschlechtsId(string anrede)
|
||||||
{
|
{
|
||||||
if (!Regex.IsMatch(geburtsdatum, @"^\d{2}\.\d{2}\.\d{4}$")) return false;
|
if (anrede.ToLower() == "herr") return 1;
|
||||||
if (!string.IsNullOrEmpty(email) && !Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$")) return false;
|
if (anrede.ToLower() == "frau") return 2;
|
||||||
if (!string.IsNullOrEmpty(plz) && !Regex.IsMatch(plz, @"^\d{5}$")) return false;
|
if (anrede.ToLower() == "divers") return 3;
|
||||||
if (!string.IsNullOrEmpty(telefonnummern))
|
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)
|
||||||
|
{
|
||||||
|
bool istGueltig = true;
|
||||||
|
|
||||||
|
// Geburtsdatum validieren
|
||||||
|
DateTime parsedDate;
|
||||||
|
if (!DateTime.TryParseExact(geburtsdatum, "dd.MM.yyyy", null, System.Globalization.DateTimeStyles.None, out parsedDate))
|
||||||
{
|
{
|
||||||
string[] telefonListe = telefonnummern.Split(';');
|
istGueltig = false;
|
||||||
foreach (string telefon in telefonListe)
|
}
|
||||||
|
|
||||||
|
// E-Mail-Adresse validieren
|
||||||
|
if (!string.IsNullOrEmpty(email))
|
||||||
|
{
|
||||||
|
Regex emailRegex = new Regex(@"^[^@\s]+@[^@\s]+\.[^@\s]+$");
|
||||||
|
if (!emailRegex.IsMatch(email))
|
||||||
{
|
{
|
||||||
if (!Regex.IsMatch(telefon, @"^\d{3,5}-\d{4,10}$")) return false;
|
istGueltig = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Funktion zur Überprüfung von Duplikaten
|
// Postleitzahl validieren
|
||||||
static bool IsUserDuplicate(MySqlConnection connection, string vorname, string nachname, int clientId)
|
if (!string.IsNullOrEmpty(plz))
|
||||||
{
|
|
||||||
string query = "SELECT COUNT(*) FROM user WHERE firstname = @vorname AND lastname = @nachname AND clientId = @clientId";
|
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, connection))
|
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@vorname", vorname);
|
if (plz.Length != 5 || !int.TryParse(plz, out _))
|
||||||
cmd.Parameters.AddWithValue("@nachname", nachname);
|
{
|
||||||
cmd.Parameters.AddWithValue("@clientId", clientId);
|
istGueltig = false;
|
||||||
return Convert.ToInt32(cmd.ExecuteScalar()) > 0;
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Funktion zum Einfügen eines Benutzers
|
// Telefonnummern validieren
|
||||||
static int InsertUser(MySqlConnection connection, int clientId, string anrede, string vorname, string nachname, string geburtsdatum)
|
if (!string.IsNullOrEmpty(telefonnummern))
|
||||||
{
|
|
||||||
string query = "INSERT INTO user (clientId, firstname, lastname, birthdate) VALUES (@clientId, @vorname, @nachname, @geburtsdatum)";
|
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, connection))
|
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@clientId", clientId);
|
string[] telefonNummern = telefonnummern.Split(';');
|
||||||
cmd.Parameters.AddWithValue("@vorname", vorname);
|
foreach (var telefon in telefonNummern)
|
||||||
cmd.Parameters.AddWithValue("@nachname", nachname);
|
{
|
||||||
cmd.Parameters.AddWithValue("@geburtsdatum", DateTime.ParseExact(geburtsdatum, "dd.MM.yyyy", null));
|
string[] telefonTeile = telefon.Split(' ');
|
||||||
cmd.ExecuteNonQuery();
|
if (telefonTeile.Length != 2 ||
|
||||||
return (int)cmd.LastInsertedId;
|
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 _))
|
||||||
|
{
|
||||||
|
istGueltig = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return istGueltig;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Funktion zum Einfügen einer Adresse
|
// Ungültige Daten protokollieren
|
||||||
static void InsertAddress(MySqlConnection connection, int userId, string adresse, string plz, string stadt)
|
static void ProtokolliereUngueltigeDaten(string[] daten)
|
||||||
{
|
{
|
||||||
string query = "INSERT INTO address (userId, address, postalcode, city) VALUES (@userId, @adresse, @plz, @stadt)";
|
string protokollPfad = "C:/Schule/PMC/ungueltige_Daten.txt";
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, connection))
|
using (StreamWriter sw = new StreamWriter(protokollPfad, true))
|
||||||
{
|
{
|
||||||
cmd.Parameters.AddWithValue("@userId", userId);
|
sw.WriteLine(string.Join(",", daten));
|
||||||
cmd.Parameters.AddWithValue("@adresse", adresse);
|
|
||||||
cmd.Parameters.AddWithValue("@plz", plz);
|
|
||||||
cmd.Parameters.AddWithValue("@stadt", stadt);
|
|
||||||
cmd.ExecuteNonQuery();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Funktion zum Einfügen einer E-Mail
|
|
||||||
static void InsertEmail(MySqlConnection connection, int userId, string email)
|
|
||||||
{
|
|
||||||
string query = "INSERT INTO email (userId, email) VALUES (@userId, @Email)";
|
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, connection))
|
|
||||||
{
|
|
||||||
cmd.Parameters.AddWithValue("@userId", userId);
|
|
||||||
cmd.Parameters.AddWithValue("@Email", email);
|
|
||||||
cmd.ExecuteNonQuery();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Funktion zum Einfügen einer Telefonnummer
|
|
||||||
static void InsertPhone(MySqlConnection connection, int userId, string telefonnummer)
|
|
||||||
{
|
|
||||||
string query = "INSERT INTO phone (userId, phonenumber) VALUES (@userId, @telefonnummer)";
|
|
||||||
using (MySqlCommand cmd = new MySqlCommand(query, connection))
|
|
||||||
{
|
|
||||||
cmd.Parameters.AddWithValue("@userId", userId);
|
|
||||||
cmd.Parameters.AddWithValue("@telefonnummer", telefonnummer);
|
|
||||||
cmd.ExecuteNonQuery();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Funktion zur Protokollierung von ungültigen Benutzerdaten
|
|
||||||
static void LogInvalidUser(string vorname, string nachname, string grund)
|
|
||||||
{
|
|
||||||
string logPath = "invalid_users.log";
|
|
||||||
using (StreamWriter sw = File.AppendText(logPath))
|
|
||||||
{
|
|
||||||
sw.WriteLine($"{DateTime.Now}: {vorname} {nachname} - {grund}");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("PMCProjekt")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("PMCProjekt")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e9e49af1be84151f586fad3e1633f2fa660d3d71")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ccf519442eacb4415c21da9b808d1323f8d13b0b")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("PMCProjekt")]
|
[assembly: System.Reflection.AssemblyProductAttribute("PMCProjekt")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("PMCProjekt")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("PMCProjekt")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
@ -1 +1 @@
|
|||||||
497b76da71a0f65b1b63963994b6e814d84ab84904760acee03801e220cdfd81
|
2b86785557cecb37507fb5607216d2388b73f1747577587e3fc6b51529995d44
|
||||||
|
Loading…
Reference in New Issue
Block a user