Advertisement
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) {
- if (this.flights.some(f => f.flightNumber === flightNumber)) {
- return `Flight ${flightNumber} to ${destination} is already available.`;
- } else {
- let flight = {
- flightNumber,
- destination,
- departureTime,
- price,
- bookings: 0
- };
- this.flights.push(flight);
- return `Flight ${flightNumber} to ${destination} has been added to the system.`;
- }
- }
- bookFlight(passengerName, flightNumber) {
- if (!this.flights.some(f => f.flightNumber === flightNumber)) {
- return `Flight ${flightNumber} is not available for booking.`;
- } else {
- this.bookings.push({ flightNumber, passengerName });
- this.bookingsCount++;
- return `Booking for passenger ${passengerName} on flight ${flightNumber} is confirmed.`;
- }
- }
- cancelBooking(passengerName, flightNumber) {
- const index = this.bookings.findIndex(b => b.passengerName === passengerName && b.flightNumber === flightNumber);
- if (index === -1) {
- throw new Error(`Booking for passenger ${passengerName} on flight ${flightNumber} not found.`);
- }
- this.bookings.splice(index, 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 result = `All bookings(${this.bookingsCount}):`;
- for (let i = 0; i < this.bookings.length; i++) {
- const booking = this.bookings[i];
- result += `\n${booking.passengerName} booked for flight ${booking.flightNumber}.`;
- }
- return result;
- } else if (criteria === "cheap") {
- let cheapBookings = this.bookings.filter(b => this.flights[b.flightNumber].price <= 100);
- if (cheapBookings.length === 0) {
- return "No cheap bookings found.";
- }
- let result = "Cheap bookings:";
- for (let i = 0; i < cheapBookings.length; i++) {
- let booking = cheapBookings[i];
- result += `\n${booking.passengerName} booked for flight ${booking.flightNumber}.`;
- }
- return result;
- } else if (criteria === "expensive") {
- let expensiveBookings = this.bookings.filter(b => this.flights[b.flightNumber].price > 100);
- if (expensiveBookings.length === 0) {
- return "No expensive bookings found.";
- }
- let result = "Expensive bookings:";
- for (let booking of expensiveBookings) {
- result += `\n${booking.passengerName} booked for flight ${booking.flightNumber}.`;
- }
- return result;
- } else {
- throw new Error(`Invalid criteria: ${criteria}`);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement