gekocht bra
This commit is contained in:
parent
97a2564ff2
commit
ccf519442e
@ -1,6 +1,7 @@
|
||||
using MySql.Data.MySqlClient;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace PMCProjekt
|
||||
{
|
||||
@ -8,20 +9,36 @@ namespace PMCProjekt
|
||||
{
|
||||
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;
|
||||
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";
|
||||
|
||||
try
|
||||
{
|
||||
myConnection = new MySqlConnection(myConnectionString);
|
||||
// Öffnen Sie eine Verbindung
|
||||
myConnection.Open();
|
||||
|
||||
// Datei einlesen
|
||||
string dateiPfad = "C:/Schule/PMC/import_yutani.csv";
|
||||
int clientId = GetClientId(myConnection, kundennummer);
|
||||
if (clientId == -1)
|
||||
{
|
||||
Console.WriteLine("Kundennummer nicht gefunden.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Überprüfen, ob die Datei existiert
|
||||
if (File.Exists(dateiPfad))
|
||||
{
|
||||
using (StreamReader sr = new StreamReader(dateiPfad))
|
||||
@ -31,21 +48,60 @@ namespace PMCProjekt
|
||||
{
|
||||
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 nachname = werte[1];
|
||||
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;
|
||||
|
||||
// Verarbeiten der Daten (z.B. Ausgabe)
|
||||
Console.WriteLine("Vorname: " + vorname + ", Nachname: " + nachname);
|
||||
|
||||
// Daten in die Datenbank einfügen (Beispiel)
|
||||
string abfrage = "INSERT INTO user (firstname, lastname) VALUES (@vorname, @nachname)";
|
||||
using (MySqlCommand myCommand = new MySqlCommand(abfrage, myConnection))
|
||||
// Validieren der Benutzerdaten
|
||||
if (ValidateUser(anrede, vorname, nachname, geburtsdatum, adresse, plz, stadt, email, telefonnummern))
|
||||
{
|
||||
myCommand.Parameters.AddWithValue("@vorname", vorname);
|
||||
myCommand.Parameters.AddWithValue("@nachname", nachname);
|
||||
myCommand.ExecuteNonQuery();
|
||||
// Überprüfen, ob der Benutzer bereits für diesen Kunden existiert
|
||||
if (!IsUserDuplicate(myConnection, vorname, nachname, clientId))
|
||||
{
|
||||
// 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.");
|
||||
}
|
||||
|
||||
// Verbindung schließen
|
||||
myConnection.Close();
|
||||
}
|
||||
catch (MySqlException ex)
|
||||
@ -64,9 +119,110 @@ namespace PMCProjekt
|
||||
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