public override IAnswer execute() { Database.SeatRequest sr = new Database.SeatRequest (); Database.FlightRequest fr = new Database.FlightRequest (); List<Database.Seat> databaseSeats = new List<Database.Seat> (); List<Database.Flight> flights = fr.fetchFlightFromCodeAndStartDate (flight.Template.Code, flight.StartDate); if (flights.Count != 1) { throw new Exception("No (unique) flight found with code " + flight.Template.Code + " and start date " + flight.StartDate); } int flightID = flights[0].ID; if (seatClass != null) { Database.ClassRequest cr = new Database.ClassRequest (); List<Database.Class> classes = cr.fetchClassFromName (seatClass.Name); if(classes.Count != 1){ throw new Exception("No (unique) class found with name " + seatClass.Name); } int classID = classes[0].ID; databaseSeats = sr.fetchSeatFromFlighAndClass (flightID, classID); } else { databaseSeats = sr.fetchSeatFromFlight (flightID); } List<Seat> seats = new List<Seat>(); Database.ClassRequest clr = new Database.ClassRequest(); foreach (Database.Seat s in databaseSeats) { SeatClass sc = new SeatClass(clr.fetchFromID(s.class_)[0].name); seats.Add(new Seat(sc, s.number)); } return new AnswerGetSeats(seats); }
public override IAnswer execute() { Database.FlightRequest fr = new Database.FlightRequest (); Database.PassengerRequest pr = new Database.PassengerRequest (); Database.SeatRequest sr = new Database.SeatRequest (); Database.ClassRequest cr = new Database.ClassRequest (); Database.AirplaneRequest ar = new Database.AirplaneRequest (); List<Database.Class> classes = cr.fetchClassFromName (this.Booking.Seat.SeatClass.Name); if (classes.Count != 1) { return new AnswerAdd ("No (unique) class found with name " + this.Booking.Seat.SeatClass.Name); } int classID = classes [0].ID; List<Database.Flight> flights = fr.fetchFlightFromCodeAndStartDate (code: this.Booking.Flight.Template.Code, startDate: this.Booking.Flight.StartDate); if (flights.Count != 1) { return new AnswerAdd("No (unique) flight found with code " + this.Booking.Flight.Template.Code + " at " + this.Booking.Flight.StartDate); } Database.Flight flight = flights[0]; int flightID = flight.ID; List<Database.Airplane> airplanes = ar.fetchFromID (flight.airplane); int airplaneID = airplanes[0].ID; List<Database.Seat> seats = sr.fetchSeatFromClassNumberAndAirplane (class_: classID, number: this.Booking.Seat.Number, airplane: airplaneID); if (seats.Count != 1) { return new AnswerAdd ("No (unique) seat found with number " + this.Booking.Seat.Number + " from class " + this.Booking.Seat.SeatClass.Name); } int seatID = seats [0].ID; List<Database.Passenger> passengers = pr.fetchPassengerFromName (this.Booking.Passenger.Name); if (passengers.Count != 1) { return new AnswerAdd ("No (unique) passenger found with name " + this.Booking.Passenger.Name); } int passengerID = passengers [0].ID; Database.Booking booking = new Database.Booking (flight: flightID, passenger: passengerID, seat: seatID); AnswerAdd aa = new AnswerAdd (); try { booking.insert(); } catch (Exception e) { aa = new AnswerAdd(e.Message); } return aa; }
public override IAnswer execute() { List<int> seats = new List<int> (); Database.SeatRequest sr = new Database.SeatRequest (); Database.ClassRequest cr = new Database.ClassRequest (); bool newSeats = false; if (this.Airplane.Seats == null) { return new AnswerAdd("The seats of the airplane aren't set"); } foreach (Seat s in this.Airplane.Seats) { List<Database.Class> classes = cr.fetchClassFromName (s.SeatClass.Name); if(classes.Count != 1){ return new AnswerAdd("No (unique) class found with name " + s.SeatClass.Name); } int classID = classes[0].ID; List<Database.Seat> databaseSeats = sr.fetchSeatFromClassAndNumber (class_: classID, number: s.Number); if(databaseSeats.Count == 0){ Database.Seat s_ = new Database.Seat(classID, s.Number, -1); try { s_.insert(); } catch (Exception e){ return new AnswerAdd(e.Message); } newSeats = true; databaseSeats = sr.fetchSeatFromClassNumberAndAirplane (class_: classID, number: s.Number, airplane: -1); } int seatID = databaseSeats[0].ID; seats.Add (seatID); } Database.Airplane airplane = new Database.Airplane (type: this.Airplane.Type, seat: seats, code: this.Airplane.Code); AnswerAdd aa = new AnswerAdd (); try { int airplaneID = airplane.insert(); if (newSeats){ sr.updateSeats(airplaneID); } } catch (Exception e) { aa = new AnswerAdd(e.Message); } return aa; }
private List<Flight> adapt(List<Database.Flight> dfs) { Database.FlightTemplateRequest ftr = new Database.FlightTemplateRequest(); Database.AirlineRequest alr = new Database.AirlineRequest(); Database.AirplaneRequest apr = new Database.AirplaneRequest(); Database.LocationRequest lr = new Database.LocationRequest(); Database.SeatRequest sr = new Database.SeatRequest(); Database.ClassRequest cr = new Database.ClassRequest(); Database.CountryRequest cor = new Database.CountryRequest(); Database.CityRequest cir = new Database.CityRequest(); Database.AirportRequest ar = new Database.AirportRequest(); List<Flight> fs = new List<Flight>(); foreach(Database.Flight f in dfs){ Database.FlightTemplate ft = ftr.fetchFromID(f.template)[0]; Database.Airline airline_ = alr.fetchFromID(ft.airline)[0]; Airline airline = new Airline(Name: airline_.name, Code: airline_.code); FlightTemplate template = new FlightTemplate(ft.digits, airline); Database.Location l = lr.fetchFromID(f.location)[0]; Database.Airport startAirport_ = ar.fetchFromID(l.start_airport)[0]; Database.Airport destinationAirport_ = ar.fetchFromID(l.destination_airport)[0]; Country startCountry = new Country(cor.fetchFromID(startAirport_.country)[0].name); Country destinationCountry = new Country(cor.fetchFromID(destinationAirport_.country)[0].name); City startCity = new City(cir.fetchFromID(startAirport_.city)[0].name, startCountry); City destinationCity = new City(cir.fetchFromID(destinationAirport_.city)[0].name, destinationCountry); Airport startAirport = new Airport(startAirport_.name, startAirport_.code, startCity); Airport destinationAirport = new Airport(destinationAirport_.name, destinationAirport_.code, destinationCity); Database.Airplane airplane_ = apr.fetchFromID(f.airplane)[0]; List<Seat> seats = new List<Seat>(); foreach(int s in airplane_.seat){ Database.Seat seat_ = sr.fetchFromID(s)[0]; Database.Class seatClass_ = cr.fetchFromID(seat_.class_)[0]; SeatClass seatClass = new SeatClass(seatClass_.name); seats.Add(new Seat(seatClass, seat_.number)); } Airplane airplane = new Airplane(airplane_.type, seats, airplane_.code); fs.Add(new Flight(template, f.start, f.end, startAirport, destinationAirport, airplane)); } return fs; }
private int getClassID() { int classID = -1; if (this.SeatClass != null) { Database.ClassRequest cr = new Database.ClassRequest(); List<Database.Class> classes = cr.fetchClassFromName(this.SeatClass.Name); if(classes.Count() != 1){ throw new Exception("A (unique) class with name " + this.SeatClass.Name + " could not be found."); } classID = classes[0].ID; } return classID; }