Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //JUDGE - 88/100
- class Parking {
- constructor(capacity) {
- this.capacity = capacity;
- this.vehicles = [];
- }
- addCar(carModel, carNumber) {
- if (this.vehicles.length >= this.capacity) {
- throw new Error("Not enough parking space.");
- }
- let newCar = { carModel, carNumber, payed: false };
- this.vehicles.push(newCar);
- return `The ${carModel}, with a registration number ${carNumber}, parked.`;
- }
- removeCar(carNumber) {
- let foundCar = this.vehicles.find((i) => i.carNumber == carNumber);
- if (foundCar) {
- if (foundCar.payed) {
- let foundCarIndex = this.vehicles.findIndex(
- (i) => i.carNumber == carNumber
- );
- this.vehicles.splice(foundCarIndex, 1);
- return `${carNumber} left the parking lot.`;
- } else {
- return `${carNumber} needs to pay before leaving the parking lot.`;
- }
- } else {
- throw new Error("The car, you're looking for, is not found.");
- }
- }
- pay(carNumber) {
- let foundCar = this.vehicles.find((i) => i.carNumber == carNumber);
- if (foundCar) {
- if (foundCar.payed) {
- throw new Error(`${carNumber}\'s driver has already payed his ticket.`);
- } else {
- foundCar.payed = true;
- return `${carNumber}\'s driver successfully payed for his stay.`;
- }
- } else {
- throw new Error(`${carNumber} is not in the parking lot.`);
- }
- }
- getStatistics(carNumber) {
- if (carNumber) {
- let foundCar = this.vehicles.find((i) => i.carNumber == carNumber);
- if (foundCar.payed) {
- return `${foundCar.carModel} == ${foundCar.carNumber} - Has payed`;
- } else {
- return `${foundCar.carModel} == ${foundCar.carNumber} - Not payed`;
- }
- } else {
- let sorted = this.vehicles.sort((a, b) =>
- a.carModel.localeCompare(b.carModel)
- );
- let emptySlots = this.capacity - this.vehicles.length;
- let message = `The Parking Lot has ${emptySlots} empty spots left.`;
- sorted.forEach((car) => {
- if (car.payed) {
- message += "\n" + `${car.carModel} == ${car.carNumber} - Has payed`;
- } else {
- message += "\n" + `${car.carModel} == ${car.carNumber} - Not payed`;
- }
- });
- return message;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement