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
Binary file removed 1.SitBack_Furniture-HTML/assets/images/chairs.png
Binary file not shown.
Binary file removed 1.SitBack_Furniture-HTML/assets/images/couches.png
Binary file not shown.
Empty file.
Binary file removed 1.SitBack_Furniture-HTML/assets/images/dining.png
Binary file not shown.
Binary file removed 1.SitBack_Furniture-HTML/assets/images/test.jpg
Binary file not shown.
135 changes: 0 additions & 135 deletions 1.SitBack_Furniture-HTML/index.html

This file was deleted.

25 changes: 25 additions & 0 deletions 16.Closures/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Closures</title>

<style>
button{
position: absolute;
top: 50%;
left: 50%;
transform : translateX(-50%);
}
</style>
</head>
<body>

<!-- FOR RETRYING INCASE OF ANY ERRORS IN INPUT -->
<button onclick="location.reload()"> ENTER INTO BANK </button>

<script src="scripts/index.js"></script>
</body>
</html>
128 changes: 128 additions & 0 deletions 16.Closures/scripts/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
/**
* HAS FUNCTIONS OF BANK LIKE 1.VALIDATING ENTRY ---On passing the entry---> 2.ATM 3.CDM
* @param {string} username
* @param {string} userpin
* @returns {object, function refernce} validAccountNumber, optionsInBank
*/
function validateEntry(username, userpin) {
//Record of Banks Accounts
let bankAccounts = [
{
accountNumber: "1234567890",
cardNumber: "4111111111111110",
PIN: "1234",
accountBalance: 100.00,
accountHolderName: "Account_Holder1"
},
{
accountNumber: "1234567891",
cardNumber: "4111111111111111",
PIN: "2345",
accountBalance: 100.00,
accountHolderName: "Account_Holder2"
},
{
accountNumber: "1234567892",
cardNumber: "4111111111111112",
PIN: "3456",
accountBalance: 100.00,
accountHolderName: "Account_Holder3"
},
{
accountNumber: "1234567893",
cardNumber: "4111111111111113",
PIN: "4567",
accountBalance: 100.00,
accountHolderName: "Account_Holder4"
},
{
accountNumber: "1234567894",
cardNumber: "4111111111111114",
PIN: "5678",
accountBalance: 100.00,
accountHolderName: "Account_Holder5"
},
];

//Verifying Validity of the user
let validAccountNumber = findAccountNumber (username, userpin);
/**
* FETCHES THE INDEX (FOR VERIFYING IF THE USER BELONGS TO THE BANK), NAME OF ACCOUNT HOLDER
* @param {string} username
* @param {string} userpin
* @returns {number, string} index, username
*/
function findAccountNumber(username, userpin){
const index = bankAccounts.findIndex(account => (account.accountNumber==username && account.PIN==userpin));
var userName="";
if(index>-1) userName = bankAccounts[index].accountHolderName;
return {index,userName};
}

/**
* HAS OPERATIONS LIKE ATM, CDM
* @param {number} option
* -Results are displayed with Alerts
*/
function optionsInBank(option){
let userAccountBalance = bankAccounts[validAccountNumber.index].accountBalance;
//Withdraw money from ATM
if(option==1){
const amount = prompt("Enter the amount of money you want to withdraw");
if(userAccountBalance>=amount){
bankAccounts[validAccountNumber.index].accountBalance-=amount;
alert("Please recieve the cash amount of Rs."+amount);
}
else{
alert("Sorry! Your requested cash amount exceeded your account balance");
}
}
//Depositing cash into Cash Deposit Machine
else{
const amount = parseInt(prompt("Enter the amount of money you want to deposit"));
bankAccounts[validAccountNumber.index].accountBalance+=amount;
}
userAccountBalance = bankAccounts[validAccountNumber.index].accountBalance;
alert("Your current account balance is Rs."+userAccountBalance);
}

//Returning the inner functions, thereby taking advantage of its closure (function with parent's lexical scope) to access the secret details
return {validAccountNumber, optionsInBank};
}


//STEP BY STEP PROCEDURE OF GETTING ACCESS TO BANK OPERATIONS
let username = prompt("Enter Your Account Number");
if(username) {
let userpin = prompt("Enter Your User PIN");
if(userpin) {
let accountNumber = validateEntry(username, userpin);

//VALID ACCOUNT HOLDER
if(accountNumber.validAccountNumber.index >-1){
alert("Welcome Mr/Ms/Mrs "+ accountNumber.validAccountNumber.userName);

let option = prompt("Enter option 1 for ATM"+"\n"+"Enter option 2 for Cash Deposit Machine");

//1 FOR ATM , 2 FOR CDM
if(option==1 || option==2){
accountNumber.optionsInBank(option);
}

//INVALID OPTION CHOSEN
else{
alert("Please enter a valid choice !");
}
}
//INVALID USER
else{
alert("Sorry you got your credentials wrong !");
}
}
else{
alert("Please Enter your user PIN !");
}
}
else{
alert("Please Enter your account number !");
}
Loading