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); } }
public DataService() { _elencoTreni = new List <string>(); dataList = new DataItemExtended(); }
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); }