コード例 #1
0
        ////////////////////////////////////////////////////////////////////////////////////////////////



        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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        public void Initialize(ReisMogelijkheid reisMogelijkheid)
        {
            this.ReisMogelijkheid = reisMogelijkheid;

            this.Prijs = null;

            GetPrijs(reisMogelijkheid.PlannerSearch);
        }
コード例 #4
0
        private void GridView_ItemClick_1(object sender, ItemClickEventArgs e)
        {
            ReisMogelijkheid advies = e.ClickedItem as ReisMogelijkheid;

            if (advies != null)
            {
                this.Frame.Navigate(typeof(TravelAdviceSinglePage), advies);
            }
        }
コード例 #5
0
        public TileAdviesControl(ReisMogelijkheid mogelijkheid, string from, string to, string date)
        {
            InitializeComponent();

            VertrekSpoor.Text  = string.Empty;
            AankomstSpoor.Text = string.Empty;

            FromText.Text = from;
            ToText.Text   = to;

            Tile2TextBlock.Text = date;

            if (mogelijkheid != null && mogelijkheid.ReisDelen != null)
            {
                var vertrekspoor  = mogelijkheid.ReisDelen.FirstOrDefault()?.ReisStops?.FirstOrDefault()?.Vertrekspoor;
                var aankomstspoor = mogelijkheid.ReisDelen.LastOrDefault()?.ReisStops?.LastOrDefault()?.Vertrekspoor;

                VertrekSpoor.Text  = vertrekspoor;
                AankomstSpoor.Text = aankomstspoor;
            }
        }
コード例 #6
0
        private void SetOptimaal(ReisMogelijkheid item)
        {
            //Large gridview
            MogelijkhedenGridView.UpdateLayout();

            MogelijkhedenGridView.ScrollIntoView(MogelijkhedenGridView.Items.LastOrDefault());

            MogelijkhedenGridView.UpdateLayout();
            MogelijkhedenGridView.ScrollIntoView(item);
            MogelijkhedenGridView.UpdateLayout();


            //Small list
            MogelijkhedenSmallList.UpdateLayout();

            MogelijkhedenSmallList.ScrollIntoView(MogelijkhedenSmallList.Items.LastOrDefault());

            MogelijkhedenSmallList.UpdateLayout();
            MogelijkhedenSmallList.ScrollIntoView(item);
            MogelijkhedenSmallList.UpdateLayout();
        }
コード例 #7
0
        //public override void ViewStateChanged(Windows.UI.ViewManagement.ApplicationView sender, Windows.UI.ViewManagement.ApplicationViewStateChangedEventArgs e)
        //{
        //        base.ViewStateChanged(sender, e);

        //        this.pageTitle.UpdateLayout();

        //}

        /// <summary>
        /// Invoked when this page is about to be displayed in a Frame.
        /// </summary>
        /// <param name="e">Event data that describes how this page was reached.  The Parameter
        /// property is typically used to configure the page.</param>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (e.NavigationMode != NavigationMode.Back)
            {
                if (e.Parameter is PlannerSearch)
                {
                    ViewModel.Initialize((PlannerSearch)e.Parameter);
                }
                else if (e.Parameter is SearchHistory)
                {
                    ViewModel.Initialize((SearchHistory)e.Parameter);
                }
            }
            else
            {
                var model = SimpleIoc.Default.GetInstance <TravelAdviceSingleViewModel>();
                if (model.ReisMogelijkheid != null)
                {
                    _lastViewed = model.ReisMogelijkheid;
                }

                //    var optimaal = ViewModel.ReisMogelijkheden.Where(x => x.Optimaal).FirstOrDefault();

                //    if (optimaal != null)
                //        SetOptimaal(optimaal);
            }

            base.OnNavigatedTo(e);

            SuspensionManager.SessionState["PageType"] = typeof(TravelAdvicePage).FullName;

            if (e.Parameter is PlannerSearch)
            {
                SuspensionManager.SessionState["PageArgs"] = (PlannerSearch)e.Parameter;
            }
        }
コード例 #8
0
        /// <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();
            }
        }
コード例 #9
0
        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;
            }));
        }
コード例 #10
0
        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;
            }));
        }