This is the final project from Ironhack's Java Development Bootcamp. It's an API that connects to a Local database and retrieves information about a Banking system.
The main entity models are User and Account, that are implemented as abstract entities.
The son entities of User are AccountHolder, Administrator and ThirdParty, each one with them own characteristics.
On the side of Account, there are the son entities that extend the properties of the superclass: Checking, StudentChecking, Savings and CreditCard.
Particularly, some entities have a few requirements:
- Saving accounts have an interest rate thad needs to be added when the account is accessed.
- Checking and StudentChecking accounts are created depending on the primary owner's age (if the age is less than 24 years old).
- CreditCards have an interest added to the balance monthly.
Each one of the accounts have a penalty fee that is deducted from the balance automatically if it drops below de minimum balance.
- Admins are able to access the balance for any account and to modify it.
- AccountHolders are able to access only their own account balance and to transfer money from their accounts to any other account, regardless of owner).
- ThirdParty can receive and send money to other accounts.
Database Diagram:
It can be seen here that the two entities User and Role are independent of BankingUser, and they shouldn't be. I will need more time to think how implement them correctly, because the main User class (BankingUser) it's an abstract entity, and it brought me trouble. If the deadline wasn't so close I'm sure I would have sorted it out.