public HomeLocationEditorViewModel( ISchedulerProvider schedulerProvider, INavigationService navigationService, IPlacesProvider placesProvider, IEmptyAutocompleteResultProvider autocompleteResultProvider, ISettingsProvider settingsProvider, IGeocodingProvider geocodingProvider) : base(schedulerProvider, placesProvider, geocodingProvider, navigationService) { _autocompleteResultProvider = autocompleteResultProvider; SelectedAutoCompleteResultModelObservable .Subscribe(async result => { var address = await geocodingProvider.ReverseGeocodingFromPlaceId(result.PlaceId); settingsProvider.SetHomeAddress(address); navigationService.GoBack(); }); this.Changed(() => SelectedSearchResult) .Where(r => r is SetLocationOnMapResultModel) .Subscribe(result => { navigationService.NavigateTo <ChooseHomeAddressOnMapViewModel>(); }); }
public async Task <PlaceTransporter> FindPerfectPlace(IPlacesProvider placesProvider, String[] placesTypes, IDistanceResolver distanceResolver, GeoCoordinatesTransporter[] geoCoordinates, GeoCoordinatesTransporter leaderCoordinates) { var averageCoordinates = this.GetAverageLocation(geoCoordinates); var candidatePlaces = await placesProvider.LookForNearbyPlacesAsync(new PlacesQueryTransporter { Latitude = averageCoordinates.Y, Longitude = averageCoordinates.X, Radius = 1000, PlacesTypes = placesTypes }); if (candidatePlaces.Count() == 0) { return(null); } double minimumDistance = 0; PlaceTransporter finalPlace = null; foreach (var item1 in candidatePlaces) { double distance = 0; distance += CalcDistance(item1.Latitude, item1.Longitude, double.Parse(averageCoordinates.Y.ToString("N4", CultureInfo.InvariantCulture), CultureInfo.InvariantCulture), double.Parse(averageCoordinates.X.ToString("N4", CultureInfo.InvariantCulture), CultureInfo.InvariantCulture)); if (finalPlace == null || minimumDistance > distance) { minimumDistance = distance; finalPlace = item1; } } return(finalPlace); }
public PerfectPlaceController(IDistanceResolver distanceResolver, IPlacesProvider placesProvider, ProgramDbContext dbContext) { this.DistanceResolver = distanceResolver; this.PlacesProvider = placesProvider; this.Algo = new PerfectPlaceAlgorithm(); this.DbContext = dbContext; }
public DestinationLocationEditorViewModel( ISchedulerProvider schedulerProvider, INavigationService navigationService, IPlacesProvider placesProvider, IGeocodingProvider geocodingProvider, IChooseOnMapViewModelFactory chooseOnMapViewModelFactory, IEmptyAutocompleteResultProvider autocompleteResultProvider, ISelectedDestinationByMapSubscriber destinationByMapSubscriber) : base(schedulerProvider, placesProvider, geocodingProvider, navigationService) { _navigationService = navigationService; _chooseOnMapViewModelFactory = chooseOnMapViewModelFactory; _autocompleteResultProvider = autocompleteResultProvider; this.Changed(() => SelectedSearchResult) .Where(r => r is SetLocationOnMapResultModel) .ObserveOn(schedulerProvider.SynchronizationContextScheduler) .Subscribe(NavigateToChooseDestinationOnMapViewModel); destinationByMapSubscriber.Publisher.Handler.Subscribe(address => { SelectedAddress = address; navigationService.GoBack(); }); }
public PickupLocationEditorViewModel( ISchedulerProvider schedulerProviderer, INavigationService navigationService, IPlacesProvider placesProvider, IGeocodingProvider geocodingProvider, IEmptyAutocompleteResultProvider autocompleteResultProvider) : base(schedulerProviderer, placesProvider, geocodingProvider, navigationService) { _autocompleteResultProvider = autocompleteResultProvider; }
protected BaseLocationEditorViewModel( ISchedulerProvider schedulerProvider, IPlacesProvider placesProvider, IGeocodingProvider geocodingProvider, INavigationService navigationService) { _navigationService = navigationService; this.Changed(() => SearchText) .Where(text => !string.IsNullOrEmpty(text)) .Throttle(TimeSpan.FromMilliseconds(300), schedulerProvider.DefaultScheduler) .ObserveOn(schedulerProvider.SynchronizationContextScheduler) .Subscribe(async searchText => { IsSearching = true; SearchResults = await placesProvider.GetAutoCompleteResponse(searchText); IsSearching = false; }); this.Changed(() => SearchText) .Where(string.IsNullOrEmpty) .Subscribe(_ => SearchResults = GetEmptyAutocompleteResult()); var selectedEmptyAutocompleteResultModelObservable = this.Changed(() => SelectedSearchResult) .Where(result => result is EmptyAutocompleteResultModel) .Cast <EmptyAutocompleteResultModel>(); selectedEmptyAutocompleteResultModelObservable.Where(r => r.Address == null) .ObserveOn(schedulerProvider.SynchronizationContextScheduler) .Subscribe(selectedResult => { switch (selectedResult) { case HomeResultModel _: _navigationService.NavigateToSearchView <HomeLocationEditorViewModel>(callBack: null); break; case WorkResultModel _: _navigationService.NavigateToSearchView <WorkLocationEditorViewModel>(callBack: null); break; } }); var selectedEmptyAddress = selectedEmptyAutocompleteResultModelObservable .Where(r => r.Address != null) .Select(r => r.Address); SelectedAddress = SelectedAutoCompleteResultModelObservable .Select(x => Observable.FromAsync(() => geocodingProvider.ReverseGeocodingFromPlaceId(x.PlaceId))) .Concat() .Merge(selectedEmptyAddress); }
protected BaseLocationEditorViewModel( ISchedulerProvider schedulerProvider, IPlacesProvider placesProvider, IGeocodingProvider geocodingProvider, INavigationService navigationService) { _geocodingProvider = geocodingProvider; _navigationService = navigationService; this.Changed(() => SearchText) .Where(text => !string.IsNullOrEmpty(text)) .Throttle(TimeSpan.FromMilliseconds(300), schedulerProvider.DefaultScheduler) .ObserveOn(schedulerProvider.SynchronizationContextScheduler) .Subscribe(async searchText => { IsSearching = true; SearchResults = await placesProvider.GetAutoCompleteResponse(searchText); IsSearching = false; }); this.Changed(() => SearchText) .Where(string.IsNullOrEmpty) .Subscribe(_ => SearchResults = GetEmptyAutocompleteResult()); this.Changed(() => SelectedSearchResult) .Where(result => result is EmptyAutocompleteResultModel) .Cast <EmptyAutocompleteResultModel>() .ObserveOn(schedulerProvider.SynchronizationContextScheduler) .Subscribe(selectedResult => { if (selectedResult.Address == null) { NavigateToLocationEditorViewModel(selectedResult); } else { SelectedAddress = selectedResult.Address; _navigationService.GoBack(); } }); SelectedAutoCompleteResultModelObservable.Subscribe(async result => { await SetAutoCompleteResultModel(result.PlaceId); }); }
public WorkLocationEditorViewModel( ISchedulerProvider schedulerProvider, INavigationService navigationService, IPlacesProvider placesProvider, IEmptyAutocompleteResultProvider autocompleteResultProvider, ISettingsProvider settingsProvider, IGeocodingProvider geocodingProvider) : base(schedulerProvider, placesProvider, geocodingProvider, navigationService) { _navigationService = navigationService; _autocompleteResultProvider = autocompleteResultProvider; _settingsProvider = settingsProvider; _geocodingProvider = geocodingProvider; this.Changed(() => SelectedSearchResult) .Where(r => r is SetLocationOnMapResultModel) .Subscribe(result => { navigationService.NavigateTo <ChooseWorkAddressOnMapViewModel>(); }); }
public CitiesController(IPlacesProvider placesProvider) { this.placesProvider = placesProvider; }
public async Task <PlaceTransporter> DefaultBehaviour(GeoCoordinatesTransporter[] geoCoordinates, IPlacesProvider placesProvider, IEnumerable <string> placesTypes, int radius) { var foundPlaces = await placesProvider.LookForNearbyPlacesAsync(new PlacesQueryTransporter() { Latitude = geoCoordinates.First().Y, Longitude = geoCoordinates.First().X, PlacesTypes = placesTypes, Radius = radius }); return(foundPlaces.Last()); }
public BarangaysController(IPlacesProvider placesProvider) { this.placesProvider = placesProvider; }
public RegionsController(IPlacesProvider placesProvider) { this.placesProvider = placesProvider; }