diff --git a/AirlineServer/AirlineServer/AirlineService.svc.cs b/AirlineServer/AirlineServer/AirlineService.svc.cs index 0d3c5c9..abba626 100644 --- a/AirlineServer/AirlineServer/AirlineService.svc.cs +++ b/AirlineServer/AirlineServer/AirlineService.svc.cs @@ -43,16 +43,14 @@ namespace AirlineServer return flight; } } - public ICollection> GetFlights(DateTime startTime, + public Dictionary> GetFlights(DateTime startTime, DateTime endTime, - string origin, string destination, int numberOfSeats) { - ICollection> freeFlights = new List>(); + Dictionary> freeFlights = new Dictionary>(); freeFlights = FindFlight.Search(this.flights, startTime, - endTime, origin, - destination, numberOfSeats); + endTime, destination, numberOfSeats); return freeFlights; } @@ -97,7 +95,7 @@ namespace AirlineServer DateTime zurichStartDate = new DateTime(2018, 08, 15, 12, 00, 00, 00); - DateTime baselStartDate = new DateTime(2018, 08, 15, 12, 00, + DateTime baselStartDate = new DateTime(2018, 08, 19, 12, 00, 00, 00); DateTime genfStartDate = new DateTime(2018, 08, 19, 12, 00, 00, 00); diff --git a/AirlineServer/AirlineServer/Helper/FindFlight.cs b/AirlineServer/AirlineServer/Helper/FindFlight.cs index 649a3f2..241a0ed 100644 --- a/AirlineServer/AirlineServer/Helper/FindFlight.cs +++ b/AirlineServer/AirlineServer/Helper/FindFlight.cs @@ -8,61 +8,60 @@ namespace AirlineServer.Helper { public static class FindFlight { - public static ICollection> Search( - ICollection flights, + public static Dictionary> Search( + List flights, DateTime startTime, DateTime endTime, string destination, - string origin, int numberOfSeats) { - ICollection> free_flights = - new List>(); + Dictionary> free_flights = + new Dictionary>(); var flightsWithSeats = FindFlight .FlightsWithSeats(flights, numberOfSeats); var flightsTo= FindFlight - .FlightsTo(flightsWithSeats, destination, origin, startTime); + .FlightsTo(flightsWithSeats, destination, startTime); var flightsBack = FindFlight - .FlightsBack(flightsWithSeats, destination, origin, endTime); + .FlightsBack(flightsWithSeats, flightsTo, endTime); - free_flights.Add(flightsTo); - free_flights.Add(flightsBack); + free_flights.Add("To", flightsTo); + free_flights.Add("From", flightsBack); return free_flights; } - public static IEnumerable FlightsWithSeats( - ICollection raw_flights, + private static List FlightsWithSeats( + List raw_flights, int numberOfSeats) { - IEnumerable flights = new List(); + List flights = new List(); flights = raw_flights.Where(f => (f.MaxSeats - f.BookedSeats) - > numberOfSeats); + > numberOfSeats).ToList(); return flights; } - public static IEnumerable FlightsTo(IEnumerable raw_flights, + private static List FlightsTo(IEnumerable raw_flights, string destination, - string origin, DateTime startTime) { - IEnumerable flights = new List(); + List flights = new List(); flights = raw_flights.Where(f => f.Destination.City.Name == destination - & f.Origin.City.Name == origin - & f.StartTime == startTime); + & f.StartTime == startTime).ToList(); return flights; } // Since this function searches for a flight back the arguments // destination and origin get used in reverse. - public static IEnumerable FlightsBack(IEnumerable raw_flights, - string destination, - string origin, - DateTime endTime) + private static List FlightsBack(List raw_flights, + List flightsTo, + DateTime endTime) { - IEnumerable flights = new List(); - flights = raw_flights.Where(f => - f.Destination.City.Name == origin - & f.Origin.City.Name == destination - & f.StartTime == endTime); + List flights = new List(); + foreach (var flight in flightsTo) + { + flights.AddRange(raw_flights.Where(f => + f.Destination.City.Name == flight.Origin.City.Name + & f.Origin.City.Name == flight.Destination.City.Name + & f.StartTime == endTime).ToList()); + } return flights; } } diff --git a/AirlineServer/AirlineServer/IAirlineService.cs b/AirlineServer/AirlineServer/IAirlineService.cs index 3951f8c..146322e 100644 --- a/AirlineServer/AirlineServer/IAirlineService.cs +++ b/AirlineServer/AirlineServer/IAirlineService.cs @@ -15,9 +15,8 @@ namespace AirlineServer public interface IAirlineService { [OperationContract] - ICollection> GetFlights(DateTime startTime, + Dictionary> GetFlights(DateTime startTime, DateTime endTime, - string origin, string destination, int numberOfSeats); [OperationContract]