コード例 #1
0
 public string FlightSearchRequestData(FlightSearchRequest fsr)
 {
     try
     {
         //string postdata = "flightSearchRequest={'depCd':'SHA','arrCd':'PEK','depDt':'2017-09-01','passNum':'1','account':'test','flightTp':'D','routeTp':'RT','retDt':'2017-09-20'}";
         //fsr.depCd = "SHA";
         //fsr.arrCd = "PEK";
         //fsr.depDt = "2017-12-02";
         //fsr.passNum = 1;
         if (string.IsNullOrWhiteSpace(fsr.retDt))
         {
             fsr.routeTp = "OW";
         }
         else
         {
             fsr.routeTp = "RT";
         }
         fsr.account = "b2tuser";
         //fsr.flightTp = "D";
         //fsr.routeTp = "OW";
         string postdata = JsonConvert.SerializeObject(fsr);
         return(postdata);
     }
     catch (Exception ex)
     {
         //Logger.WriteLog("中转查询请求参数:" + System.DateTime.Now + ex.ToString());
         throw ex;
     }
 }
コード例 #2
0
        public JsonResult GetODFlightSearchData(FlightSearchRequest fsr)
        {
            //请求地址
            var urls = "http://channel.ceair.com:8849/oDShopping_ODFlightSearch.do";
            //请求参数
            string jsondata = "flightSearchRequest=" + FlightSearchRequestData(fsr);
            ////写入日志
            //Logger.WriteLog("中转预定查询请求参数:" + System.DateTime.Now + jsondata);
            //加密数据
            //string jsondata2 = Compress(jsondata);
            ////写入日志
            //Logger.WriteLog("中转预定查询加密请求参数:" + System.DateTime.Now + jsondata2);
            //请求并获得结果
            string responseData = webRequestGet(urls + "?" + jsondata, null).ToString();
            //写入日志
            //Logger.WriteLog("中转预定查询未解密数据:" + System.DateTime.Now + responseData);
            //解密数据
            string data = GZipPress(responseData);
            //写入日志
            //Logger.WriteLog("中转预定查询解密数据:" + System.DateTime.Now + data);
            //手动解析获得结果
            FlightSearchResponse model = JsonConvert.DeserializeObject <FlightSearchResponse>(data);


            return(Json(model));
        }
コード例 #3
0
 public ActionResult Index(FlightSearchRequest request)
 {
     TempData["From"]   = request.From;
     TempData["To"]     = request.To;
     TempData["Search"] = true;
     request.Results    = Flight.Search(request);
     return(View(request));
 }
コード例 #4
0
        public async Task <IActionResult> Search([Bind("DepartureId,DestinationId,NoStops")] FlightSearchRequest searchRequest)
        {
            if (ModelState.IsValid)
            {
                var result = await _searchService.GetFlightsSearchResult(searchRequest);

                return(View(result));
            }
            return(View("Index"));
        }
コード例 #5
0
ファイル: SearchService.cs プロジェクト: p0sXke/Test
        public async Task <List <FlightDto> > GetFlightsSearchResult(FlightSearchRequest searchRequest)
        {
            var result = await _context.Flights
                         .AsNoTracking()
                         .Where(x => x.DepartureId == searchRequest.DepartureId && x.DestinationId == searchRequest.DestinationId && x.SeatNumber > 0 && (searchRequest.NoStops ? x.StopNumber == 0 : x.StopNumber >= 0))
                         .OrderBy(x => x.DateTime)
                         .ToListAsync();

            return(_mapper.Map <List <FlightDto> >(result));
        }
コード例 #6
0
        public async Task <IHttpActionResult> GetFlights(FlightSearchRequest req)
        {
            var response = await FlightService.SearchFlights(Mapper.Map <FlightServiceSearchRequest>(req));

            if (response.Succeeded)
            {
                return(Ok(GetSearchResponse(response.FoundFlights)));
            }

            return(new BadRequest(response.Errors, Request));
        }
コード例 #7
0
ファイル: Fligths.cs プロジェクト: ndhelix/TicketManager
        public void SearchFlights()
        {
            var flightsRestClient = CreateRestClient();

            var flightSearchRequest = new FlightSearchRequest();

            TourMLDocument searchResult = flightsRestClient.GetFlights(flightSearchRequest);

            var packages = searchResult.Payload as PackagesPayloadElement;

            Assert.NotNull(packages, "Payload of TourMLDocument must have PackagesPayloadElement type.");
        }
コード例 #8
0
 public HttpResponseMessage FlightSearch(HttpRequestMessage request, FlightSearchRequest search)
 {
     if (IsValid(search) && IsDifferentAirport(search))
     {
         var result       = FlightStorage.GetFlights();
         var matchedItems = result.Where(f => f.From.Airport.ToLower().Contains(search.From.ToLower()) ||
                                         f.To.Airport.ToLower().Contains(search.To.ToLower()) ||
                                         f.DepartureTime.ToLower().Contains(search.To.ToLower())).ToList();
         var response = new FlightSearchResult
         {
             TotalItems = result.Length,
             Items      = matchedItems,
             Page       = matchedItems.Any() ? 1 : 0
         };
         return(request.CreateResponse(HttpStatusCode.OK, response));
     }
     return(request.CreateResponse(HttpStatusCode.BadRequest));
 }
コード例 #9
0
        public FlightSearchResponse Post(FlightSearchRequest request)
        {
            return(ApiExceptionHelper.WrapException(() =>
            {
                if (request == null)
                {
                    throw new ArgumentNullException(nameof(request));
                }

                _logger.Info("Try flight search: Request='{0}'", request.ToJson());

                var response = new FlightSearchResponse
                {
                    OutboundFlights = Mapper.Map <IEnumerable <FlightSchedule>, IEnumerable <FlightScheduleViewModel> >(
                        _flightScheduleService.GetFlightSchedules(
                            request.FromAirportCode,
                            request.ToAirportCode,
                            request.StartDateTime,
                            request.AdultCount,
                            request.InfantCount,
                            request.ChildrenCount)
                        ),
                    ReturnFlights = request.EndDateTime.HasValue
                        ? Mapper.Map <IEnumerable <FlightSchedule>, IEnumerable <FlightScheduleViewModel> >(
                        _flightScheduleService
                        .GetFlightSchedules(
                            request.ToAirportCode,
                            request.FromAirportCode,
                            request.EndDateTime.Value,
                            request.AdultCount,
                            request.InfantCount,
                            request.ChildrenCount))
                        : null
                };

                response.OutboundFlights.ForEach(f => f.Price = _priceCalculator.Calculate(f));
                response.ReturnFlights?.ForEach(f => f.Price = _priceCalculator.Calculate(f));

                _logger.Info("Flight found: Response='{0}'", response.ToJson());

                return response;
            }, _logger));
        }
コード例 #10
0
        public ActionResult Index()
        {
            bool search = Convert.ToBoolean(TempData["Search"]);

            if (!search)
            {
                return(View(new FlightSearchRequest()));
            }

            var request = new FlightSearchRequest
            {
                From = Convert.ToString(TempData["From"]),
                To   = Convert.ToString(TempData["To"])
            };

            TempData["From"]   = request.From;
            TempData["To"]     = request.To;
            TempData["Search"] = true;
            request.Results    = Flight.Search(request);
            return(View(request));
        }
コード例 #11
0
        public async Task <IHttpActionResult> FlightSearch(FlightSearchRequest search)
        {
            if (!IsValid(search) || !NotSameAirport(search))
            {
                return(BadRequest());
            }
            var result = await _flightService.GetFlight();

            var matchedItems = result.Where(f => f.From.AirportCode.ToLower().Contains(search.From.ToLower()) ||
                                            f.To.AirportCode.ToLower().Contains(search.To.ToLower()) ||
                                            DateTime.Parse(f.DepartureTime) ==
                                            DateTime.Parse(search.DepartureDate)).DistinctBy(f => f.Carrier).ToList();
            var response = new FlightSearchResult
            {
                TotalItems = matchedItems.Count,
                Items      = matchedItems,
                Page       = matchedItems.Any() ? 1 : 0
            };

            return(Ok(response));
        }
コード例 #12
0
 private bool IsValid(FlightSearchRequest search)
 {
     return(search != null && !string.IsNullOrEmpty(search.From) &&
            !string.IsNullOrEmpty(search.To) &&
            !string.IsNullOrEmpty(search.DepartureDate));
 }
コード例 #13
0
 private bool NotSameAirport(FlightSearchRequest search)
 {
     return(!string.Equals(search.From, search.To, StringComparison.InvariantCultureIgnoreCase));
 }