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.vehicles.length < this.capacity) {
- this.vehicles.push({ carModel, carNumber, payed: false, });
- return `The ${carModel}, with a registration number ${carNumber}, parked.`
- } else {
- throw new Error('Not enough parking space.')
- }
- }
- removeCar(carNumber) {
- if (!this.vehicles.find(x => x.carNumber == carNumber)) {
- throw new Error("The car, you're looking for, is not found.")
- }
- let car = this.vehicles.find(x => x.carNumber == carNumber);
- if (car.payed == false) {
- throw new Error(`${carNumber} needs to pay before leaving the parking lot.`);
- }
- let index = this.vehicles.indexOf(this.vehicles.find(x => x.carNumber == carNumber));
- this.vehicles.splice(index, 1);
- return `${carNumber} left the parking lot.`
- }
- pay(carNumber) {
- if (!this.vehicles.find(x => x.carNumber == carNumber)) {
- throw new Error(`${carNumber} is not in the parking lot.`)
- }
- if (this.vehicles.find(x => x.payed == true)) {
- throw new Error(`${carNumber}'s driver has already payed his ticket.`);
- }
- let car = this.vehicles.find(x => x.carNumber == carNumber);
- car.payed = true;
- return `${carNumber}'s driver successfully payed for his stay.`
- }
- getStatistics(carNumber) {
- let car = this.vehicles.find(x => x.carNumber == carNumber);
- let model = car.carModel;
- let result = '\n';
- if (carNumber) {
- result = `${model} == ${carNumber} - `
- if (car.payed == true) {
- result += 'Has payed';
- } else {
- result += 'Not payed';
- }
- } else {
- let emptySlots = this.capacity - this.vehicles.length;
- result += `The Parking Lot has ${emptySlots} empty spots left.`
- let sorted = this.vehicles.sort((a, b) => a.carModel.localeCompare(b.carModel));
- sorted.forEach(x => {
- result += "\n";
- result += `${x.carModel} == ${x.carNumber} - `
- if (x.payed == true) {
- result += 'Has payed';
- } else {
- result += 'Not payed';
- }
- })
- }
- return result.trim();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement