Compare commits

...

4 Commits

Author SHA1 Message Date
NBMANTZELOS\bib
f11be713d0 Fertigstellung 2024-09-06 10:56:31 +02:00
NBMANTZELOS\bib
2150bad16d fast ferig 2024-06-28 13:52:35 +02:00
NBMANTZELOS\bib
3ecbf97c76 läuft noch nicht ganz muss noch überprüft werden 2024-06-26 12:56:38 +02:00
NBMANTZELOS\bib
ccf519442e gekocht bra 2024-06-21 10:25:51 +02:00
10 changed files with 284 additions and 53 deletions

Binary file not shown.

View File

@@ -24,9 +24,9 @@
"RelativeDocumentMoniker": "PMCProjekt\\Program.cs",
"ToolTip": "C:\\Users\\bib\\Documents\\PMC_Projekt\\PMCProjekt\\PMCProjekt\\Program.cs",
"RelativeToolTip": "PMCProjekt\\Program.cs",
"ViewState": "AQIAAA0AAAAAAAAAAAAQwBcAAAAyAAAA",
"ViewState": "AQIAAAMAAAAAAAAAAAAAAE0AAAAJAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-06-14T09:14:59.548Z",
"WhenOpened": "2024-08-30T09:51:48.989Z",
"EditorCaption": ""
}
]

View File

@@ -1,72 +1,303 @@
using MySql.Data.MySqlClient;
using System;
using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using MySql.Data.MySqlClient;
namespace PMCProjekt
{
internal class Program
internal class Programm
{
static void Main(string[] args)
{
MySqlConnection myConnection;
string myConnectionString;
string dateiPfad = "/Schule/PMC/import_yutani.csv";
string protokollPfad = "/Schule/PMC/ungueltige_Daten.csv";
// Setzen Sie die korrekten Werte für Ihren Server, Benutzer, Passwort und Datenbanknamen
myConnectionString = "server=localhost;uid=root;pwd=root;database=import_export";
// MySQL-Verbindungszeichenfolge
string connectionString = "server=localhost;uid=root;pwd=root;database=import_export";
try
// Abfrage der Kundennummer vom Benutzer
Console.Write("Bitte geben Sie die Kundennummer (clientno) ein: ");
string clientno = Console.ReadLine();
int clientId = HoleClientId(connectionString, clientno);
if (clientId == 0)
{
myConnection = new MySqlConnection(myConnectionString);
// Öffnen Sie eine Verbindung
myConnection.Open();
Console.WriteLine("Ungültige Kundennummer. Programm wird beendet.");
return;
}
// Datei einlesen
string dateiPfad = "C:/Schule/PMC/import_yutani.csv";
if (File.Exists(dateiPfad))
List<List<string>> alleDatensaetze = new List<List<string>>();
List<string> aktuellerDatensatz = new List<string>();
// Überprüfen, ob die Datei existiert
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)
if (zeile.StartsWith("Frau") || zeile.StartsWith("Herr") || zeile.StartsWith("Divers"))
{
string[] werte = zeile.Split(',');
if (werte.Length == 2)
// Wenn ein neuer Datensatz beginnt, speichere den vorherigen
if (aktuellerDatensatz.Count > 0)
{
string vorname = werte[0];
string nachname = werte[1];
// 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))
{
myCommand.Parameters.AddWithValue("@vorname", vorname);
myCommand.Parameters.AddWithValue("@nachname", nachname);
myCommand.ExecuteNonQuery();
}
alleDatensaetze.Add(new List<string>(aktuellerDatensatz));
aktuellerDatensatz.Clear();
}
}
// Füge die aktuelle Zeile dem Datensatz hinzu
aktuellerDatensatz.Add(zeile);
}
// Füge den letzten Datensatz hinzu, falls vorhanden
if (aktuellerDatensatz.Count > 0)
{
alleDatensaetze.Add(aktuellerDatensatz);
}
}
else
{
Console.WriteLine("Datei nicht gefunden.");
}
// Verbindung schließen
myConnection.Close();
// Verarbeitung aller gesammelten Datensätze
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
foreach (var datensatz in alleDatensaetze)
{
VerarbeiteDatensatz(datensatz, protokollPfad, connection, clientId);
}
}
}
catch (MySqlException ex)
else
{
Console.WriteLine("Fehler: " + ex.Message);
Console.WriteLine("Datei nicht gefunden.");
}
}
static int HoleClientId(string connectionString, string clientno)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
string query = "SELECT id FROM client WHERE clientno = @ClientNo";
using (MySqlCommand command = new MySqlCommand(query, connection))
{
command.Parameters.AddWithValue("@ClientNo", clientno);
var result = command.ExecuteScalar();
return result != null ? Convert.ToInt32(result) : 0;
}
}
}
static void VerarbeiteDatensatz(List<string> datensatz, string protokollPfad, MySqlConnection connection, int clientId)
{
string gesamteZeile = string.Join(";", datensatz);
string[] werte = gesamteZeile.Split(';');
string anrede = "";
string vorname = "";
string nachname = "";
string geburtsdatum = "";
string strasse = "";
string plz = "";
string stadt = "";
string email = "";
List<string> telefonnummern = new List<string>();
for (int i = 0; i < werte.Length; i++)
{
if (werte[i] == "Frau" || werte[i] == "Herr" || werte[i] == "Divers")
{
anrede = werte[i];
vorname = werte[i + 1];
nachname = werte[i + 2];
geburtsdatum = werte[i + 3];
i += 3;
}
else if (werte[i] == "Adresse")
{
strasse = werte[i + 1];
plz = werte[i + 2];
stadt = werte[i + 3];
i += 3;
}
else if (werte[i] == "E-Mail")
{
email = werte[i + 1];
i += 1;
}
else if (werte[i] == "Telefon")
{
telefonnummern.Add($"{werte[i + 1]} {werte[i + 2]}");
i += 2;
}
}
bool gueltig = true;
if (!PruefeGeburtstag(geburtsdatum))
{
Console.WriteLine($"Ungültiges Geburtsdatum: {geburtsdatum}");
gueltig = false;
}
if (!string.IsNullOrEmpty(email) && !PruefeEmail(email))
{
Console.WriteLine($"Ungültige E-Mail-Adresse: {email}");
gueltig = false;
}
if (!string.IsNullOrEmpty(plz) && !PruefePLZ(plz))
{
Console.WriteLine($"Ungültige Postleitzahl: {plz}");
gueltig = false;
}
foreach (var telefon in telefonnummern)
{
if (!PruefeTelefon(telefon))
{
Console.WriteLine($"Ungültige Telefonnummer: {telefon}");
gueltig = false;
}
}
if (gueltig)
{
int userId = GeneriereNaechsteId("user", connection);
EinfuegenInUserTabelle(userId, anrede, vorname, nachname, geburtsdatum, connection, clientId);
EinfuegenInAddressTabelle(GeneriereNaechsteId("address", connection), userId, strasse, plz, stadt, connection);
EinfuegenInEmailTabelle(GeneriereNaechsteId("email", connection), userId, email, connection);
foreach (var telefon in telefonnummern)
{
string[] telefonTeile = telefon.Split(' ');
EinfuegenInPhoneTabelle(GeneriereNaechsteId("phone", connection), userId, telefonTeile[0], telefonTeile[1], connection);
}
}
else
{
ProtokolliereUngueltigeDaten(datensatz, protokollPfad);
}
}
static int GeneriereNaechsteId(string tabelle, MySqlConnection connection)
{
string query = $"SELECT IFNULL(MAX(id), 0) + 1 FROM {tabelle}";
using (MySqlCommand command = new MySqlCommand(query, connection))
{
return Convert.ToInt32(command.ExecuteScalar());
}
}
static void EinfuegenInUserTabelle(int userId, string anrede, string vorname, string nachname, string geburtsdatum, MySqlConnection connection, int clientId)
{
string query = "INSERT INTO user (id, clientId, genderId, firstname, lastname, birthdate, created) " +
"VALUES (@Id, @ClientId, @GenderId, @Vorname, @Nachname, @Geburtsdatum, @Created)";
using (MySqlCommand command = new MySqlCommand(query, connection))
{
command.Parameters.AddWithValue("@Id", userId);
command.Parameters.AddWithValue("@ClientId", clientId);
command.Parameters.AddWithValue("@GenderId", GetGenderId(anrede, connection));
command.Parameters.AddWithValue("@Vorname", vorname);
command.Parameters.AddWithValue("@Nachname", nachname);
command.Parameters.AddWithValue("@Geburtsdatum", DateTime.Parse(geburtsdatum));
command.Parameters.AddWithValue("@Created", DateTime.Now);
command.ExecuteNonQuery();
}
}
static int GetGenderId(string anrede, MySqlConnection connection)
{
string query = "SELECT id FROM gender WHERE description = @Anrede";
using (MySqlCommand command = new MySqlCommand(query, connection))
{
command.Parameters.AddWithValue("@Anrede", anrede);
return Convert.ToInt32(command.ExecuteScalar());
}
}
static void EinfuegenInAddressTabelle(int addressId, int userId, string strasse, string plz, string stadt, MySqlConnection connection)
{
string query = "INSERT INTO address (id, userId, street, postalcode, city) " +
"VALUES (@Id, @UserId, @Strasse, @PLZ, @Stadt)";
using (MySqlCommand command = new MySqlCommand(query, connection))
{
command.Parameters.AddWithValue("@Id", addressId);
command.Parameters.AddWithValue("@UserId", userId);
command.Parameters.AddWithValue("@Strasse", strasse);
command.Parameters.AddWithValue("@PLZ", plz);
command.Parameters.AddWithValue("@Stadt", stadt);
command.ExecuteNonQuery();
}
}
static void EinfuegenInEmailTabelle(int emailId, int userId, string email, MySqlConnection connection)
{
string query = "INSERT INTO email (id, userId, email) VALUES (@Id, @UserId, @Email)";
using (MySqlCommand command = new MySqlCommand(query, connection))
{
command.Parameters.AddWithValue("@Id", emailId);
command.Parameters.AddWithValue("@UserId", userId);
command.Parameters.AddWithValue("@Email", email);
command.ExecuteNonQuery();
}
}
static void EinfuegenInPhoneTabelle(int phoneId, int userId, string phoneprefix, string phonenumber, MySqlConnection connection)
{
string query = "INSERT INTO phone (id, userId, phoneprefix, phonenumber) VALUES (@Id, @UserId, @PhonePrefix, @PhoneNumber)";
using (MySqlCommand command = new MySqlCommand(query, connection))
{
command.Parameters.AddWithValue("@Id", phoneId);
command.Parameters.AddWithValue("@UserId", userId);
command.Parameters.AddWithValue("@PhonePrefix", phoneprefix);
command.Parameters.AddWithValue("@PhoneNumber", phonenumber);
command.ExecuteNonQuery();
}
}
static bool PruefeGeburtstag(string geburtsdatum)
{
string pattern = @"^\d{2}\.\d{2}\.\d{4}$";
return Regex.IsMatch(geburtsdatum, pattern);
}
static bool PruefeEmail(string email)
{
string pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$";
return Regex.IsMatch(email, pattern);
}
static bool PruefePLZ(string plz)
{
string pattern = @"^\d{5}$";
return Regex.IsMatch(plz, pattern);
}
static bool PruefeTelefon(string telefon)
{
string pattern = @"^\d{3,5}\s?\d{4,10}$";
return Regex.IsMatch(telefon, pattern);
}
static void ProtokolliereUngueltigeDaten(List<string> daten, string protokollPfad)
{
using (StreamWriter sw = new StreamWriter(protokollPfad, true))
{
foreach (var zeile in daten)
{
sw.WriteLine(zeile);
}
}
}
}
}
}

View File

@@ -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+e9e49af1be84151f586fad3e1633f2fa660d3d71")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+2150bad16d353de9bebea8f2feae3039c472b9e6")]
[assembly: System.Reflection.AssemblyProductAttribute("PMCProjekt")]
[assembly: System.Reflection.AssemblyTitleAttribute("PMCProjekt")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@@ -1 +1 @@
497b76da71a0f65b1b63963994b6e814d84ab84904760acee03801e220cdfd81
b181418c207b62c0f6b18dd50a2d5203ab8bd79309967fd8ba3cf377b6e89772

View File

@@ -66,7 +66,7 @@
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.204/PortableRuntimeIdentifierGraph.json"
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.304/PortableRuntimeIdentifierGraph.json"
}
}
}

View File

@@ -7,7 +7,7 @@
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\bib\.nuget\packages\</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.9.2</NuGetToolVersion>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.10.2</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\bib\.nuget\packages\" />

View File

@@ -1850,7 +1850,7 @@
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.204/PortableRuntimeIdentifierGraph.json"
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.304/PortableRuntimeIdentifierGraph.json"
}
}
}

View File

@@ -1,6 +1,6 @@
{
"version": 2,
"dgSpecHash": "Jmj3WRDtSrMYQNSWXK2x6TEKWOlCmkjM6nbeQ2iYrfCgkzMw4GiPixfUmBUGiPiTU/KE5IO8pzSrja1hWLPpDA==",
"dgSpecHash": "/54hNmRIYgQ=",
"success": true,
"projectFilePath": "C:\\Users\\bib\\Documents\\PMC_Projekt\\PMCProjekt\\PMCProjekt\\PMCProjekt.csproj",
"expectedPackageFiles": [