Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class FlightBookingSystem {
- constructor(agencyName) {
- this.agencyName = agencyName;
- this.flights = [];
- this.bookings = [];
- this.bookingsCount = 0;
- }
- addFlight(flightNumber, destination, departureTime, price) {
- const flightExists = this.flights.some(
- (flight) => flight.flightNumber === flightNumber
- );
- if (flightExists) {
- return `Flight ${flightNumber} to ${destination} is already available.`;
- }
- this.flights.push({
- flightNumber,
- destination,
- departureTime,
- price,
- });
- return `Flight ${flightNumber} to ${destination} has been added to the system.`;
- }
- bookFlight(passengerName, flightNumber) {
- const flight = this.flights.find(
- (flight) => flight.flightNumber === flightNumber
- );
- if (!flight) {
- return `Flight ${flightNumber} is not available for booking.`;
- }
- this.bookings.push({
- passengerName,
- flightNumber,
- });
- this.bookingsCount++;
- return `Booking for passenger ${passengerName} on flight ${flightNumber} is confirmed.`;
- }
- cancelBooking(passengerName, flightNumber) {
- const bookingIndex = this.bookings.findIndex(
- (booking) =>
- booking.passengerName === passengerName &&
- booking.flightNumber === flightNumber
- );
- if (bookingIndex === -1) {
- throw new Error(
- `Booking for passenger ${passengerName} on flight ${flightNumber} not found.`
- );
- }
- this.bookings.splice(bookingIndex, 1);
- this.bookingsCount--;
- return `Booking for passenger ${passengerName} on flight ${flightNumber} is cancelled.`;
- }
- showBookings(criteria) {
- if (this.bookings.length === 0) {
- throw new Error(`No bookings have been made yet.`);
- }
- if (criteria === "all") {
- let bookingsList = `All bookings(${this.bookingsCount}):\n`;
- this.bookings.forEach((booking) => {
- bookingsList += `${booking.passengerName} booked for flight ${booking.flightNumber}.\n`;
- });
- return bookingsList.trim();
- } else if (criteria === "cheap") {
- const cheapBookings = this.bookings.filter(
- (booking) =>
- this.flights.find((flight) => flight.flightNumber === booking.flightNumber).price <= 100
- );
- if (cheapBookings.length === 0) {
- return "No cheap bookings found.";
- }
- let bookingsList = "Cheap bookings:\n";
- cheapBookings.forEach((booking) => {
- bookingsList += `${booking.passengerName} booked for flight ${booking.flightNumber}.\n`;
- });
- return bookingsList.trim();
- } else if (criteria === "expensive") {
- const expensiveBookings = this.bookings.filter(
- (booking) =>
- this.flights.find((flight) => flight.flightNumber === booking.flightNumber).price > 100
- );
- if (expensiveBookings.length === 0) {
- return "No expensive bookings found.";
- }
- let bookingsList = "Expensive bookings:\n";
- expensiveBookings.forEach((booking) => {
- bookingsList += `${booking.passengerName} booked for flight ${booking.flightNumber}.\n`;
- });
- return bookingsList.trim();
- } else {
- throw new Error(`Invalid criteria: ${criteria}`);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment