gekocht bra
This commit is contained in:
parent
97a2564ff2
commit
ccf519442e
@ -1,6 +1,7 @@
|
|||||||
using MySql.Data.MySqlClient;
|
using MySql.Data.MySqlClient;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace PMCProjekt
|
namespace PMCProjekt
|
||||||
{
|
{
|
||||||
@ -8,20 +9,36 @@ namespace PMCProjekt
|
|||||||
{
|
{
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
|
if (args.Length != 1)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Verwendung: PMCProjekt <CSV-Dateipfad>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
string dateiPfad = args[0];
|
||||||
|
|
||||||
|
Console.Write("Bitte geben Sie die Kundennummer ein (z.B. K2-002): ");
|
||||||
|
string kundennummer = Console.ReadLine();
|
||||||
|
|
||||||
MySqlConnection myConnection;
|
MySqlConnection myConnection;
|
||||||
string myConnectionString;
|
string myConnectionString;
|
||||||
|
|
||||||
// Setzen Sie die korrekten Werte für Ihren Server, Benutzer, Passwort und Datenbanknamen
|
// Verbindung zur Datenbank herstellen
|
||||||
myConnectionString = "server=localhost;uid=root;pwd=root;database=import_export";
|
myConnectionString = "server=localhost;uid=root;pwd=root;database=import_export";
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
myConnection = new MySqlConnection(myConnectionString);
|
myConnection = new MySqlConnection(myConnectionString);
|
||||||
// Öffnen Sie eine Verbindung
|
|
||||||
myConnection.Open();
|
myConnection.Open();
|
||||||
|
|
||||||
// Datei einlesen
|
int clientId = GetClientId(myConnection, kundennummer);
|
||||||
string dateiPfad = "C:/Schule/PMC/import_yutani.csv";
|
if (clientId == -1)
|
||||||
|
{
|
||||||
|
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))
|
||||||
@ -31,21 +48,60 @@ namespace PMCProjekt
|
|||||||
{
|
{
|
||||||
string[] werte = zeile.Split(',');
|
string[] werte = zeile.Split(',');
|
||||||
|
|
||||||
if (werte.Length == 2)
|
// Überprüfen, ob mindestens Anrede, Vorname, Nachname und Geburtsdatum vorhanden sind
|
||||||
|
if (werte.Length >= 4)
|
||||||
{
|
{
|
||||||
string vorname = werte[0];
|
string anrede = werte[0];
|
||||||
string nachname = werte[1];
|
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;
|
||||||
|
|
||||||
// Verarbeiten der Daten (z.B. Ausgabe)
|
// Validieren der Benutzerdaten
|
||||||
Console.WriteLine("Vorname: " + vorname + ", Nachname: " + nachname);
|
if (ValidateUser(anrede, vorname, nachname, geburtsdatum, adresse, plz, stadt, email, telefonnummern))
|
||||||
|
|
||||||
// Daten in die Datenbank einfügen (Beispiel)
|
|
||||||
string abfrage = "INSERT INTO user (firstname, lastname) VALUES (@vorname, @nachname)";
|
|
||||||
using (MySqlCommand myCommand = new MySqlCommand(abfrage, myConnection))
|
|
||||||
{
|
{
|
||||||
myCommand.Parameters.AddWithValue("@vorname", vorname);
|
// Überprüfen, ob der Benutzer bereits für diesen Kunden existiert
|
||||||
myCommand.Parameters.AddWithValue("@nachname", nachname);
|
if (!IsUserDuplicate(myConnection, vorname, nachname, clientId))
|
||||||
myCommand.ExecuteNonQuery();
|
{
|
||||||
|
// Benutzer in die Tabelle "user" einfügen
|
||||||
|
int userId = InsertUser(myConnection, clientId, anrede, vorname, nachname, geburtsdatum);
|
||||||
|
|
||||||
|
// Adresse in die Tabelle "address" einfügen
|
||||||
|
if (!string.IsNullOrEmpty(adresse) && !string.IsNullOrEmpty(plz) && !string.IsNullOrEmpty(stadt))
|
||||||
|
{
|
||||||
|
InsertAddress(myConnection, userId, adresse, plz, stadt);
|
||||||
|
}
|
||||||
|
|
||||||
|
// E-Mail in die Tabelle "email" einfügen
|
||||||
|
if (!string.IsNullOrEmpty(email))
|
||||||
|
{
|
||||||
|
InsertEmail(myConnection, userId, email);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Telefonnummern in die Tabelle "phone" einfügen
|
||||||
|
if (!string.IsNullOrEmpty(telefonnummern))
|
||||||
|
{
|
||||||
|
string[] telefonListe = telefonnummern.Split(';');
|
||||||
|
foreach (string telefon in telefonListe)
|
||||||
|
{
|
||||||
|
InsertPhone(myConnection, userId, telefon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Protokollierung von Duplikaten
|
||||||
|
LogInvalidUser(vorname, nachname, "Benutzer ist bereits für diesen Kunden vorhanden");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Protokollierung von ungültigen Daten
|
||||||
|
LogInvalidUser(vorname, nachname, "Validierung fehlgeschlagen");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -56,7 +112,6 @@ namespace PMCProjekt
|
|||||||
Console.WriteLine("Datei nicht gefunden.");
|
Console.WriteLine("Datei nicht gefunden.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verbindung schließen
|
|
||||||
myConnection.Close();
|
myConnection.Close();
|
||||||
}
|
}
|
||||||
catch (MySqlException ex)
|
catch (MySqlException ex)
|
||||||
@ -64,9 +119,110 @@ namespace PMCProjekt
|
|||||||
Console.WriteLine("Fehler: " + ex.Message);
|
Console.WriteLine("Fehler: " + ex.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Funktion zur Ermittlung der ClientId anhand der Kundennummer
|
||||||
|
static int GetClientId(MySqlConnection connection, string clientNumber)
|
||||||
|
{
|
||||||
|
string query = "SELECT id FROM client WHERE clientno = @clientNumber";
|
||||||
|
using (MySqlCommand cmd = new MySqlCommand(query, connection))
|
||||||
|
{
|
||||||
|
cmd.Parameters.AddWithValue("@clientNumber", clientNumber);
|
||||||
|
object result = cmd.ExecuteScalar();
|
||||||
|
return result != null ? Convert.ToInt32(result) : -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Funktion zur Validierung der Benutzerdaten
|
||||||
|
static bool ValidateUser(string anrede, string vorname, string nachname, string geburtsdatum, string adresse, string plz, string stadt, string email, string telefonnummern)
|
||||||
|
{
|
||||||
|
if (!Regex.IsMatch(geburtsdatum, @"^\d{2}\.\d{2}\.\d{4}$")) return false;
|
||||||
|
if (!string.IsNullOrEmpty(email) && !Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$")) return false;
|
||||||
|
if (!string.IsNullOrEmpty(plz) && !Regex.IsMatch(plz, @"^\d{5}$")) return false;
|
||||||
|
if (!string.IsNullOrEmpty(telefonnummern))
|
||||||
|
{
|
||||||
|
string[] telefonListe = telefonnummern.Split(';');
|
||||||
|
foreach (string telefon in telefonListe)
|
||||||
|
{
|
||||||
|
if (!Regex.IsMatch(telefon, @"^\d{3,5}-\d{4,10}$")) return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Funktion zur Überprüfung von Duplikaten
|
||||||
|
static bool IsUserDuplicate(MySqlConnection connection, string vorname, string nachname, int clientId)
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
cmd.Parameters.AddWithValue("@nachname", nachname);
|
||||||
|
cmd.Parameters.AddWithValue("@clientId", clientId);
|
||||||
|
return Convert.ToInt32(cmd.ExecuteScalar()) > 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Funktion zum Einfügen eines Benutzers
|
||||||
|
static int InsertUser(MySqlConnection connection, int clientId, string anrede, string vorname, string nachname, string geburtsdatum)
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
cmd.Parameters.AddWithValue("@vorname", vorname);
|
||||||
|
cmd.Parameters.AddWithValue("@nachname", nachname);
|
||||||
|
cmd.Parameters.AddWithValue("@geburtsdatum", DateTime.ParseExact(geburtsdatum, "dd.MM.yyyy", null));
|
||||||
|
cmd.ExecuteNonQuery();
|
||||||
|
return (int)cmd.LastInsertedId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Funktion zum Einfügen einer Adresse
|
||||||
|
static void InsertAddress(MySqlConnection connection, int userId, string adresse, string plz, string stadt)
|
||||||
|
{
|
||||||
|
string query = "INSERT INTO address (userId, address, postalcode, city) VALUES (@userId, @adresse, @plz, @stadt)";
|
||||||
|
using (MySqlCommand cmd = new MySqlCommand(query, connection))
|
||||||
|
{
|
||||||
|
cmd.Parameters.AddWithValue("@userId", userId);
|
||||||
|
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}");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user