atm-functionality
Version:
Explore our versatile library for effortless ATM functionality in your TypeScript and Node.js projects. Mimicking real-world banking operations, our NPM package seamlessly incorporates ATM features such as withdrawals, deposits, balance inquiries, and acc
100 lines (99 loc) • 3.19 kB
JavaScript
import inquirer from "inquirer";
import chalk from "chalk";
import chalkAnimation from "chalk-animation";
const sleep = () => {
return new Promise((res) => {
setTimeout(res, 2000);
});
};
async function welcome() {
let first_Animation = chalkAnimation.rainbow(" <<<====>>> Lets Get Started <<====>>>");
await sleep();
first_Animation.stop();
}
await welcome();
let balance = Math.floor(Math.random() * 10000000);
async function mainPart() {
let answers = await inquirer.prompt([
{
name: "userId",
type: "input",
message: chalk.blue.bold(`Enter Your ID`),
},
{
name: "userPin",
type: "number",
message: chalk.blue.bold(`Enter Your PASSWORD`),
when(answers) {
return answers.userId;
},
validate: function (input) {
const pin = Number(input);
if (isNaN(pin)) {
return "Invalid input. Please enter a valid number.";
}
else {
return true;
}
}
},
{
name: "account_Type",
type: "list",
message: chalk.redBright.bold(`Please Select Account Type ==>>`),
choices: ["Current Account", "Saving Account"],
when(answers) {
return answers.userPin;
},
},
{
name: "transiction_Type",
type: "list",
choices: ["Fast Cash", "Cash Withdrawl"],
message: chalk.blueBright.bold.underline(`Select Your Transiction Type ==>>`),
when(answers) {
return answers.account_Type;
},
},
{
name: "amount",
type: "list",
choices: ["1000", "5000", "10000", "15000", "20000"],
message: chalk.blueBright.green(`Select Your Amount \tYour Current Balance Is: (${balance})\n `),
when(answers) {
return answers.transiction_Type === "Fast Cash";
},
},
{
name: "amount",
type: "number",
message: chalk.blueBright.green(`Enter Your Amount \tYour Current Balance Is: (${balance})\n `),
when(answers) {
return answers.transiction_Type === "Cash Withdrawl";
},
},
]);
if (answers.userId && answers.userPin) {
if (balance >= answers.amount) {
let remaining_balance = balance - answers.amount;
console.log(chalk.yellowBright.underline.bold(`Transiction Successfully Your Remaning Balance is `, remaining_balance));
}
else {
console.log(chalk.bgRed.white.bold(`Insufficient Balance !!`));
}
}
}
async function loop() {
do {
await mainPart();
var loop_start = await inquirer.prompt({
name: "restart",
type: "list",
message: "Do You Want To Continue",
choices: ["Yes", "No"]
});
} while (loop_start.restart == "Yes");
}
;
await loop();