This is more or less what i intend to implement, not final.
-
User:
- role:
usertype - firstName:
string - lastName:
string - id:
UUID
- role:
-
Flight:
-
DepartureCountry:
string -
DestinationCountry:
string -
DepartureDate:
Date -
ArrivalDate:
Date -
ArrivalAirport:
string/UUID -
DepartureAirport:
string/UUID -
AvailableClasses:
FlightClass -
AvailableSeats:
Dict<FlightClass, int> -
PricePerClass:
Dict<FlightClass, Decimal> -
id:
uuid -
getConstraints()
-
-
Airport ?:
- id:
UUID - name:
string - Country:
string
- id:
-
Bookings:
- id: UUID
- UserID: UUID
- flightID: UUID
- bookedClass: FlightClass
- Satus: BookingStatus
-
commands:
-
launch()
first thing when executing app, ask for name for login, create user f not found and user wants. -
searchFlights
// ask to filter, list parameters, enter parameter selected, ask for Nth parameter, repeat if yes, return foound flighs -
bookFlight
do searchflight, let user select desired flight, ask for class, done -
ManageBookings() ask for
- modifyBooking, let change class, and pay price
- Cancelbooking
- viewBookings
-
displaybookings // ask for parameters to filter
-
uploadFlights // ask for file url
-
verifyLastUploadedFlightData
-
diplayFlightDataConstraints
-
-
Repository:
- getUserOrDefault()
- getAllFlights()
- getFlightsWhere()
- getBookings
- getBookingsWhere()
- validateFlights()
- importFlights()
-
FlightClass: Enum
- economy
- economy plus
- business
- first class
-
UserType: Enum
- admin
- client
Develop a .NET console application for an airport ticket booking system. This application should enable passengers to book flight tickets and allow a manager to manage the bookings.
- Use the file system as the data storage layer.
- Book a Flight:
- Select a flight based on various search parameters.
- Choose a class for the flight (Economy, Business, First Class). Prices should vary according to the class selected.
- Search for Available Flights:
- Parameters:
- Price
- Departure Country
- Destination Country
- Departure Date
- Departure Airport
- Arrival Airport
- Class
- Parameters:
- Manage Bookings:
- Cancel a booking
- Modify a booking
- View personal bookings
- Filter Bookings:
- Parameters:
- Flight
- Price
- Departure Country
- Destination Country
- Departure Date
- Departure Airport
- Arrival Airport
- Passenger
- Class
- Parameters:
- Batch Flight Upload:
- Import a list of flights into the system using a CSV file.
- Validate Imported Flight Data:
- Apply model-level validations to the imported file data.
- Return a detailed list of errors to help the manager identify and rectify issues in the imported file.
- Dynamic Model Validation Details:
- Provide dynamically generated details about the validation constraints for each field of the flight data model.
- Example Result:
- Departure Country:
- Type: Free Text
- Constraint: Required
- Departure Date:
- Type: Date Time
- Constraint: Required, Allowed Range (today → future)
- Departure Country:
- Ensure the application is well-structured, readable, and maintainable.
- Apply best practices and conventions of C# programming.
- 3 days