Advertisement
Liliana797979

parking - js advanced exam

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