Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Parking {
- capacity = 0;
- constructor(capacity) {
- this.capacity = Number(capacity);
- this.vehicles = [];
- }
- addCar(carModel, carNumber) {
- carModel = carModel + '';
- carNumber = carNumber + '';
- if (this.vehicles.length >= this.capacity) {
- throw new Error( 'Not enough parking space.');
- }
- let car = {carModel: carModel, carNumber: carNumber, payed: false};
- this.vehicles.push(car);
- this.capacity--;
- return `The ${carModel}, with a registration number ${carNumber}, parked.`;
- }
- removeCar(carNumber) {
- carNumber = carNumber + '';
- let foundCar = this.vehicles.find(c => c.carNumber === carNumber);
- if (!foundCar) {
- throw new Error('The car, you\'re looking for, is not found.')
- }
- if (foundCar.payed === false) {
- throw new Error(`${carNumber} needs to pay before leaving the parking lot.`);
- }
- this.vehicles = this.vehicles.filter(c => c.carNumber !== carNumber);
- this.capacity++;
- return `${carNumber} left the parking lot.`;
- }
- pay(carNumber) {
- carNumber = carNumber + '';
- let foundCar = this.vehicles.find(c => c.carNumber === carNumber);
- if (!foundCar) {
- throw new Error(`${carNumber} is not in the parking lot.`);
- }
- if (foundCar.payed === true) {
- throw new Error (`${carNumber}'s driver has already payed his ticket.`);
- }
- foundCar.payed = true;
- return `${carNumber}'s driver successfully payed for his stay.`;
- }
- getStatistics(carNumber) {
- let print = '';
- if (carNumber === undefined || carNumber === 'undefined' || carNumber === null || carNumber.trim() === '') {
- print += `The Parking Lot has ${this.capacity} empty spots left.\n`;
- let array1V = this.vehicles.sort((x, y) => x.carNumber - y.carNumber);
- for (const v of array1V) {
- if (v.payed === true) {
- print += `${v.carModel} == ${v.carNumber} - Has payed\n`;
- } else {
- print += `${v.carModel} == ${v.carNumber} - Not payed\n`;
- }
- }
- } else {
- let foundCar = this.vehicles.find(c => c.carNumber === carNumber);
- if (foundCar.payed === true) {
- print += `${foundCar.carModel} == ${foundCar.carNumber} - Has payed\n`;
- } else {
- print += `${foundCar.carModel} == ${foundCar.carNumber} - Not payed\n`;
- }
- }
- return print.trim();
- }
- }
- const parking = new Parking(12);
- console.log(parking.addCar("Volvo t600", "TX3691CA"));
- console.log(parking.getStatistics());
- console.log(parking.pay("TX3691CA"));
- console.log(parking.removeCar("TX3691CA"));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement