package Übungen;
import java.util.ArrayList;
import java.util.Scanner;
public class BankSystem {
	
	protected String name;
	protected String vorname;
	protected String password;
	protected String email;
	protected double kontosstand;
	protected int alter;
	protected Scanner scanner;
	protected ArrayList<Double> speicher; 
	protected static int nextKundenNummer; // Statische Variable für die nächste Kunden-ID
	
	public BankSystem() {};
	
	public BankSystem(String name, String vorname, String password , String email,int alter) {
		this.name = name;
		this.vorname = vorname;
		this.password = password;
		this.email = email;
		this.kontosstand = 0; // 0€
		this.setAlter(alter);
        this.scanner = new Scanner(System.in);
        this.speicher = new ArrayList<>();
        nextKundenNummer++;
    }
	
		public void ueberweisung(BankSystem empfaenger) {
			
		System.out.println("KontoStand: " + this.kontosstand + " €" + "\n" + this.getVorname() + " " + this.getName());
		
		System.out.println("Geben Sie den Betrag ein: ");
		double betrag = scanner.nextDouble();
		scanner.nextLine();
		System.out.println("Geben Sie den Password ein: ");
		String password = scanner.nextLine();
		
	    if (checkKontoStand(betrag) && checkPassword(password)) {
	    	this.kontosstand -= betrag;
	    	speicher.add(- (betrag));
	    	
	    	empfaenger.kontosstand +=betrag;
	    	empfaenger.speicher.add(betrag);
	    	System.out.println("Das wurde erfolgreich überwiesen");
	    }
	    	
	    else
	    	System.out.println("Du hast kein genug Geld auf deinem Konto!");
	}
	
	public void kontoauszug(){
		
	    int zähler = 3;
    	System.out.print("Bitte geben Sie erst den Password ein: ");
	    String password = scanner.nextLine();
	    while(!checkPassword(password) && zähler > 1) {
	    	zähler--;//2
	    	System.out.println("Du hast " + zähler + " Versuche.");
	    	System.out.print("Bitte geben Sie erst den Password ein: ");
		    password = scanner.nextLine();
		   
	    }
	    if (zähler == 1)
	    	System.err.println("Dein Konto wurde gespert!");
	    	
	    else {
	    	double auszahlung = 0;
			double einzahlung = 0;
			for (double i : speicher) {
				if (i < 0) {
					System.out.println("Ihre Auszahlung: "+ i);
					 auszahlung += i;
				}	
				else {
					System.out.println("Ihre Einzahlung: "+ i);
					einzahlung += i;
				}
			}
			System.out.println("Die Summe alle Auszahlungen = "+ auszahlung);
			System.out.println("Die Summe alle Einzahlungen = "+ einzahlung);
			System.out.println("Dein aktuelles Kontostand = "+ this.getKontosstand());
	    }
			
	}
	
	private boolean checkPassword (String password) {
		return this.password.equals(password);
	}
	
	protected boolean checkKontoStand(double geld) {
		return  geld <= this.kontosstand;
	}
	
	
		public void auszahlen(){
			
	    System.out.println("Bitte geben Sie den Betrag ein: ");
	    
		double auszahlen = scanner.nextDouble();
		scanner.nextLine();
        System.out.print("Bitte geben Sie den Password ein: ");
        String password = scanner.nextLine();
        if (checkPassword(password)) {
        	if (checkKontoStand(auszahlen)) {
        		this.kontosstand -= auszahlen;
        		speicher.add(-(auszahlen));
                System.out.println("Auszahlung erfolgreich! Neuer Kontostand: " + this.kontosstand);

        	}
        		
        	else
        		System.out.println("Geld reicht nicht aus!");
        }
        	
        else
        	System.out.println("falsches Password!");	
	}
	
	
	
	public void addGeld(double geld) {
		
		this.kontosstand += geld;
		speicher.add(geld);
        System.out.println("Einzahlung erfolgreich! Neuer Kontostand: " + this.kontosstand);

	}
	
	
	
	
	
	@Override
	public String toString() {
		return "BankSystem [name=" + name + ", vorname=" + vorname + ", password=" + password + ", email=" + email
				+ ", kontosstand=" + kontosstand + ", alter=" + alter + "]";
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getVorname() {
		return vorname;
	}
	public void setVorname(String vorname) {
		this.vorname = vorname;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public double getKontosstand() {
		return kontosstand;
	}
	public void setKontosstand(double kontosstand) {
		this.kontosstand = kontosstand;
	}

	public int getAlter() {
		return alter;
	}

	public void setAlter(int alter) {
		if (alter <= 20)
			System.out.println("Nein,du musst Kundenart kriegen!");
		else
			this.alter = alter;
	}
	
	
	

}
