package me.teridax.jcash.gui.deposit;

import me.teridax.jcash.Logging;
import me.teridax.jcash.banking.accounts.Account;

public class DepositDialog {

    private final DepositView view;
    private final Account account;
    private final Runnable onDeposit;

    public DepositDialog(Account account, Runnable onDeposit) {
        this.account = account;
        this.onDeposit = onDeposit;

        this.view = new DepositView();

        this.view.getDeposit().addActionListener(e -> depositMoney());
        this.view.getCancel().addActionListener(e -> view.dispose());
        this.view.showDialog();
    }

    private void depositMoney() {
        var amount = view.getAmount();

        Logging.LOGGER.fine("Depositing money of account: " + account.getIban() + " amount: " + amount);

        try {
            account.deposit(amount);
            onDeposit.run();
        } catch (IllegalArgumentException ex) {
            Logging.LOGGER.severe("Cannot deposit money of account: " + account.getIban() + " because: " + ex.getMessage());
        } finally {
            view.dispose();
        }
    }
}