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