Releases: jeffreybakker/ING_Project
Extension 3: Replace PIN Card
If a PIN card gets lost or stolen it should be possible to invalidate the card so it cannot be used by a third party. If you invalidate a card you will automatically receive a new PIN card. Receiving a new PIN code is optional. A new PIN card costs € 7,50 and this amount should be obtained from the corresponding bank account.
Extension 6: Savings account
In this extension savings accounts are introduced into the banking system. Existing customers should be able to open savings accounts that are connected to their regular accounts. The way that ING works however is that this does not create a separate bank account for the savings account, but it rather adds a savings account under the checkings account with the same IBAN.
In this extension I had to implement the savings accounts, implement paying interest over the balance on the savings accounts and refactoring a whole system to use the new account system.
Extension 7: Logging
For this extension I had to implement a logging system into the bank server. The perpose of the logging system is twofold, the first reason being that you want to be able to know how you reached your current state and the second being to detect suspicious behaviour.
For the first purpose I had to log every action in the system that changes its state. The log should contain sufficient information so that I could replay all of the events.
For the second purpose I had to log every server request that produces an error, like failed login requests or pin attempts.
Extension 5: Overdraft
By default the balance of a bank account could never be lower than 0.00 euros and therefore any action that attempts to lower this balance under this level should be rejected. However, there are cases where a customer might want to overdraft his or her account to make some necessary payments. Therefore this extension required us to make the over-drafting of bank accounts possible.
The task for this extension was to make a per account overdraft limit and limit transactions to never let the account balance fall below that limit. And whenever the balance of an account was less than 0.00 we would have to calculate interest over the overdrafted amount.
Extension 4: Time simulation
For some components of the banking system, time plays an important role, for example the expiration date of a PIN card.
The task of this assignment was to give the bank system its own date and time, separate from the actual date and time (even though these should initially be the same). The date of the system should be just as persistent as your other data. The bank should only use this date and time for all actions involving a date, such as processing a transaction or checking if a PIN card is expired.
A user should be able to manipulate this time via an API call, see the methods:
simulateTime
reset
getDate
Extension 2: Blocking and unblocking PIN cards
The assignment for this extension is as follows: A PIN card should be blocked after three consecutive attempts to use it with an incorrect PIN code. After a card is blocked it cannot be used anymore to access (the money no) a bank account.
A PIN card can be unblocked by the user by logging in and calling the unblockCard
method.
Extended initial requirements
Merge pull request #39 from jeffreybakker/feature/test Change return type of findBankAccountsByPrimaryHolder
Initial Requirements 1.0
Implements the initial requirements for version 1.0 with a few assumptions