diff --git a/src/com/upgrad/ubank/Application.java b/src/com/upgrad/ubank/Application.java index ae744ea..27452aa 100644 --- a/src/com/upgrad/ubank/Application.java +++ b/src/com/upgrad/ubank/Application.java @@ -1,5 +1,7 @@ package com.upgrad.ubank; +import com.upgrad.ubank.dtos.Account; +import com.upgrad.ubank.dtos.Transaction; import com.upgrad.ubank.services.*; import java.util.Scanner; @@ -131,7 +133,7 @@ private void getAccount () { System.out.println("*******Account*******"); System.out.println("*********************"); - System.out.println("Get the account corresponding to Account No: " + loggedInAccountNo); + System.out.println(accountService.getAccount(loggedInAccountNo)); } private void deposit () { @@ -147,7 +149,12 @@ private void deposit () { System.out.print("Amount: "); int amount = Integer.parseInt(scan.nextLine()); - System.out.println("Deposit " + amount + " rs to account " + loggedInAccountNo); + Account account = accountService.deposit(loggedInAccountNo, amount); + if (account == null) { + System.out.println("Could not deposit into account."); + } else { + System.out.println("Money successfully deposited into account."); + } } private void withdraw () { @@ -184,8 +191,16 @@ private void getAccountStatement() { Transaction[] transactions = transactionService.getTransactions(loggedInAccountNo); if (transactions == null) { System.out.println("This feature is not available for mobile"); - } else { - System.out.println("Print account statement for account " + loggedInAccountNo); + return; + } else if (transactions[0] == null) { + System.out.println("No transaction exists for you."); + return; + } + for (Transaction transaction: transactions) { + if (transaction == null) { + break; + } + System.out.println(transaction); } } @@ -200,8 +215,8 @@ private void logout () { } public static void main(String[] args) { - AccountService accountService = new AccountServiceImpl(); - TransactionService transactionService = new TransactionServiceImplMobile(); + TransactionService transactionService = new TransactionServiceImpl(); + AccountService accountService = new AccountServiceImpl(transactionService); Application application = new Application(accountService, transactionService); application.start(); } diff --git a/src/com/upgrad/ubank/dtos/Account.java b/src/com/upgrad/ubank/dtos/Account.java new file mode 100644 index 0000000..9eac1ad --- /dev/null +++ b/src/com/upgrad/ubank/dtos/Account.java @@ -0,0 +1,46 @@ +package com.upgrad.ubank.dtos; + +public class Account { + private int accountNo; + private String password; + private int balance; + + public Account() { + } + + public Account(int accountNo, String password, int balance) { + this.accountNo = accountNo; + this.password = password; + this.balance = balance; + } + + public int getAccountNo() { + return accountNo; + } + + public void setAccountNo(int accountNo) { + this.accountNo = accountNo; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public int getBalance() { + return balance; + } + + public void setBalance(int balance) { + this.balance = balance; + } + + @Override + public String toString() { + return "AccountNo: " + accountNo + "\n" + + "Balance: " + balance; + } +} diff --git a/src/com/upgrad/ubank/dtos/Transaction.java b/src/com/upgrad/ubank/dtos/Transaction.java new file mode 100644 index 0000000..3160fd9 --- /dev/null +++ b/src/com/upgrad/ubank/dtos/Transaction.java @@ -0,0 +1,55 @@ +package com.upgrad.ubank.dtos; + +public class Transaction { + private int accountNo; + private String date; + private String action; + private int amount; + + public Transaction() { + } + + public Transaction(int accountNo, String date, String action, int amount) { + this.accountNo = accountNo; + this.date = date; + this.action = action; + this.amount = amount; + } + + public int getAccountNo() { + return accountNo; + } + + public void setAccountNo(int accountNo) { + this.accountNo = accountNo; + } + + public String getDate() { + return date; + } + + public void setDate(String date) { + this.date = date; + } + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public int getAmount() { + return amount; + } + + public void setAmount(int amount) { + this.amount = amount; + } + + @Override + public String toString() { + return date + '\t' + action + '\t' + amount; + } +} diff --git a/src/com/upgrad/ubank/services/AccountService.java b/src/com/upgrad/ubank/services/AccountService.java index 55a85d1..01dbc6d 100644 --- a/src/com/upgrad/ubank/services/AccountService.java +++ b/src/com/upgrad/ubank/services/AccountService.java @@ -1,7 +1,6 @@ package com.upgrad.ubank.services; -import com.upgrad.ubank.Account; -import com.upgrad.ubank.Transaction; +import com.upgrad.ubank.dtos.Account; public interface AccountService { boolean login (Account account); diff --git a/src/com/upgrad/ubank/services/AccountServiceImpl.java b/src/com/upgrad/ubank/services/AccountServiceImpl.java index cf0d8fb..f89a5d8 100644 --- a/src/com/upgrad/ubank/services/AccountServiceImpl.java +++ b/src/com/upgrad/ubank/services/AccountServiceImpl.java @@ -1,7 +1,7 @@ package com.upgrad.ubank.services; -import com.upgrad.ubank.Account; -import com.upgrad.ubank.Transaction; +import com.upgrad.ubank.dtos.Account; +import com.upgrad.ubank.dtos.Transaction; public class AccountServiceImpl implements AccountService { //Account array to store account objects for the application, later in the course @@ -11,9 +11,12 @@ public class AccountServiceImpl implements AccountService { //counter is used to track how many accounts are present in the account array private int counter; - public AccountServiceImpl() { + private TransactionService transactionService; + + public AccountServiceImpl (TransactionService transactionService) { accounts = new Account[100]; counter = 0; + this.transactionService = transactionService; } public boolean login (Account account) { @@ -49,7 +52,20 @@ public Account getAccount(int accountNo) { @Override public Account deposit(int accountNo, int amount) { - return null; + Account account = getAccount(accountNo); + if (account == null) { + return null; + } + account.setBalance(account.getBalance() + amount); + + Transaction transaction = new Transaction(); + transaction.setAccountNo(accountNo); + transaction.setDate("DD/MM/YYYY"); + transaction.setAction("Deposit "); + transaction.setAmount(amount); + System.out.println(transactionService.createTransaction(transaction)); + + return account; } /* @@ -72,7 +88,7 @@ public Account withdraw(int accountNo, int amount) { transaction.setDate("DD/MM/YYYY"); transaction.setAction("Withdraw"); transaction.setAmount(amount); - System.out.println(transaction); + System.out.println(transactionService.createTransaction(transaction)); return account; } diff --git a/src/com/upgrad/ubank/services/TransactionService.java b/src/com/upgrad/ubank/services/TransactionService.java index 4b60fe1..e547433 100644 --- a/src/com/upgrad/ubank/services/TransactionService.java +++ b/src/com/upgrad/ubank/services/TransactionService.java @@ -1,6 +1,6 @@ package com.upgrad.ubank.services; -import com.upgrad.ubank.Transaction; +import com.upgrad.ubank.dtos.Transaction; public interface TransactionService { Transaction createTransaction (Transaction transaction); diff --git a/src/com/upgrad/ubank/services/TransactionServiceImpl.java b/src/com/upgrad/ubank/services/TransactionServiceImpl.java index 7756c11..30d09fc 100644 --- a/src/com/upgrad/ubank/services/TransactionServiceImpl.java +++ b/src/com/upgrad/ubank/services/TransactionServiceImpl.java @@ -1,16 +1,32 @@ package com.upgrad.ubank.services; -import com.upgrad.ubank.Transaction; +import com.upgrad.ubank.dtos.Transaction; public class TransactionServiceImpl implements TransactionService{ + private Transaction[] transactions; + private int counter; + + public TransactionServiceImpl () { + transactions = new Transaction[100]; + counter = 0; + } + @Override public Transaction createTransaction(Transaction transaction) { - return null; + transactions[counter++] = transaction; + return transaction; } @Override public Transaction[] getTransactions(int accountNo) { - return new Transaction[0]; + Transaction[] temp = new Transaction[100]; + int counterTemp = 0; + for (int i=0; i