protected override IRequest InternalToTransferCodeBase(IPuzzlePiece root, ITree<IPuzzlePiece> matchtree, Dictionary<string, object> bindings) { ILocation loca = TilingUtils.MatchLocation (matchtree.ChildAt(0x00).ChildAt(0x00).Data); ILocation locb = TilingUtils.MatchLocation (matchtree.ChildAt(0x00).ChildAt(0x01).Data); DateTime dt = bindings.ValueOrDefault<string,object,DateTime>("time"); string als = bindings.ValueOrDefault<string,object,string>("airlinecode"); string scs = bindings.ValueOrDefault<string,object,string>("classname"); Airline al = null; SeatClass sc = null; if(als != null) { al = new Airline (als); } if(scs != null) { sc = new SeatClass (scs); } if (loca is Country && locb is Country) { return new RequestGetFlights ((Country)loca, (Country)locb, dt, al, sc); } else if (loca is City && locb is City) { return new RequestGetFlights ((City)loca, (City)locb, dt, al, sc); } else if (loca is Airport && locb is Airport) { return new RequestGetFlights ((Airport)loca, (Airport)locb, dt, al, sc); } else { return null; } }
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); }
protected override IRequest InternalToTransferCode(IPuzzlePiece root, Dictionary<string, object> bindings) { List<Seat> seats = new List<Seat>(); int n = root.NumberOfChildren; Dictionary<string,object> bind = new Dictionary<string,object>(); for(int i = 0x01; i < n; i++) { if(Tree<TypeBind>.ConjunctiveTreeNonSwapMatchPredicate(bindseattree,0x00,root[i],(x,y,z) => TypeBind.MatchBind(x,y,z,bind),TypeBind.GetOptional)) { //(bindseat.MatchBind(i,root[i],bind))) { //if(bind["number"] != null) { int m = (int) bind["number"]; SeatClass sc = new SeatClass((string) bind["name"]); seats.Add(new Seat(sc,m)); //} bind.Clear(); } } return new RequestAddAirplane(new Airplane((string) bindings["airplanetype"],seats,(string) bindings["airplanecode"])); }
public RequestAddSeatClass(SeatClass SeatClass) { this.SeatClass = SeatClass; }
public Seat(SeatClass SeatClass, int Number) { this.SeatClass = SeatClass; this.Number = Number; }
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 void setCommon(DateTime Start, Airline Airline, SeatClass SeatClass) { this.Start = Start; this.Airline = Airline; this.SeatClass = SeatClass; }
public RequestGetFlights(Country Country1, Country Country2, DateTime Start = default(DateTime), Airline Airline = null, SeatClass SeatClass = null) { this.Country1 = Country1; this.Country2 = Country2; setCommon(Start, Airline, SeatClass); }
public RequestGetFlights(Airport Airport1, Airport Airport2, DateTime Start = default(DateTime), Airline Airline = null, SeatClass SeatClass = null) { this.Airport1 = Airport1; this.Airport2 = Airport2; setCommon(Start, Airline, SeatClass); }
public RequestGetSeats(Flight flight, SeatClass seatClass = null) { this.flight = flight; this.seatClass = seatClass; }