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; } }
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)); }
public ActionResult Index(FlightSearchRequest request) { TempData["From"] = request.From; TempData["To"] = request.To; TempData["Search"] = true; request.Results = Flight.Search(request); return(View(request)); }
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")); }
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)); }
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)); }
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."); }
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)); }
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)); }
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)); }
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)); }
private bool IsValid(FlightSearchRequest search) { return(search != null && !string.IsNullOrEmpty(search.From) && !string.IsNullOrEmpty(search.To) && !string.IsNullOrEmpty(search.DepartureDate)); }
private bool NotSameAirport(FlightSearchRequest search) { return(!string.Equals(search.From, search.To, StringComparison.InvariantCultureIgnoreCase)); }