#include "Benutzerkonto.h"
#include <iostream>

using namespace std;

Benutzerkonto::Benutzerkonto()
{
    cout << "Geben Sie einen Benutzernamen ein: " << endl;
    char *benutzereingabe = new char[256];
    cin >> benutzereingabe;
    benutzer = new char[strlen(benutzereingabe)+1];
    strcpy (benutzer, benutzereingabe);
    passwort = new char[strlen("123456")+1];
    strcpy(passwort, "123456");
    cout << "Benutzer: " << benutzer << " Passwort: " << passwort << endl;
    delete[] benutzereingabe;
}

Benutzerkonto::~Benutzerkonto()
{
    cout << "Destruktor aufgerufen" << endl;
    delete[] benutzer;
    delete[] passwort;
}

Benutzerkonto::setPassword() {
    cout << "zum Ändern altes Passwort eingeben: " << endl;
    char *pruefePW = new char[256];
    cin >> pruefePW;
    if (pruefePassword(pruefePW)) {
        cout << "neues Passwort eingeben: " << endl;
        char *passwordInput = new char[256];
        cin >> passwordInput;
        if (strlen(passwordInput) < 6) {
            cout << "Passwort muss aus mind. 6 Zeichen bestehen." << endl;
            setPassword();
        } else {
            delete[] passwort;
            passwort = new char[strlen(passwordInput)];
            strcpy(passwort, passwordInput);
            cout << "Neues Passwort gesetzt." << passwort << endl;
        }

        delete[] passwordInput;
    } else {
        cout << "Altes Passwort falsch eingegeben. " << endl;
    }
    delete[] pruefePW;
}

bool Benutzerkonto::pruefePassword(char *pruefePW) {
    if (strcmp(pruefePW, passwort) == 0) {
        return true;
    } else {
        return false;
    }
}

void Benutzerkonto::anzeigen() {
    cout << "Benutzer: " << benutzer << endl;
    cout << "Passwort: " << passwort << endl;
}

Benutzerkonto::Benutzerkonto(const Benutzerkonto &konto)
{
    this->passwort = new char[strlen(konto.passwort)];
    this->benutzer = new char[strlen(konto.benutzer)];

    strcpy(this->passwort, konto.passwort);
    strcpy(this->benutzer, konto.benutzer);
}

Benutzerkonto& Benutzerkonto::operator=(const Benutzerkonto &k)
{
    if(this->passwort != NULL)
        delete[] this->passwort;

    if(this->benutzer != NULL)
        delete[] this->benutzer;

    this->passwort = new char[strlen(k.passwort)];
    this->benutzer = new char[strlen(k.benutzer)];

    strcpy(this->passwort, k.passwort);
    strcpy(this->benutzer, 2k.benutzer);

    return *this;
}


