using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using ChatController.HauptKlassen;
using ChatController.Klassen;
namespace ChatController
{
///
/// Interaktionslogik für Login.xaml
///
public partial class LoginControl : UserControl
{
public delegate void LoginDelegate(ChatDatenUebergabe cdu);
public event LoginDelegate OnLogin;
private string _dateiPfad = "ChatAnmeldeDaten.txt"; //OwnChatX1253781
private string _merkeDaten = "MerkeChatTeilAnmeldeDaten.txt"; //OwnChatX1253782
public LoginControl()
{
InitializeComponent();
LeseDateiFallsVorhanden();
}
private void AnmeldenButton_OnClick(object sender, RoutedEventArgs e)
{
try
{
#if DEBUG
Cursor = Cursors.Wait;
Login _login = new Login("4368658435", "ZMCKb-BckTt", "RuppelW", "ABXT32wgtruppeldiedup");
var x = _login.AnmeldevorgangDurchFuehren();
if (OnLogin != null)
{
AutosetDaten();
if (Merken.IsChecked == true)
{
SpeichereDatenInDatei();
}
else
{
LoescheGespeicherteDatei();
}
OnLogin(x);
}
Cursor = Cursors.Arrow;
#else
if (!TextBoxKundennummer.Text.Equals("") && !TextBoxChatCode.Text.Equals("") &&
!TextBoxBenutzerName.Text.Equals("") && !TextBoxPasswort.Password.Equals(""))
{
Cursor = Cursors.Wait;
Login _login = new Login(TextBoxKundennummer.Text, TextBoxChatCode.Text, TextBoxBenutzerName.Text, TextBoxPasswort.Password);
var x = _login.AnmeldevorgangDurchFuehren();
if (OnLogin != null && x != null)
{
AutosetDaten();
if (Merken.IsChecked == true)
{
SpeichereDatenInDatei();
}
else
{
LoescheGespeicherteDatei();
}
OnLogin(x);
}
else
{
MessageBox.Show("Fehler bei der Anmeldung. Bitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, MessageBoxImage.Asterisk);
}
Cursor = Cursors.Arrow;
}
else
{
MessageBox.Show("Bitte alle Felder ausfüllen!", "Info", MessageBoxButton.OK);
}
#endif
}
catch (Exception exception)
{
//MessageBox.Show("Fehler bei der Anmeldung!\n\n" + exception.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Asterisk);
MessageBox.Show("Fehler bei der Anmeldung. Bitte überprüfen Sie die Anmeldeinformationen.", "Info", MessageBoxButton.OK, MessageBoxImage.Asterisk);
//throw;
Cursor = Cursors.Arrow;
}
}
#region Speichern / Laden / Löschen der Datei
private void LeseDateiFallsVorhanden()
{
try
{
if (File.Exists(_merkeDaten))
{
List merkdaten = new List();
using (StreamReader sr = new StreamReader(_merkeDaten, true))
{
string line = "";
while ((line = sr.ReadLine()) != null)
{
var encodedTextBytes = Convert.FromBase64String(line);
string plainText = Encoding.UTF8.GetString(encodedTextBytes);
merkdaten.Add(plainText);
}
}
if (merkdaten.Count == 2)
{
TextBoxKundennummer.Text = merkdaten[0];
TextBoxChatCode.Text = merkdaten[1];
}
}
if (File.Exists(_dateiPfad)) {
List daten = new List();
using (StreamReader sr = new StreamReader(_dateiPfad,true))
{
string line = "";
while ((line = sr.ReadLine()) != null)
{
var encodedTextBytes = Convert.FromBase64String(line);
string plainText = Encoding.UTF8.GetString(encodedTextBytes);
daten.Add(plainText);
}
}
if(daten.Count == 3) {
TextBoxBenutzerName.Text = daten[0];
TextBoxPasswort.Password = daten[1];
Merken.IsChecked = Convert.ToBoolean(daten[2]);
}
}
}
catch (Exception e)
{
MessageBox.Show("Ups, da ist was schief gelaufen: \n" + e.Message, "Fehler", MessageBoxButton.OK);
}
}
//Kundenummer und ChatCode sollen Separat gespeichert werden
private void AutosetDaten()
{
try
{
if (!File.Exists(_merkeDaten))
{
using (StreamWriter sw = new StreamWriter(_merkeDaten))
{
Encoding enc = new UTF8Encoding();
var byt = enc.GetBytes(TextBoxKundennummer.Text);
var bytes = Convert.ToBase64String(byt);
var byt2 = enc.GetBytes(TextBoxChatCode.Text);
var bytes2 = Convert.ToBase64String(byt2);
sw.WriteLine(bytes);
sw.WriteLine(bytes2);
File.SetAttributes(_merkeDaten, FileAttributes.ReadOnly);
}
}
}
catch (Exception e)
{
MessageBox.Show("Ups, da ist was schief gelaufen: \n" + e.Message, "Fehler", MessageBoxButton.OK);
}
}
private void SpeichereDatenInDatei()
{
try
{
if (!File.Exists(_dateiPfad)) {
using (StreamWriter sw = new StreamWriter(_dateiPfad))
{
Encoding enc = new UTF8Encoding();
//var byt = enc.GetBytes(TextBoxKundennummer.Text);
//var bytes = Convert.ToBase64String(byt);
//var byt2 = enc.GetBytes(TextBoxChatCode.Text);
//var bytes2 = Convert.ToBase64String(byt2);
var byt3 = enc.GetBytes(TextBoxBenutzerName.Text);
var bytes3 = Convert.ToBase64String(byt3);
var byt4 = enc.GetBytes(TextBoxPasswort.Password);
var bytes4 = Convert.ToBase64String(byt4);
var byt5 = enc.GetBytes(Merken.IsChecked.ToString());
var bytes5 = Convert.ToBase64String(byt5);
//sw.WriteLine(bytes);
//sw.WriteLine(bytes2);
sw.WriteLine(bytes3);
sw.WriteLine(bytes4);
sw.WriteLine(bytes5);
File.SetAttributes(_dateiPfad, FileAttributes.ReadOnly);
}
}
}
catch (Exception e)
{
MessageBox.Show("Ups, da ist was schief gelaufen: \n" + e.Message, "Fehler", MessageBoxButton.OK);
}
}
private void LoescheGespeicherteDatei()
{
try
{
if (File.Exists(_dateiPfad))
{
File.SetAttributes(_dateiPfad, FileAttributes.Normal);
File.Delete(_dateiPfad);
}
}
catch (Exception e)
{
MessageBox.Show("Ups, da ist was schief gelaufen: \n" + e.Message, "Fehler", MessageBoxButton.OK);
}
}
#endregion
}
}