private string GenerateAdviesTile(PlannerSearch search, ReisMogelijkheid mogelijkheid, string from, string to, string date, string filename) { //FrameworkElement reflectedFE = ReflectedElement as FrameworkElement TileAdviesControl tileControl = new TileAdviesControl(mogelijkheid, from, to, date); tileControl.Measure(new Size(336, 336)); tileControl.Arrange(new Rect(0, 0, 336, 336)); tileControl.UpdateLayout(); tileControl.Measure(new Size(336, 336)); tileControl.Arrange(new Rect(0, 0, 336, 336)); tileControl.UpdateLayout(); WriteableBitmap sourceBitmap = new WriteableBitmap(tileControl, null); sourceBitmap.Invalidate(); using (var store = IsolatedStorageFile.GetUserStoreForApplication()) { using (var st = new IsolatedStorageFileStream(filename, FileMode.Create, FileAccess.Write, store)) { sourceBitmap.SaveJpeg(st, 336, 336, 0, 100); } } return(filename); }
//////////////////////////////////////////////////////////////////////////////////////////////// public void CreateAdvies(PlannerSearch search, int index, ReisMogelijkheid mogelijkheid) { if (!Exists(string.Format("/Views/Reisadvies.xaml?id={0}&index={1}", search.Id, index))) { var filenameInput = string.Format("/Shared/ShellContent/{0}_{1}.jpg", search.Id, index); var filename = GenerateAdviesTile(search, mogelijkheid, search.VanStation.Name, search.NaarStation.Name, mogelijkheid.GeplandeVertrekTijd.ToString("dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture), filenameInput); var isoStoreTileImage = string.Format("isostore:{0}", filename); // Create the Tile object and set some initial properties for the Tile. // The Count value of 12 shows the number 12 on the front of the Tile. Valid values are 1-99. // A Count value of 0 indicates that the Count should not be displayed. StandardTileData NewTileData = new StandardTileData { BackgroundImage = new Uri(isoStoreTileImage, UriKind.Absolute), //Title = name, //Count = 12, //BackTitle = "Back of Tile", //BackContent = "Welcome to the back of the Tile", //BackBackgroundImage = new Uri("Blue.jpg", UriKind.Relative) }; // Create the Tile and pin it to Start. This will cause a navigation to Start and a deactivation of our application. ShellTile.Create(new Uri(string.Format("/Views/Reisadvies.xaml?id={0}&index={1}", search.Id, index), UriKind.Relative), NewTileData); } }
public void CreateReminder(PlannerSearch search, int?index, DateTime dateTime, string spoor, DateTime reminderTime) { try { string url = string.Format("/Views/Reisadvies.xaml?id={0}&index={1}", search.Id, index); ScheduledAction oldReminder = ScheduledActionService.Find(url); if (oldReminder != null) { ScheduledActionService.Remove(url); } Reminder newReminder = new Reminder(url) { BeginTime = reminderTime, RecurrenceType = RecurrenceInterval.None, NavigationUri = new Uri(url, UriKind.Relative), Title = AppResources.ReminderAppTitle, Content = string.Format(AppResources.ReminderServiceFormat, search.NaarStation.Name, dateTime.ToString("HH:mm", CultureInfo.InvariantCulture), search.VanStation.Name, spoor), };; ScheduledActionService.Add(newReminder); } catch { } }
private async void GetSearchResult(PlannerSearch search) { List <ReisMogelijkheid> reisMogelijkheden = await DataLoader.LoadAsync(() => NSApiService.GetSearchResult(search)); if (reisMogelijkheden != null) { //Set color bool useAlternate = false; foreach (var mogelijkheid in reisMogelijkheden) { //Set background color here, for performance mogelijkheid.IsAlternate = useAlternate; useAlternate = !useAlternate; } ReisMogelijkheden = reisMogelijkheden; if (_tempIndex.HasValue && ReisMogelijkheden.Count > _tempIndex.Value) { SelectedReisMogelijkheid = ReisMogelijkheden[_tempIndex.Value]; _tempIndex = null; } else { SelectedReisMogelijkheid = reisMogelijkheden.Where(x => x.Optimaal).FirstOrDefault(); } } else { ReisMogelijkheden = reisMogelijkheden; } }
public void Initialize(PlannerSearch search) { ReisMogelijkheden.Clear(); LoadingState = ViewModel.LoadingState.None; this.CurrentSearch = search; GetSearchResult(search); }
public async Task <ReisPrijs> GetPrijs(PlannerSearch search) { string query = string.Format("from={0}&to={1}", search.VanStation.Code, search.NaarStation.Code); if (search.ViaStation != null) { query += "&via=" + search.ViaStation.Code; } Uri address = new Uri(string.Format(NSApi.BaseUrl + "/ns-api-prijzen-v2?{0}&a={1}", query, DateTime.Now.Ticks), UriKind.Absolute); HttpClient webclient = new HttpClient(); //webclient.Credentials = new NetworkCredential(NSApi.Login, NSApi.Password); string response = await webclient.GetStringAsync(address); XElement prijzenXmlElement = XElement.Parse(response); ReisPrijs prijs = new ReisPrijs(); //Get enkele reis var enkel = prijzenXmlElement.Descendants("Product") .Where(x => x.Attribute("naam") != null && x.Attribute("naam").Value == "Enkele reis") .FirstOrDefault(); if (enkel != null) { prijs.Enkel_1_Vol = GetPrijsValue(enkel, "1", "vol tarief"); prijs.Enkel_1_20 = GetPrijsValue(enkel, "1", "reductie_20"); prijs.Enkel_1_40 = GetPrijsValue(enkel, "1", "reductie_40"); prijs.Enkel_2_Vol = GetPrijsValue(enkel, "2", "vol tarief"); prijs.Enkel_2_20 = GetPrijsValue(enkel, "2", "reductie_20"); prijs.Enkel_2_40 = GetPrijsValue(enkel, "2", "reductie_40"); } //Get Retour var retour = prijzenXmlElement.Descendants("Product") .Where(x => x.Attribute("naam") != null && x.Attribute("naam").Value == "Dagretour") .FirstOrDefault(); if (retour != null) { prijs.Dag_1_Vol = GetPrijsValue(retour, "1", "vol tarief"); prijs.Dag_1_20 = GetPrijsValue(retour, "1", "reductie_20"); prijs.Dag_1_40 = GetPrijsValue(retour, "1", "reductie_40"); prijs.Dag_2_Vol = GetPrijsValue(retour, "2", "vol tarief"); prijs.Dag_2_20 = GetPrijsValue(retour, "2", "reductie_20"); prijs.Dag_2_40 = GetPrijsValue(retour, "2", "reductie_40"); } return(prijs); }
private async Task DoSearch() { if (Date == DateTime.MinValue) { Date = DateTime.Now; } if (Time == DateTime.MinValue) { Time = DateTime.Now; } if (string.IsNullOrEmpty(Type)) { Type = "vertrek"; } //Create planner object with GUID PlannerSearch search = new PlannerSearch() { Id = Guid.NewGuid(), SearchDateTime = DateTime.Now, VanStation = VanStation, NaarStation = NaarStation, ViaStation = ViaStation, IsHogesnelheid = IsHogesnelheid, IsYearCard = IsYearCard, Type = Type, Date = Date, Time = Time }; if (search.VanStation != null && search.NaarStation != null) { try { //Save settings var settings = SettingService.GetSettings(); settings.HasYearCard = IsYearCard; settings.UseHsl = IsHogesnelheid; SettingService.SaveSettings(settings); } catch { //never allow it to crash, this is really important } //Save planner object await PlannerService.AddSearchAsync(search); //Navigate to new page and pass GUID //string url = string.Format("/Views/Reisadvies.xaml?id={0}", search.Id); NavigationService.NavigateToReisadvies(search.Id); } }
public async Task AddSearchAsync(PlannerSearch search) { List <PlannerSearch> list = await GetListFromStoreAsync(); if (!list.Where(x => x.Id == search.Id).Any()) { list.Add(search); await SaveListToStoreAsync(list); } }
public async Task AddPermSearchAsync(PlannerSearch search, List <ReisMogelijkheid> mogelijkheden) { List <PlannerSearch> list = await GetPermListFromStoreAsync(); if (!list.Where(x => x.Id == search.Id).Any()) { list.Add(search); await SavePermListToStoreAsync(list); await PermStoreSearchResultAsync(search.Id, mogelijkheden); } }
public TravelAdviceViewModel(INSApiService plannerService, IMyTrajectService trajectService, IPlannerService searchHistoryService) { _plannerService = plannerService; _trajectService = trajectService; _searchHistoryService = searchHistoryService; DataLoader = new DataLoader(); if (ViewModelBase.IsInDesignModeStatic) { ReisMogelijkheden = new List <ReisMogelijkheid>() { new ReisMogelijkheid() { Optimaal = true, AantalOverstappen = 2, GeplandeAankomstTijd = DateTime.Now, GeplandeVertrekTijd = DateTime.Now, GeplandeReisTijd = "2:05" }, new ReisMogelijkheid() { Optimaal = true, AantalOverstappen = 1, GeplandeAankomstTijd = DateTime.Now.AddHours(1), GeplandeVertrekTijd = DateTime.Now, GeplandeReisTijd = "7:05" } }; CurrentSearch = new PlannerSearch() { Date = DateTime.Now, Time = DateTime.Now, NaarStation = new Station() { Name = "Delft" }, VanStation = new Station() { Name = "Amsterdam" }, Type = "Vertrek" }; } AddCommand = new RelayCommand(AddCommandAction); DeleteCommand = new RelayCommand(DeleteCommandAction); }
////public override void Cleanup() ////{ //// // Clean own resources if needed //// base.Cleanup(); ////} internal async Task Initialize(Guid?id) { PlannerSearch = null; ReisPrijs = null; if (id.HasValue) { var search = await PlannerService.GetSearchAsync(id.Value); if (search != null) { PlannerSearch = search; ReisPrijs = await DataLoader.LoadAsync(() => NSApiService.GetPrijs(PlannerSearch)); } } }
private async void GetSearchResult(PlannerSearch search) { try { LoadingState = ViewModel.LoadingState.Loading; List <ReisMogelijkheid> reisMogelijkheden = await _plannerService.GetSearchResult(search); SimpleIoc.Default.GetInstance <MainViewModel>().SearchHistory = new System.Collections.ObjectModel.ObservableCollection <SearchHistory>(await _searchHistoryService.GetAll()); //Set color //SolidColorBrush backgroundColor = (SolidColorBrush)App.Current.Resources["BackgroundColor"]; //SolidColorBrush alternateColor = (SolidColorBrush)App.Current.Resources["AlternateColor"]; //foreach (var mogelijkheid in reisMogelijkheden) //{ // //Set background color here, for performance // if (useAlternate) // mogelijkheid.SetBackground(alternateColor); // else // mogelijkheid.SetBackground(backgroundColor); // useAlternate = !useAlternate; //} ReisMogelijkheden = reisMogelijkheden; foreach (var r in ReisMogelijkheden) { //Add original search r.PlannerSearch = CurrentSearch; } //Event om selected te zetten var optimaal = reisMogelijkheden.Where(x => x.Optimaal).FirstOrDefault(); Messenger.Default.Send <ReisMogelijkheid>(optimaal, "SetOptimaal"); LoadingState = ViewModel.LoadingState.Finished; } catch (Exception e) { LoadingState = ViewModel.LoadingState.Error; } }
//TODO //public void Initialize(PlannerSearch search) //{ // ReisMogelijkheden.Clear(); // LoadingState = ViewModel.LoadingState.None; // this.CurrentSearch = search; // GetSearchResult(search); //} internal void Initialize(PlannerSearch searchHistory) { //ReisMogelijkheden.Clear(); DataLoader.LoadingState = LoadingState.None; //TODO //this.CurrentSearch = searchHistory.PlannerSearch; //ReisMogelijkheden = new List<ReisMogelijkheid>(searchHistory.Reismogelijkheden); //foreach (var r in ReisMogelijkheden) //{ // //Add original search // r.PlannerSearch = CurrentSearch; //} ////Event om selected te zetten //var optimaal = searchHistory.Reismogelijkheden.Where(x => x.Optimaal).FirstOrDefault(); //Messenger.Default.Send<ReisMogelijkheid>(optimaal, "SetOptimaal"); }
/// <summary> /// Initializes a new instance of the PrijsViewModel class. /// </summary> public PrijsViewModel() { NavigationService = SimpleIoc.Default.GetInstance <INavigationService>(); PlannerService = SimpleIoc.Default.GetInstance <IPlannerService>(); NSApiService = SimpleIoc.Default.GetInstance <INSApiService>(); DataLoader = new DataLoader(); if (IsInDesignMode) { // Code runs in Blend --> create design time data. PlannerSearch = new PlannerSearch() { VanStation = new Station() { Name = "Delft Zuid" }, NaarStation = new Station() { Name = "Amsterdam Lange Naam" } }; //ReisPrijs = new ReisPrijs() //{ // Dag_1_20 = "10,20", // Dag_1_40 = "15,2", // Dag_1_Vol = "10,2", // Enkel_1_20 = "10,2", // Enkel_1_Vol = "10,2", // Dag_2_20 = "10,2", // Dag_2_40 = "10,2", // Dag_2_Vol = "10,2", // Enkel_1_40 = "10,2", // Enkel_2_20 = "10,2", // Enkel_2_40 = "10,2", // Enkel_2_Vol = "10,2" //}; } else { // Code runs "for real": Connect to service, etc... } }
private void RepeatSearch(PlannerSearch search) { string from = null; string to = null; string via = null; if (search.VanStation != null) { from = search.VanStation.Name; } if (search.NaarStation != null) { to = search.NaarStation.Name; } if (search.ViaStation != null) { via = search.ViaStation.Name; } NavigationService.NavigateTo(new Uri(string.Format("/Views/Planner.xaml?from={0}&to={1}&via={2}", from, to, via), UriKind.Relative)); }
private async void GetSearchResult(PlannerSearch search) { List <ReisMogelijkheid> reisMogelijkheden = await DataLoader.LoadAsync(() => _plannerService.GetSearchResult(search)); SimpleIoc.Default.GetInstance <MainViewModel>().SearchHistory = new System.Collections.ObjectModel.ObservableCollection <PlannerSearch>(await _searchHistoryService.GetListFromStoreAsync()); //Set color //SolidColorBrush backgroundColor = (SolidColorBrush)App.Current.Resources["BackgroundColor"]; //SolidColorBrush alternateColor = (SolidColorBrush)App.Current.Resources["AlternateColor"]; //foreach (var mogelijkheid in reisMogelijkheden) //{ // //Set background color here, for performance // if (useAlternate) // mogelijkheid.SetBackground(alternateColor); // else // mogelijkheid.SetBackground(backgroundColor); // useAlternate = !useAlternate; //} ReisMogelijkheden = reisMogelijkheden; //TODO //foreach (var r in ReisMogelijkheden) //{ // //Add original search // r.PlannerSearch = CurrentSearch; //} //Event om selected te zetten var optimaal = reisMogelijkheden.Where(x => x.Optimaal).FirstOrDefault(); Messenger.Default.Send <ReisMogelijkheid>(optimaal, "SetOptimaal"); }
public async Task <List <ReisMogelijkheid> > GetSearchResult(PlannerSearch search) { try { var result = await PlannerService.GetPermStoreSearchResultAsync(search.Id); if (result != null) { return(result); } } catch { } var searchResult = await Original.GetSearchResult(search); try { await PlannerService.PermStoreSearchResultAsync(search.Id, searchResult); } catch { } return(searchResult); }
/// <summary> /// Initializes a new instance of the ReisadviesViewModel class. /// </summary> public ReisadviesViewModel() { DataLoader = new DataLoader(); SearchHistory = new ObservableCollection <PlannerSearch>(); PlannerService = SimpleIoc.Default.GetInstance <IPlannerService>(); NSApiService = SimpleIoc.Default.GetInstance <INSApiService>(); NavigationService = SimpleIoc.Default.GetInstance <INavigationService>(); LiveTileService = SimpleIoc.Default.GetInstance <ILiveTileService>(); this.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(ReisadviesViewModel_PropertyChanged); EerderCommand = new RelayCommand(() => DoEerder(), () => CanDoEerder()); LaterCommand = new RelayCommand(() => DoLater(), () => CanDoLater()); TerugreisCommand = new RelayCommand(() => PlanTerugreis()); RepeatSearchCommand = new RelayCommand(() => RepeatSearch()); DoSearchCommand = new RelayCommand(() => DoSearch()); MijnStationsCommand = new RelayCommand(() => DoMijnStations()); PinCommand = new RelayCommand(() => PinSearch()); AddReminderCommand = new RelayCommand(() => AddReminder()); EmailCommand = new RelayCommand(() => EmailAction()); PrijsCommand = new RelayCommand(() => GoPrijs()); VertrektijdenCommand = new RelayCommand(() => GoVertrektijden()); DeleteHistoryCommand = new RelayCommand(() => DeleteHistory()); DeleteCommand = new RelayCommand <Guid>(async x => await DeleteSingleHistoryAsync(x)); AdviceTapCommand = new RelayCommand <Guid>(x => AdviceTapCommandAction(x)); ReplanCommand = new RelayCommand <PlannerSearch>(x => RepeatSearch(x)); if (IsInDesignMode) { // Code runs in Blend --> create design time data. SearchHistory.Add(new PlannerSearch() { VanStation = new Station() { Name = "Amsterdam" }, NaarStation = new Station() { Name = "Delft" }, ViaStation = new Station() { Name = "Almere" } }); SearchHistory.Add(new PlannerSearch() { VanStation = new Station() { Name = "Maastricht" }, NaarStation = new Station() { Name = "Groningen" } }); SelectedSearch = new PlannerSearch() { VanStation = new Station() { Name = "Amsterdam" }, NaarStation = new Station() { Name = "Delft" } }; ReisMogelijkheden = new List <ReisMogelijkheid>() { new ReisMogelijkheid() { Optimaal = true, AantalOverstappen = 2, GeplandeAankomstTijd = DateTime.Now, GeplandeVertrekTijd = DateTime.Now, GeplandeReisTijd = "2:05" }, new ReisMogelijkheid() { Optimaal = true, AantalOverstappen = 2, GeplandeAankomstTijd = DateTime.Now, GeplandeVertrekTijd = DateTime.Now, GeplandeReisTijd = "2:05" } }; SelectedReisMogelijkheid = new ReisMogelijkheid() { Optimaal = true, AantalOverstappen = 2, GeplandeAankomstTijd = DateTime.Now, GeplandeVertrekTijd = DateTime.Now, GeplandeReisTijd = "2:05", ReisDelen = new List <ReisDeel>() { new ReisDeel() { VervoerType = "Intercity", ReisStops = new List <ReisStop>() { new ReisStop() { Naam = "Delft", Vertrekspoor = "1a" }, new ReisStop() { Naam = "Rotterdam", Vertrekspoor = "1a" } } }, new ReisDeel() { VervoerType = "Intercity", ReisStops = new List <ReisStop>() { new ReisStop() { Naam = "Delft", Vertrekspoor = "1a" }, } } } }; } else { // Code runs "for real": Connect to service, etc... RefreshSearchHistoryAsync(); } }
public async Task <List <ReisMogelijkheid> > GetSearchResult(PlannerSearch search) { string stringDateTime = search.DateTime.ToString("yyyy-MM-dd") + "T" + search.DateTime.ToString("HH:mm:ss"); string query = string.Format("previousAdvices=5&nextAdvices=5&fromStation={0}&toStation={1}&dateTime={2}", search.VanStation.Code, search.NaarStation.Code, stringDateTime); if (search.ViaStation != null) { query += "&viaStation=" + search.ViaStation.Code; } if (search.Type != null && search.Type.ToLower() == "vertrek") { query += "&departure=true"; } else { query += "&departure=false"; } query += string.Format("&hslAllowed={0}&yearCard={1}", search.IsHogesnelheid, search.IsYearCard); Uri address = new Uri(string.Format(NSApi.BaseUrl + "/ns-api-treinplanner?{0}&a={1}", query, DateTime.Now.Ticks), UriKind.Absolute); HttpClient webclient = new HttpClient(); webclient.MaxResponseContentBufferSize = 9000000; //webclient.Credentials = new NetworkCredential(NSApi.Login, NSApi.Password); string response = await webclient.GetStringAsync(address); return(await Task.Run(async() => { XElement tijdenXmlElement = XElement.Parse(response); List <ReisMogelijkheid> reismogelijkheidList = new List <ReisMogelijkheid>(); foreach (var element in tijdenXmlElement.Descendants("ReisMogelijkheid")) { ReisMogelijkheid mogelijkheid = new ReisMogelijkheid(); mogelijkheid.IsSearchVertrek = (search.Type == "vertrek"); if (element.Element("AantalOverstappen") != null) { mogelijkheid.AantalOverstappen = int.Parse(element.Element("AantalOverstappen").Value); } mogelijkheid.GeplandeVertrekTijd = GetDateTime(element, "GeplandeVertrekTijd") ?? DateTime.Now; mogelijkheid.ActueleVertrekTijd = GetDateTime(element, "ActueleVertrekTijd") ?? DateTime.Now; mogelijkheid.GeplandeAankomstTijd = GetDateTime(element, "GeplandeAankomstTijd") ?? DateTime.Now; mogelijkheid.ActueleAankomstTijd = GetDateTime(element, "ActueleAankomstTijd") ?? DateTime.Now; mogelijkheid.GeplandeReisTijd = GetElementText(element.Element("GeplandeReisTijd")); if (element.Element("Optimaal") != null) { mogelijkheid.Optimaal = bool.Parse(element.Element("Optimaal").Value); } mogelijkheid.ReisDelen = new List <ReisDeel>(); foreach (var reisdeelElement in element.Descendants("ReisDeel")) { ReisDeel deel = new ReisDeel(); deel.VervoerType = GetElementText(reisdeelElement.Element("VervoerType")); deel.ReisStops = new List <ReisStop>(); foreach (var stopElement in reisdeelElement.Descendants("ReisStop")) { ReisStop stop = new ReisStop(); stop.Naam = GetElementText(stopElement.Element("Naam")); stop.Vertrekspoor = GetElementText(stopElement.Element("Spoor")); stop.Tijd = GetDateTime(stopElement, "Tijd"); if (stopElement.Element("Spoor") != null && stopElement.Element("Spoor").Attribute("wijziging") != null) { stop.IsVertrekspoorWijziging = bool.Parse(stopElement.Element("Spoor").Attribute("wijziging").Value); } deel.ReisStops.Add(stop); } //ReisStop endStation = null; //if (deel.ReisStops.Count > 1) //{ // endStation = deel.ReisStops.Last(); // deel.ReisStops.Remove(endStation); //} mogelijkheid.ReisDelen.Add(deel); //if (endStation != null) //{ // ReisDeel endDeel = new ReisDeel(); // endDeel.VervoerType = GetElementText(reisdeelElement.Element("VervoerType")); // endDeel.ReisStops = new List<ReisStop>(); // endDeel.ReisStops.Add(endStation); // endDeel.IsAankomst = true; // mogelijkheid.ReisDelen.Add(endDeel); //} } //Set vertrek vertraging var first = mogelijkheid.ReisDelen.FirstOrDefault(); if (first != null && first.FirstStop != null) { first.FirstStop.VertragingTekst = mogelijkheid.VertrekVertraging; } //Set aankomst vertraging var last = mogelijkheid.ReisDelen.LastOrDefault(); if (last != null && last.FirstStop != null) { last.LastStop.VertragingTekst = mogelijkheid.AankomstVertraging; } reismogelijkheidList.Add(mogelijkheid); } await _searchHistoryService.Add(new SearchHistory() { PlannerSearch = search, Reismogelijkheden = reismogelijkheidList }); return reismogelijkheidList; })); }
private async void DoSearch() { if (!PlanDateTime.HasValue || PlanDateTime.Value == DateTime.MinValue) { PlanDateTime = DateTime.Now; } if (string.IsNullOrEmpty(Type)) { Type = "vertrek"; } //TODO //bool isHsl = SettingService.GetShowHsl(); //bool isYearCard = SettingService.GetOvCard(); //Create planner object with GUID PlannerSearch search = new PlannerSearch() { Id = Guid.NewGuid(), SearchDateTime = DateTime.Now, VanStation = VanStation, NaarStation = NaarStation, ViaStation = ViaStation, //IsHogesnelheid = isHsl, TODO //IsYearCard = isYearCard, TODO Type = Type, Date = PlanDateTime.Value, Time = PlanDateTime.Value }; if (search.VanStation == null) { ShowFromError = true; } if (search.NaarStation == null) { ShowToError = true; } if (search.VanStation != null && search.NaarStation != null) { //TODO Save default settings if (search.VanStation == search.NaarStation) { this.ShowErrorDifferent = true; } else { //Save last used var list = await LastStationService.Add(VanStation, NaarStation, ViaStation); //LastStations = new ObservableCollection<Station>(list); //LoadLastStations(); //Navigate to new page //TODO //App.RootFrame.Navigate(typeof(TravelAdvicePage), search); } } }
public async Task <List <ReisMogelijkheid> > GetSearchResult(PlannerSearch search) { string stringDateTime = search.Date.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture) + "T" + search.Time.ToString("HH:mm:ss", CultureInfo.InvariantCulture); string query = string.Format("previousAdvices=5&nextAdvices=5&fromStation={0}&toStation={1}&dateTime={2}", search.VanStation.Code, search.NaarStation.Code, stringDateTime); if (search.ViaStation != null) { query += "&viaStation=" + search.ViaStation.Code; } if (search.Type != null && search.Type.ToLower() == "vertrek") { query += "&departure=true"; } else { query += "&departure=false"; } query += string.Format("&hslAllowed={0}&yearCard={1}", search.IsHogesnelheid, search.IsYearCard); Uri address = new Uri(string.Format(NSApi.BaseUrl + "/ns-api-treinplanner?{0}&a={1}", query, DateTime.Now.Ticks), UriKind.Absolute); HttpClient webClient = new HttpClient(); string response = await webClient.GetStringAsync(address); return(await Task.Run(() => { XElement tijdenXmlElement = XElement.Parse(response); List <ReisMogelijkheid> reismogelijkheidList = new List <ReisMogelijkheid>(); foreach (var element in tijdenXmlElement.Descendants("ReisMogelijkheid")) { ReisMogelijkheid mogelijkheid = new ReisMogelijkheid(); if (element.Element("AantalOverstappen") != null) { mogelijkheid.AantalOverstappen = int.Parse(element.Element("AantalOverstappen").Value); } mogelijkheid.GeplandeVertrekTijd = XmlHelper.GetDateTime(element, "GeplandeVertrekTijd") ?? DateTime.Now; mogelijkheid.ActueleVertrekTijd = XmlHelper.GetDateTime(element, "ActueleVertrekTijd") ?? DateTime.Now; mogelijkheid.GeplandeAankomstTijd = XmlHelper.GetDateTime(element, "GeplandeAankomstTijd") ?? DateTime.Now; mogelijkheid.ActueleAankomstTijd = XmlHelper.GetDateTime(element, "ActueleAankomstTijd") ?? DateTime.Now; mogelijkheid.GeplandeReisTijd = XmlHelper.GetElementText(element.Element("GeplandeReisTijd")); mogelijkheid.Status = XmlHelper.GetElementText(element.Element("Status")); if (element.Element("Optimaal") != null) { mogelijkheid.Optimaal = bool.Parse(element.Element("Optimaal").Value); } if (element.Element("Melding") != null) { mogelijkheid.Melding = XmlHelper.GetElementText(element.Element("Melding").Element("Text")); } mogelijkheid.ReisDelen = new List <ReisDeel>(); bool isAlternate = false; foreach (var reisdeelElement in element.Descendants("ReisDeel")) { ReisDeel deel = new ReisDeel(); deel.IsAlternate = isAlternate; isAlternate = !isAlternate; deel.VervoerType = XmlHelper.GetElementText(reisdeelElement.Element("VervoerType")); deel.Vervoerder = XmlHelper.GetElementText(reisdeelElement.Element("Vervoerder")); deel.Status = XmlHelper.GetElementText(reisdeelElement.Element("Status")); deel.ReisStops = new List <ReisStop>(); foreach (var stopElement in reisdeelElement.Descendants("ReisStop")) { ReisStop stop = new ReisStop(); stop.Naam = XmlHelper.GetElementText(stopElement.Element("Naam")); stop.Vertrekspoor = XmlHelper.GetElementText(stopElement.Element("Spoor")); stop.Tijd = XmlHelper.GetDateTime(stopElement, "Tijd"); if (stopElement.Element("Spoor") != null && stopElement.Element("Spoor").Attribute("wijziging") != null) { stop.IsVertrekspoorWijziging = bool.Parse(stopElement.Element("Spoor").Attribute("wijziging").Value); } deel.ReisStops.Add(stop); } mogelijkheid.ReisDelen.Add(deel); } //Set vertrek vertraging var first = mogelijkheid.ReisDelen.FirstOrDefault(); if (first != null && first.FirstStop != null) { first.FirstStop.VertragingTekst = mogelijkheid.VertrekVertraging; } //Set aankomst vertraging var last = mogelijkheid.ReisDelen.LastOrDefault(); if (last != null && last.FirstStop != null) { last.LastStop.VertragingTekst = mogelijkheid.AankomstVertraging; } //Delete vervoerders als het NS is. Tenzij het met iets anders begint. (Bijv Arriva, dan NS daarna wel tonen) foreach (var deel in mogelijkheid.ReisDelen) { if (deel.Vervoerder.ToLower() == "ns" || deel.Vervoerder.ToLower().Contains("spoorwegen")) { deel.Vervoerder = null; } else { break; } } reismogelijkheidList.Add(mogelijkheid); } return reismogelijkheidList; })); }
private async Task GetPrijs(PlannerSearch search) { ReisPrijs result = await PrijsLoader.LoadAsync(() => _prijsService.GetPrijs(search)); this.Prijs = result; }
public Task <ReisPrijs> GetPrijs(PlannerSearch search) { string cacheKey = "GetPrijs_" + search.GetUniqueId(); return(DataCache.GetAsync(cacheKey, () => Original.GetPrijs(search), new DateTime(DateTime.Now.Year + 1, 1, 1))); }
public bool ExistsCreateAdvies(PlannerSearch search, int index, DateTime date) { return(Exists(string.Format("/Views/Reisadvies.xaml?id={0}&index={1}", search.Id, index))); }
private async Task GetPrijs(PlannerSearch search) { ReisPrijs result = await PrijsLoader.LoadAsync(() => JsonCache.GetAsync(search.GetUniquePriceId(), () => _prijsService.GetPrijs(search))); this.Prijs = result; }