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