teofarov13

Untitled

Oct 21st, 2023
782
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class FlightBookingSystem {
  2.     constructor(agencyName) {
  3.         this.agencyName = agencyName;
  4.         this.flights = [];
  5.         this.bookings = [];
  6.         this.bookingsCount = 0;
  7.     }
  8.  
  9.     addFlight(flightNumber, destination, departureTime, price) {
  10.         const flightExists = this.flights.some(
  11.             (flight) => flight.flightNumber === flightNumber
  12.         );
  13.         if (flightExists) {
  14.             return `Flight ${flightNumber} to ${destination} is already available.`;
  15.         }
  16.         this.flights.push({
  17.             flightNumber,
  18.             destination,
  19.             departureTime,
  20.             price,
  21.         });
  22.         return `Flight ${flightNumber} to ${destination} has been added to the system.`;
  23.     }
  24.  
  25.     bookFlight(passengerName, flightNumber) {
  26.         const flight = this.flights.find(
  27.             (flight) => flight.flightNumber === flightNumber
  28.         );
  29.         if (!flight) {
  30.             return `Flight ${flightNumber} is not available for booking.`;
  31.         }
  32.         this.bookings.push({
  33.             passengerName,
  34.             flightNumber,
  35.         });
  36.         this.bookingsCount++;
  37.         return `Booking for passenger ${passengerName} on flight ${flightNumber} is confirmed.`;
  38.     }
  39.  
  40.     cancelBooking(passengerName, flightNumber) {
  41.         const bookingIndex = this.bookings.findIndex(
  42.             (booking) =>
  43.                 booking.passengerName === passengerName &&
  44.                 booking.flightNumber === flightNumber
  45.         );
  46.         if (bookingIndex === -1) {
  47.             throw new Error(
  48.                 `Booking for passenger ${passengerName} on flight ${flightNumber} not found.`
  49.             );
  50.         }
  51.         this.bookings.splice(bookingIndex, 1);
  52.         this.bookingsCount--;
  53.         return `Booking for passenger ${passengerName} on flight ${flightNumber} is cancelled.`;
  54.     }
  55.  
  56.     showBookings(criteria) {
  57.         if (this.bookings.length === 0) {
  58.             throw new Error(`No bookings have been made yet.`);
  59.         }
  60.         if (criteria === "all") {
  61.             let bookingsList = `All bookings(${this.bookingsCount}):\n`;
  62.             this.bookings.forEach((booking) => {
  63.                 bookingsList += `${booking.passengerName} booked for flight ${booking.flightNumber}.\n`;
  64.             });
  65.             return bookingsList.trim();
  66.         } else if (criteria === "cheap") {
  67.             const cheapBookings = this.bookings.filter(
  68.                 (booking) =>
  69.                     this.flights.find((flight) => flight.flightNumber === booking.flightNumber).price <= 100
  70.             );
  71.             if (cheapBookings.length === 0) {
  72.                 return "No cheap bookings found.";
  73.             }
  74.             let bookingsList = "Cheap bookings:\n";
  75.             cheapBookings.forEach((booking) => {
  76.                 bookingsList += `${booking.passengerName} booked for flight ${booking.flightNumber}.\n`;
  77.             });
  78.             return bookingsList.trim();
  79.         } else if (criteria === "expensive") {
  80.             const expensiveBookings = this.bookings.filter(
  81.                 (booking) =>
  82.                     this.flights.find((flight) => flight.flightNumber === booking.flightNumber).price > 100
  83.             );
  84.             if (expensiveBookings.length === 0) {
  85.                 return "No expensive bookings found.";
  86.             }
  87.             let bookingsList = "Expensive bookings:\n";
  88.             expensiveBookings.forEach((booking) => {
  89.                 bookingsList += `${booking.passengerName} booked for flight ${booking.flightNumber}.\n`;
  90.             });
  91.             return bookingsList.trim();
  92.         } else {
  93.             throw new Error(`Invalid criteria: ${criteria}`);
  94.         }
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment