Example #1
0
 private static bool EsEstadoSuspendido(SubteStatus item)
 {
     // El item puede venir en estado suspendido, pero la descripcion del estado explica que la linea esta tecnicamente normal.
     return(Enum.Parse <EnumEstado>(item.Status, true) == EnumEstado.SUSPENDIDO &&
            item.Text.IndexOf("ya se detienen", StringComparison.OrdinalIgnoreCase) == -1 &&
            item.Text.IndexOf("ya realiza", StringComparison.OrdinalIgnoreCase) == -1);
 }
Example #2
0
        public JsonResult GetSubteState()
        {
            List <SubteStatus> ret = new List <SubteStatus>();

            HtmlWeb      htmlWeb = new HtmlWeb();
            HtmlDocument doc     = htmlWeb.Load("https://www.metrovias.com.ar");
            var          tr      = doc.DocumentNode.SelectNodes("//table[@class='table']/tbody/tr");

            foreach (var row in tr)
            {
                var cells = row.SelectNodes("./td");
                //Solo proceso los nodos TR que tiene 3 elementos TD, porque son las rows que me interesan en la tabla de estado
                if (cells.Count == 3)
                {
                    var status = new SubteStatus
                    {
                        //Solo me interesa la letra de la linea
                        Linea = cells[1].InnerText.Split(' ').Last(),
                        //Como el tag puede tener N clases solo me fijo que tenga una de las dos que me interesa si esta suspendido o normal
                        Status = (cells[2].GetClasses().First(x => x == "suspendido" || x == "normal")),
                        Text   = HtmlEntity.DeEntitize(cells[2].SelectNodes("./div/span").Last().InnerText)
                    };
                    ret.Add(status);

                    //Si es la ultima linea de subte (no quiero incluir premetro y variantes) que termine de iterar
                    if (status.Linea == "H")
                    {
                        break;
                    }
                }
            }
            return(new JsonResult(ret));
        }
Example #3
0
        private static void AddEstado(SubteStatus item, sbyte idLinea, sbyte idEstado, int idFecha)
        {
            var aux = new Estadoservicio
            {
                IdLinea     = idLinea,
                IdEstado    = idEstado,
                HoraDesde   = DateTime.Now.TimeOfDay,
                IdFecha     = idFecha,
                Descripcion = item.Text
            };

            Repository.EstadoServicio.Add(aux);
        }
Example #4
0
 private static EnumEstado GetEstado(SubteStatus item)
 {
     if (EsEstadoSuspendido(item))
     {
         if (item.Text.IndexOf("demora", StringComparison.OrdinalIgnoreCase) != -1)
         {
             return(EnumEstado.DEMORA);
         }
         else if (item.Text.IndexOf("limitado", StringComparison.OrdinalIgnoreCase) != -1 || item.Text.IndexOf("no se detienen", StringComparison.OrdinalIgnoreCase) != -1)
         {
             return(EnumEstado.LIMITADA);
         }
         else
         {
             return(EnumEstado.SUSPENDIDO);
         }
     }
     return(EnumEstado.NORMAL);
 }