Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
FlightController.cs 2.06 KiB
using GatewayAPI.Clients.FlightService;
using GatewayAPI.Clients.UserService;
using GatewayAPI.Models;
using Microsoft.AspNetCore.Mvc;

namespace GatewayAPI.Controllers
{
    [ApiController]
    [Route("api/[Controller]")]
    public class FlightController : ControllerBase
    {
        private readonly IFlightServiceClient flightServiceClient;
        public FlightController(IFlightServiceClient flightServiceClient)
        {
            this.flightServiceClient = flightServiceClient;
        }

        [HttpGet()]
        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(airlineId, origin, destination, departureTime, arrivalTime);
            return new HttpResponseMessageResult(response);
        }

        [HttpGet("{id}")]
        public async Task<IActionResult> GetFlights(int id)
        {
            HttpResponseMessage response = await flightServiceClient.GetFlightAsync(id);
            return new HttpResponseMessageResult(response);
        }

        [HttpPost()]
        public async Task<IActionResult> AddFlight([FromBody] FlightCreation flightCreation)
        {
            HttpResponseMessage response = await flightServiceClient.AddFlightAsync(flightCreation);
            return new HttpResponseMessageResult(response);
        }


        [HttpGet("{id}/capacity")]
        public async Task<IActionResult> GetFlightCapacity([FromRoute] int id, [FromQuery] int classType)
        {
            HttpResponseMessage response = await flightServiceClient.GetFlightCapacityAsync(id, classType);
            return new HttpResponseMessageResult(response);
        }

        [HttpGet("{id}/seats")]
        public async Task<IActionResult> GetFlightSeats([FromRoute] int id)
        {
            HttpResponseMessage response = await flightServiceClient.GetFlightSeatsAsync(id);
            return new HttpResponseMessageResult(response);
        }

    }
}