Advertisement
mirozspace

task e2410 - 3

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