Advertisement
ralichka

Untitled

Dec 8th, 2020
503
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class Parking {
  2.     constructor(capacity) {
  3.         this.capacity = Number(capacity);
  4.         this.vehicles = [];
  5.  
  6.     }
  7.  
  8.     addCar(carModel, carNumber) {
  9.  
  10.         if (this.capacity == this.vehicles.length) {
  11.             throw new Error(`Not enough parking space.`);
  12.         }
  13.         let car = {
  14.             carModel,
  15.             carNumber,
  16.             payed: false
  17.         };
  18.         this.vehicles.push(car);
  19.         return `The ${carModel}, with a registration number ${carNumber}, parked.`
  20.     }  
  21.  
  22.     removeCar(carNumber) {
  23.         let car = this.vehicles.find(x => x.carNumber == carNumber);
  24.  
  25.         if (!car) {
  26.             throw new Error(`The car, you're looking for, is not found.`);
  27.        }
  28.        if (car.payed === false) {
  29.            throw new Error(`${carNumber} needs to pay before leaving the parking lot.`);
  30.        }
  31.        this.vehicles = this.vehicles.filter(x => x.carNumber !== carNumber);
  32.        return `${carNumber} left the parking lot.`;
  33.  
  34.    }
  35.  
  36.    pay(carNumber) {
  37.        let car = this.vehicles.find(x => x.carNumber == carNumber);
  38.  
  39.        if (!car) {
  40.            throw new Error(`${carNumber} is not in the parking lot.`);
  41.        }
  42.        if (car.payed ) {
  43.            throw new Error(`${carNumber}'s driver has already payed his ticket.`)
  44.         }else {
  45.  
  46.             car.payed = true;
  47.             return `${car.carNumber}'s driver successfully payed for his stay.`;
  48.        }
  49.    }
  50.  
  51.    getStatistics(carNumber) {
  52.        let output = '';
  53.        let car = this.vehicles.find(x=>x.carNumber === carNumber);
  54.        if (carNumber === undefined) {
  55.            output = `The Parking Lot has ${this.capacity - this.vehicles.length} empty spots left.\n`;
  56.  
  57.            this.vehicles = this.vehicles.sort((a, b) => {
  58.                return a.carModel.localeCompare(b.carModel);
  59.  
  60.            })
  61.            for (const car of this.vehicles) {
  62.                let payment = car.payed ? `Has payed` : `Not payed`;
  63.                output += `${car.carModel} == ${car.carNumber} - ${payment}\n`;
  64.            }
  65.            return output.trim();
  66.        } else {
  67.            let payment = car.payed ? `Has payed` : `Not payed`;
  68.            return `${car.carModel} == ${car.carNumber} - ${payment}`;
  69.        }
  70.    }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement