public async Task <FlightDetailsModel> GetFlightDetails(GetFlightDetailsRequest request)
        {
            var flightTime  = new Random().Next(2, 10);
            var arrivalDate = request.DepartueDate.AddHours(12 + flightTime);
            var deepLink    = $@"https://bookerproxy.lot.com/service.php?COUNTRY_CODE=PL&LANGUAGE_CODE=PL&ORIGIN={request.OriginCode}&DESTINATION={request.DestinationCode}&DEPARTURE_DATE={request.DepartueDate.ToLotFormat()}&ARRIVAL_DATE={arrivalDate.ToLotFormat()}&ADULT_COUNT={request.NumberOfAdults}&CHILD_COUNT=0&INFANT_COUNT=0&PARTNER=TFFNZEZK88W4&CLASS=E&utm_source=github&utm_medium=api";

            var data = await GetMockData <IEnumerable <FlightModel> >("flights");

            var flight = data.FirstOrDefault(a => a.DestinationCode == request.DestinationCode && a.OriginCode == request.OriginCode);

            if (flight == null)
            {
                throw new Exception("Invalid flight data!");
            }

            var result = new FlightDetailsModel()
            {
                DepartueDate       = request.DepartueDate.AddHours(12),
                DeepLink           = deepLink,
                LocalArrivalDate   = arrivalDate,
                DepartuePlaneSeats = GeneratePlaneSeats(),
                ReturnPlaneSeats   = request.ReturnDate.HasValue ? GeneratePlaneSeats() : null,
                ReturnDate         = request.ReturnDate,
                ArrivalReturnDate  = request.ReturnDate.HasValue ? request.ReturnDate.Value.AddHours(flightTime) : (DateTime?)null,
                PlaneName          = "Dreamliner",
                TotalPrice         = flight.MinPrice * request.NumberOfAdults
            };

            return(result);
        }
 public async Task <FlightDetailsModel> Get([FromQuery] GetFlightDetailsRequest request) => await flightService.GetFlightDetails(request);
 public Task <FlightDetailsModel> GetFlightDetails(GetFlightDetailsRequest id)
 {
     throw new NotImplementedException();
 }
 public async Task <FlightDetailsModel> GetFlightDetails(GetFlightDetailsRequest request)
 {
     return(await lotApiClient.GetFlightDetails(request));
 }