Esempio n. 1
0
        private async Task ExecuteCommand()
        {
            DispatcherHelper.CheckBeginInvokeOnUI(() => { IsBusy = true; });
            DataItems?.Clear();
            var risultati = new DataItemExtended();

            try
            {
                switch (_trattaSelezionata)
                {
                case "BIELLA - NOVARA":
                    risultati = await _dataService.GetInfoByTrain(new string[] { "S00070" }, new string[] { "S00248" }, true, @"^11[6|7]\d{2}$");     //BI_NO

                    break;

                case "BIELLA - SANTHIA'":
                    risultati = await _dataService.GetInfoByTrain(new string[] { "S00070" }, new string[] { "S00240" }, true, @"^117\d{2}$");       //BI_SAN

                    break;

                case "TORINO - MILANO":
                    risultati = await _dataService.GetInfoByTrain(new string[] { "S00219", "S00452", "S00452" }, new string[] { "S01700", "S01645", "S00248" }, true, @"^2\d{3}$");      //TO_MI CENTR

                    break;
                }
                DataItems     = new ObservableCollection <DataItem>(risultati.DataList);
                _customerView = CollectionViewSource.GetDefaultView(DataItems);



                DispatcherHelper.CheckBeginInvokeOnUI(() => { IsBusy = false; });
            }
            catch (Exception ex)
            {
                DispatcherHelper.CheckBeginInvokeOnUI(() => { IsBusy = false; });
                MessageBox.Show(ex.Message);
            }
        }
Esempio n. 2
0
 public DataService()
 {
     _elencoTreni = new List <string>();
     dataList     = new DataItemExtended();
 }
Esempio n. 3
0
        public async Task <DataItemExtended> GetInfoByTrain(string[] codiceStazionePartenza, string[] codiceStazioneArrivo, bool isRecursive, string pattern)
        {
            _elencoTreni.Clear();
            for (int i = 0; i < codiceStazionePartenza.Length; i++)
            {
                await GetStazioni(codiceStazionePartenza[i], codiceStazioneArrivo[i], isRecursive, pattern);
            }

            dataList = new DataItemExtended();
            foreach (var numero in _elencoTreni)
            {
                var requestTreno = new RestRequest(@"http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/cercaNumeroTrenoTrenoAutocomplete/{numeroTreno}", Method.GET)
                {
                    RequestFormat = DataFormat.None
                };
                requestTreno.AddHeader("Accept", "text/plain");
                requestTreno.AddUrlSegment("numeroTreno", numero);
                var clientTreno   = new RestClient(requestTreno.Resource);
                var responseTreno = await clientTreno.ExecuteAsync(requestTreno);

                var responseToParse = responseTreno.Content.ToString().TrimEnd('\r', '\n');
                if (string.IsNullOrEmpty(responseToParse))
                {
                    continue;
                }
                var info_1 = responseToParse.Split('\n')[0].Split('|');
                var info_2 = info_1[1].Split('-');

                var request = new RestRequest(@"http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/andamentoTreno/{codiceStazione}/{numeroTreno}/{time}", Method.GET);
                request.AddUrlSegment("codiceStazione", info_2[1]);
                request.AddUrlSegment("numeroTreno", info_2[0]);
                request.AddUrlSegment("time", info_2[2]);

                var client   = new RestClient(request.Resource);
                var response = await client.ExecuteAsync <List <OrarioTreni> >(request);

                if (response != null && response.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    var responseParsed = response.Data;
                    if (responseParsed != null)
                    {
                        foreach (var element in responseParsed)
                        {
                            if (element.fermate != null)
                            {
                                string[] input = new string[3] {
                                    element.tipoTreno, element.provvedimento.ToString(), element.subTitle
                                };
                                var statoTreno = GetStatoTreno(input);
                                if (element.fermate.Count > 0)
                                {
                                    element.fermate.ForEach(f =>
                                    {
                                        dataList.DataList.Add(new DataItem(numero, f.stazione, f.ritardo, string.IsNullOrEmpty(statoTreno) ? UnixTimeStampToDateTime(double.Parse(f.programmata.ToString())).ToString("HH:mm") : statoTreno, f.tipoFermata == "A" || f.tipoFermata == "P"));
                                    });
                                }
                                else
                                {
                                    dataList.DataList.Add(new DataItem(numero, "", 0, string.IsNullOrEmpty(statoTreno) ? "" : statoTreno, true));
                                }
                            }
                            dataList.OraUltimoRilevamento      = UnixTimeStampToDateTime(double.Parse(element.oraUltimoRilevamento.ToString())).ToString("HH:mm");
                            dataList.StazioneUltimoRilevamente = element.stazioneUltimoRilevamento;
                            dataList.Categoria   = element.categoria;
                            dataList.NumeroTreno = element.numeroTreno.ToString();
                        }
                    }
                }
            }
            return(dataList);
        }