// GET: api/Ciudades/{idProv}
        public string Get(string id)
        {
            try
            {
                var servicios = new ServicioWebHorariosProximos();
                var data      = servicios.RecuperarTodasCiudadesPorProvinciaAndroid(Int32.Parse(id), Constants.USUARIO, Constants.CLAVE);
                if (string.IsNullOrEmpty(data))
                {
                    return(JsonConvert.SerializeObject(new Exception("Data retrieved is null.")));
                }

                var spl = data.Split('|');
                if (spl.Length > 0 && spl[0] == "0")
                {
                    var paises = (from s in spl
                                  where !string.IsNullOrEmpty(s) && s.Contains(";")
                                  select new Ciudad
                    {
                        Id = Int32.Parse(s.Split(';')[0]),
                        Nombre = s.Split(';')[1]
                    }).ToList();
                    return(JsonConvert.SerializeObject(paises));
                }

                return(JsonConvert.SerializeObject(new Exception("Error trying to parse data.")));
            }
            catch (Exception ex)
            {
                return(JsonConvert.SerializeObject(ex));
            }
        }
        public string Get(string parada)
        {
            try
            {
                Log.InfoFormat("Parada: {0}", parada);

                if (service == null)
                {
                    service = new swandroidcuandollegasmp.Paradas();
                    service.UserDetailsValue          = new swandroidcuandollegasmp.UserDetails();
                    service.UserDetailsValue.password = "******";
                    service.UserDetailsValue.userName = "******";
                }

                //if(_lineasCache == null)
                //{
                //    _lineasCache = service.RecuperarLineaPorLocalidad("CÓRDOBA", "CÓRDOBA", "ARGENTINA");
                //}

                #region test
                //1278  linea 10 cba

                ///working
                //var calles = p.RecuperarCallesPrincipalPorLinea(1278);
                //var inters = p.RecuperarInterseccionPorLineaYCalle(1278, int.Parse(calles[0].codigo));
                //var locs = p.RecuperarLocalidadesPorEntidad(15);
                //var lineas = p.RecuperarLineaPorLocalidad("CÓRDOBA", "CÓRDOBA", "ARGENTINA");
                //
                //var paradas2 = p.RecuperarParadasPorCalleEInterseccion(23733, 23734);
                //var paradas3 = p.RecuperarParadasPorLineaCalleEInterseccion(1278, 23733, 23734);
                //var horarios = p.RecuperarProximosArribosSMP("C0094", "1278", 0, "CÓRDOBA");
                ////con más datos   (??)
                //var horariosCL = p.RecuperarProximosArribosCLCompleto("C0094", 1278, 0, 15, "CÓRDOBA");

                //buscar entre las lineas la {linea}
                //TresPropiedades _linea = null;
                //for (int i = 0; i < _lineasCache.Length; i++)
                //{
                //    if(_lineasCache[i].descripcionB == linea.Trim())
                //    {
                //        _linea = _lineasCache[i];
                //        break;                    }
                //}
                //if (_linea == null)
                //{
                //    Log.ErrorFormat("LINEA NOT FOUND. Parada: {0} , Linea: {1}", parada, linea);
                //    return JsonConvert.SerializeObject(new List<Horario>());
                //}

                //obtener  codigo
                //var codigo = int.Parse(_linea.descripcionA);
                //var codigo = _linea.descripcionA;

                //var horarios = service.RecuperarProximosArribos(parada, int.Parse(codigo), 0, 15, "CÓRDOBA");
                //var horarios = service.RecuperarProximosArribosSMP(parada, codigo, 0, "CÓRDOBA");

                #endregion

                var list     = new List <Horario>();
                var horarios = service.RecuperarProximosArribos(parada, 0, 0, 15, "CÓRDOBA");

                if (horarios.Length == 0)
                {
                    // intenta con otro servicio
                    ServicioWebHorariosProximos a = new ServicioWebHorariosProximos();
                    var aux = a.RecuperarHorarioCuandoLlegaDosAndroid(parada, Constants.USER_ID, "TODOS", Constants.USUARIO,
                                                                      Constants.CLAVE, "-1");

                    if (aux.StartsWith("0|"))
                    {
                        if (aux.Contains("Sin datos"))
                        {
                            return(JsonConvert.SerializeObject(new Exception("No se encontraron horarios para esta parada")));
                        }
                        var data = aux.Split('|')[1];
                        foreach (string s in data.Split(new[] { "//" }, StringSplitOptions.None))
                        {
                            if (string.IsNullOrEmpty(s))
                            {
                                continue;
                            }

                            var horario = new Horario();

                            var spl = s.Split(',');
                            horario.Linea = spl[0];
                            string ax = spl[1];
                            if (ax.Contains(":"))
                            {
                                int index = ax.IndexOf(":");
                                horario.Hora      = ax.Substring((index - 2));
                                horario.Direccion = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(ax.Replace(horario.Hora, "").ToLower());
                            }
                            else
                            {
                                horario.Direccion = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(spl[1].ToLower());
                                if (spl[2] == "0")
                                {
                                    horario.Llegando = true;
                                    horario.Minutos  = 0;
                                }
                                else
                                {
                                    horario.Minutos = Int32.Parse(spl[2]);
                                }
                            }
                            list.Add(horario);
                        }
                    }
                }
                else
                {
                    foreach (ProximoArribo item in horarios)
                    {
                        var h = new Horario
                        {
                            Direccion = item.bandera,
                            Llegando  = item.arribo.Contains("Arribando"),
                            Linea     = item.linea,
                            Hora      = ""
                        };

                        if (list.Find(x => x.Linea == item.linea) != null)
                        {
                            continue;
                        }

                        var regex   = new Regex(@"\d+");
                        var matches = regex.Matches(item.arribo);
                        if (matches.Count > 0)
                        {
                            h.Minutos = int.Parse(matches[0].Value);
                        }
                        list.Add(h);
                    }
                }

                return(JsonConvert.SerializeObject(list));
            }
            catch (Exception ex)
            {
                Log.Error("Horarios 'GET' error", ex);
                return(JsonConvert.SerializeObject(ex));
            }
        }