package BankSystemGUI;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Controller  {
	private User user;
	private Konto konto;
	private Bank bank;
	private ViewLogin login_fuer_user;
	private HauptFenser userFenser;
	private EinzahlungsFenster einzahlungsfenster;
	
	public Controller(Konto konto, Bank bank, ViewLogin login_fuer_user, HauptFenser userFenser) {
		this.konto = konto;
		this.bank = bank;
		this.login_fuer_user = login_fuer_user;
		this.userFenser = userFenser;
		einzahlungsfenster = new EinzahlungsFenster();
		action_login();
		action_Einzahlen();
		Einzahlen();
	
	}
	
	public void login() {
		String name = login_fuer_user.getName();
		String vorname = login_fuer_user.getVorname();
		user = new User(name,vorname);
		konto = new Konto(0,user);
		user.konto_Hinzufuegen(konto);
		login_fuer_user.schließe_login();
		userFenser.set_user_name(user.getName() + " " +  user.getVorname());
		userFenser.set_user_kontostand(konto.getKontostand());
		userFenser.zeige_HauptFenster();
	}
	
	public void zeige_fenster_einzahlen() {
		einzahlungsfenster.zeige_fenster();
	}
	
	public void einazahlen() throws Exception {
		String betrag_text =  einzahlungsfenster.getBetrag();
		double betrag =Double.parseDouble(betrag_text); 
		konto.einzahlen(konto.getKontostand() +betrag);
		userFenser.set_user_kontostand(konto.getKontostand());
		einzahlungsfenster.setBetrag("");
		einzahlungsfenster.zeige_message("Einzalhung ist Erfolgreich");
		einzahlungsfenster.schließe_fenster();
	}
	
	
	
	// **************************************Buttons Actions**************************************
	public void action_login() {
		login_fuer_user.zeige_login();
		login_fuer_user.getLogin().addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				login();
			}
			
		});
	}
	
	public void action_Einzahlen() {
		userFenser.getEinzahlen().addActionListener(e -> zeige_fenster_einzahlen());
	}
	
	public void Einzahlen() {
		einzahlungsfenster.getEinzahlen().addActionListener(e -> {
			try {
				einazahlen();
			} catch (Exception e1) {
				einzahlungsfenster.zeige_Error(e1.getMessage());
			}
		});
	}
}
