@syedahoorainali/giaic
Version:
A vibrant Command-Line Interface for managing student records, built with TypeScript.
41 lines (40 loc) • 1.58 kB
JavaScript
import chalk from 'chalk';
import inquirer from 'inquirer';
import { createSpinner } from "nanospinner";
import { sleep } from '../utils.js';
// Function to pay fees for a student
const payFees = async (student) => {
console.log('');
// Prompt the user to confirm that they want pay fees
const { confirm } = await inquirer.prompt({
message: `Are you sure want to pay fees for ${student.course}?`,
name: 'confirm',
type: 'confirm',
default: true,
});
// Start spinner animation for processing the fee payment
const spinner = createSpinner(chalk.yellowBright("Paying fees...")).start();
await sleep(); // Simulate processing time
// If user cancels, display error message and return
if (!confirm) {
spinner.error({ text: chalk.redBright('Something went wrong') });
return student;
}
// If fees is already paid return
if (student.isPaid) {
spinner.warn({ text: chalk.yellowBright('You have already paid your fees') });
return student;
}
// If balance is less than fees return
if (student.balance < student.fees) {
spinner.error({ text: chalk.redBright('Insufficient balance') });
return student;
}
// Pay fees and update balance
student.balance -= student.fees;
student.isPaid = true;
// Display success message for fees paid
spinner.success({ text: chalk.greenBright(`Fees paid successfully. Remaining balance: ${student.balance}`) });
return student; // return the updated student
};
export default payFees;