Esempio n. 1
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);
        }
Esempio n. 2
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);
            }
        }
        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;
            }
        }
Esempio n. 5
0
        public void Initialize(PlannerSearch search)
        {
            ReisMogelijkheden.Clear();
            LoadingState = ViewModel.LoadingState.None;

            this.CurrentSearch = search;

            GetSearchResult(search);
        }
Esempio n. 6
0
        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));
                }
            }
        }
Esempio n. 12
0
        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");
        }
Esempio n. 14
0
        /// <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();
            }
        }
Esempio n. 19
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;
            }));
        }
        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);
                }
            }
        }
Esempio n. 21
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;
            }));
        }
        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)));
        }
Esempio n. 24
0
 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;
        }