73 lines
1.9 KiB
Java
73 lines
1.9 KiB
Java
package me.zacharias.bank;
|
|
|
|
import me.zacharias.bank.transaction.Transaction;
|
|
import me.zacharias.bank.transaction.TransactionType;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.UUID;
|
|
|
|
public class User {
|
|
UUID id;
|
|
String name;
|
|
ArrayList<Account> accounts;
|
|
|
|
public User(String name) {
|
|
this.name = name;
|
|
id = UUID.randomUUID();
|
|
accounts = new ArrayList<>();
|
|
}
|
|
|
|
public UUID createAccount(String name) {
|
|
Account account = new BankAccount(name);
|
|
accounts.add(account);
|
|
return account.getId();
|
|
}
|
|
|
|
public UUID createSavingsAccount(String name) {
|
|
Account account = new SavingsAccount(name);
|
|
accounts.add(account);
|
|
return account.getId();
|
|
}
|
|
|
|
public Account getAccount(String name) {
|
|
for (Account account : accounts) {
|
|
if (account.name.equals(name)) {
|
|
return account;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public Account getAccount(@NotNull UUID id) {
|
|
for (Account account : accounts) {
|
|
if (account.id.equals(id)) {
|
|
return account;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public void deleteAccount(@NotNull Account account) {
|
|
Account base = null;
|
|
for(Account a : accounts) {
|
|
if(a.getId().equals(account.getId())) {
|
|
base = a;
|
|
}
|
|
}
|
|
if(base == null) {
|
|
throw new IllegalArgumentException("No other bank accounts found");
|
|
}
|
|
base.handleTransaction(new Transaction(account.getBalance(), "Account closed", account.getId(), base.getId(), TransactionType.CLOSE));
|
|
accounts.remove(account);
|
|
}
|
|
|
|
public String getName() {
|
|
return name;
|
|
}
|
|
|
|
public ArrayList<Account> getAccounts() {
|
|
return accounts;
|
|
}
|
|
}
|