Skip to content
Snippets Groups Projects
Commit 7fa15c43 authored by Abdelsamad, Mouaz R (UG - SISC)'s avatar Abdelsamad, Mouaz R (UG - SISC)
Browse files

Merge branch 'MA/AddFilterByAirlineId' into 'main'

add filter by airline id

See merge request ma03081/COM3014!27
parents 1d7ef3ca 0c741d2a
No related branches found
No related tags found
No related merge requests found
...@@ -18,9 +18,9 @@ namespace FlightMicroservice.Controllers ...@@ -18,9 +18,9 @@ namespace FlightMicroservice.Controllers
} }
[HttpGet()] [HttpGet()]
public ActionResult GetFlights(string? origin = null, string? destination = null, DateTime? departureTime = null, DateTime? arrivalTime = null) public ActionResult GetFlights(int? airlineId = null, string? origin = null, string? destination = null, DateTime? departureTime = null, DateTime? arrivalTime = null)
{ {
List<Flight> flights = flightService.GetFlights(origin, destination, departureTime, arrivalTime); List<Flight> flights = flightService.GetFlights(airlineId, origin, destination, departureTime, arrivalTime);
if (flights == null) if (flights == null)
return BadRequest(); return BadRequest();
......
...@@ -18,10 +18,13 @@ namespace FlightMicroservice.Services ...@@ -18,10 +18,13 @@ namespace FlightMicroservice.Services
return flight; return flight;
} }
public List<Flight> GetFlights(string? origin, string? destination, DateTime? departureTime, DateTime? arrivalTime) public List<Flight> GetFlights(int? airlineId, string? origin, string? destination, DateTime? departureTime, DateTime? arrivalTime)
{ {
IQueryable<Flight> query = dbContext.Flights.AsQueryable(); IQueryable<Flight> query = dbContext.Flights.AsQueryable();
if(airlineId != null)
query = query.Where(flight => flight.AirlineId == airlineId);
if (!string.IsNullOrWhiteSpace(origin)) if (!string.IsNullOrWhiteSpace(origin))
query = query.Where(flight => flight.Origin == origin); query = query.Where(flight => flight.Origin == origin);
......
...@@ -5,7 +5,7 @@ namespace FlightMicroservice.Services ...@@ -5,7 +5,7 @@ namespace FlightMicroservice.Services
public interface IFlightService public interface IFlightService
{ {
Flight? GetFlight(int flightId); Flight? GetFlight(int flightId);
List<Flight> GetFlights(string? origin, string? destination, DateTime? departureTime, DateTime? arrivalTime); List<Flight> GetFlights(int? airlineId, string? origin, string? destination, DateTime? departureTime, DateTime? arrivalTime);
Flight CreateFlight(int airlineId, string origin, string destination, DateTime departureTime, DateTime arrivalTime, int economyCapacity, int businessCapacity, decimal economyPrice, decimal businessPrice); Flight CreateFlight(int airlineId, string origin, string destination, DateTime departureTime, DateTime arrivalTime, int economyCapacity, int businessCapacity, decimal economyPrice, decimal businessPrice);
bool RemoveFlight(int flightId); bool RemoveFlight(int flightId);
List<Seat> GetSeatsByFlightId(int flightId); List<Seat> GetSeatsByFlightId(int flightId);
......
...@@ -18,14 +18,17 @@ namespace GatewayAPI.Clients.FlightService ...@@ -18,14 +18,17 @@ namespace GatewayAPI.Clients.FlightService
return await httpClient.GetAsync($"{FLIGHT_API_PATH}/{flightId}"); return await httpClient.GetAsync($"{FLIGHT_API_PATH}/{flightId}");
} }
public async Task<HttpResponseMessage> GetFlightsAsync(string? origin = null, string? destination = null, DateTime? departureTime = null, DateTime? arrivalTime = null) public async Task<HttpResponseMessage> GetFlightsAsync(int? airlineId = null, string? origin = null, string? destination = null, DateTime? departureTime = null, DateTime? arrivalTime = null)
{ {
var queryParams = new List<string>(); var queryParams = new List<string>();
if (origin != null) if(airlineId != null)
queryParams.Add($"airlineId={airlineId}");
if (!string.IsNullOrEmpty(origin))
queryParams.Add($"origin={Uri.EscapeDataString(origin)}"); queryParams.Add($"origin={Uri.EscapeDataString(origin)}");
if (destination != null) if (!string.IsNullOrEmpty(destination))
queryParams.Add($"destination={Uri.EscapeDataString(destination)}"); queryParams.Add($"destination={Uri.EscapeDataString(destination)}");
if (departureTime.HasValue) if (departureTime.HasValue)
......
...@@ -5,7 +5,7 @@ namespace GatewayAPI.Clients.FlightService ...@@ -5,7 +5,7 @@ namespace GatewayAPI.Clients.FlightService
public interface IFlightServiceClient public interface IFlightServiceClient
{ {
Task<HttpResponseMessage> GetFlightAsync(int flightId); Task<HttpResponseMessage> GetFlightAsync(int flightId);
Task<HttpResponseMessage> GetFlightsAsync(string? origin = null, string? destination = null, DateTime? departureTime = null, DateTime? arrivalTime = null); Task<HttpResponseMessage> GetFlightsAsync(int? airlineId = null, string? origin = null, string? destination = null, DateTime? departureTime = null, DateTime? arrivalTime = null);
Task<HttpResponseMessage> AddFlightAsync(FlightCreation flight); Task<HttpResponseMessage> AddFlightAsync(FlightCreation flight);
Task<HttpResponseMessage> GetFlightCapacityAsync(int flightId, int classType); Task<HttpResponseMessage> GetFlightCapacityAsync(int flightId, int classType);
Task<HttpResponseMessage> GetFlightSeatsAsync(int flightId); Task<HttpResponseMessage> GetFlightSeatsAsync(int flightId);
......
...@@ -16,9 +16,9 @@ namespace GatewayAPI.Controllers ...@@ -16,9 +16,9 @@ namespace GatewayAPI.Controllers
} }
[HttpGet()] [HttpGet()]
public async Task<IActionResult> GetFlights(string? origin = null, string? destination = null, DateTime? departureTime = null, DateTime? arrivalTime = null) public async Task<IActionResult> GetFlights(int? airlineId = null, string? origin = null, string? destination = null, DateTime? departureTime = null, DateTime? arrivalTime = null)
{ {
HttpResponseMessage response = await flightServiceClient.GetFlightsAsync(origin, destination, departureTime, arrivalTime); HttpResponseMessage response = await flightServiceClient.GetFlightsAsync(airlineId, origin, destination, departureTime, arrivalTime);
return new HttpResponseMessageResult(response); return new HttpResponseMessageResult(response);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment