Advertisement
Guest User

Untitled

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