Untitled
unknown
plain_text
5 years ago
2.1 kB
5
Indexable
class Parking {
constructor(capacity) {
this.capacity = Number(capacity);
this.vehicles = [];
}
addCar(carModel, carNumber) {
if (this.capacity === this.vehicles.length) {
throw new Error(`Not enough parking space.`);
}
this.vehicles.push({
carModel: carModel,
carNumber: carNumber,
payed: false,
})
return `The ${carModel}, with a registration number ${carNumber}, parked.`;
}
removeCar(carNumber) {
let test = this.vehicles.find(a => a.carNumber == carNumber);
if (test == undefined) {
throw new Error(`The car, you're looking for, is not found.`);
}
if (!test.payed) {
throw new Error(`${carNumber} needs to pay before leaving the parking lot.`);
}
this.vehicles = this.vehicles.filter(a => a.carNumber !== carNumber)
return `${carNumber} left the parking lot.`;
}
pay(carNumber) {
let test = this.vehicles.find(a => a.carNumber === carNumber);
if (test == undefined) {
throw new Error(`${carNumber} is not in the parking lot.`);
}
if (test.payed) {
throw new Error(`${carNumber}'s driver has already payed his ticket`);
}
test.payed = true;
return `${carNumber}'s driver successfully payed for his stay.`;
}
getStatistics(carNumber) {
if (carNumber === undefined) {
let print = `The Parking Lot has ${this.capacity - this.vehicles.length} empty spots left.`;
this.vehicles.sort((a, b) => a.carModel.localeCompare(b.carModel)).forEach(element => {
print += `\n${element.carModel} == ${element.carNumber} - ${element.payed ? 'Has payed' : 'Not payed'}`;
});
return print;
}
let test = this.vehicles.find(a => a.carNumber === carNumber);
return `${test.carModel} == ${test.carNumber} - ${test.payed ? 'Has payed' : 'Not payed'}`;
}
}Editor is loading...