Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 21 additions & 6 deletions src/com/upgrad/ubank/Application.java
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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 () {
Expand All @@ -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 () {
Expand Down Expand Up @@ -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);
}
}

Expand All @@ -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();
}
Expand Down
46 changes: 46 additions & 0 deletions src/com/upgrad/ubank/dtos/Account.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
55 changes: 55 additions & 0 deletions src/com/upgrad/ubank/dtos/Transaction.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
3 changes: 1 addition & 2 deletions src/com/upgrad/ubank/services/AccountService.java
Original file line number Diff line number Diff line change
@@ -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);
Expand Down
26 changes: 21 additions & 5 deletions src/com/upgrad/ubank/services/AccountServiceImpl.java
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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) {
Expand Down Expand Up @@ -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;
}

/*
Expand All @@ -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;
}
Expand Down
2 changes: 1 addition & 1 deletion src/com/upgrad/ubank/services/TransactionService.java
Original file line number Diff line number Diff line change
@@ -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);
Expand Down
22 changes: 19 additions & 3 deletions src/com/upgrad/ubank/services/TransactionServiceImpl.java
Original file line number Diff line number Diff line change
@@ -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<counter; i++) {
if (transactions[i].getAccountNo() == accountNo) {
temp[counterTemp++] = transactions[i];
}
}
return temp;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.upgrad.ubank.services;

import com.upgrad.ubank.Transaction;
import com.upgrad.ubank.dtos.Transaction;

public class TransactionServiceImplMobile implements TransactionService {
@Override
Expand Down