public static ViewModelBase GetSearchAirlinesViewModel(FlightsFilter filter) { return(new SearchAirlinesViewModel( Container.Resolve <IAsyncServiceExecutor>(), Container.Resolve <INavigator>(), filter)); }
public SearchAirlinesViewModel( IAsyncServiceExecutor serviceExecutor, INavigator navigator, FlightsFilter filter) { if (serviceExecutor == null) { throw new ArgumentNullException("serviceExecutor"); } if (navigator == null) { throw new ArgumentNullException("navigator"); } if (filter == null) { throw new ArgumentNullException("filter"); } _serviceExecutor = serviceExecutor; _navigator = navigator; _filter = filter; _airlinesInternalCollection = new ObservableCollection <AirlineEntity>(); _airlinesCollection = new ReadOnlyObservableCollection <AirlineEntity>(_airlinesInternalCollection); _faresSearchProcess = new FaresSearchProcess(_serviceExecutor); Initialize(); }
private void SearchAirlines() { var filter = new FlightsFilter(departureDate: _departureDate, departureCode: _departureCode, arrivalCode: _arrivalCode, fullPassengersCount: _fullPassengersCount, childPassengersCount: _childPassengersCount, serviceClass: _serviceClass); _navigator.GoToPage(Pages.AirlinesPage, filter.ToParameterList()); }
public FaresSearchRequest CreateFaresSearchRequest(FlightsFilter filter) { var query = string.Format("NewRequest/?Route={0}{1}{2}&AD={3}&CN={4}&CS={5}&Partner=testapic{6}", filter.DepartureDate.Date.ToString("ddMM"), filter.DepartureCode, filter.ArrivalCode, filter.FullPassengersCount, filter.ChildPassengersCount, filter.ServiceClass, SerializeFormat); return(new FaresSearchRequest(ApiUrl, query, _webService)); }
public async Task <List <Airline> > GetAirlines(FlightsFilter filter) { var searchId = await _serviceExecutor.FaresSearchAsync(filter); if (searchId.Error != null) { throw new BusinessException(searchId.Error); } FaresSearchState searchState = null; var requestIndex = 0; while (searchState == null || searchState.Completed != SearchCompleteCode) { Thread.Sleep(TimeoutBetweenRequest); searchState = await _serviceExecutor.GetFaresSearchStateAsync(searchId.Id); if (searchState.Error != null) { throw new BusinessException(searchState.Error); } if (requestIndex >= 40000 / TimeoutBetweenRequest) { throw new СommunicationException("Нет ответа, повторите попытку"); } requestIndex++; } var resultFares = await _serviceExecutor.GetFaresSearchResultAsync(searchId.Id); if (resultFares.Error != null) { throw new BusinessException(resultFares.Error); } return(resultFares.Airlines); }
public async Task <FaresSearchId> FaresSearchAsync(FlightsFilter filter) { return(await _restCallsFactory.CreateFaresSearchRequest(filter).Execute()); }