Advertisement
Guest User

Parking

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