parking-calculator-library
Version:
A library to calculate parking fees based on duration, with discounts for early bird, weekend, and loyalty members.
49 lines (38 loc) • 1.87 kB
JavaScript
import { ParkingFeeCalculator } from "./ParkingFeeCalculator.js";
document.getElementById("parkingForm").addEventListener("submit", function (e) {
e.preventDefault();
const calculator = new ParkingFeeCalculator();
const entryTimeInput = document.getElementById("entryTime").value;
const exitTimeInput = document.getElementById("exitTime").value;
const entryTime = new Date(entryTimeInput);
const exitTime = new Date(exitTimeInput);
const resultSection = document.getElementById("resultSection");
const parkingDuration = document.getElementById("parkingDuration");
const baseFee = document.getElementById("baseFee");
const discountsApplied = document.getElementById("discountsApplied");
const totalFee = document.getElementById("totalFee");
try {
const duration = calculator.calculateParkingDuration(entryTime, exitTime);
const baseParkingFee = calculator.calculateParkingFee(entryTime, exitTime);
const discountOptions = {
entryTime: entryTime,
earlyBird: document.getElementById("earlyBirdDiscount").checked,
weekendDiscount: document.getElementById("weekendDiscount").checked,
loyaltyMember: document.getElementById("loyaltyDiscount").checked,
};
const { fee: finalFee, discounts } = calculator.applyDiscounts(
baseParkingFee,
discountOptions
);
// Ensure 'UGX' is used as part of the string
parkingDuration.textContent = `${duration.toFixed(2)} hours`;
baseFee.textContent = `${baseParkingFee.toFixed(2)}`;
discountsApplied.textContent =
discounts.length > 0 ? discounts.join(", ") : "No discounts applied";
totalFee.textContent = `${finalFee.toFixed(2)}`;
resultSection.style.display = "block";
} catch (error) {
alert(error.message);
resultSection.style.display = "none";
}
});