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;
 }
Exemple #5
0
 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;
 }