예제 #1
0
        public static TRonda GetRondaFromTag(string tag, SqlCeConnection conn)
        {
            TRonda r = null;

            using (SqlCeCommand cmd = conn.CreateCommand())
            {
                var sql = @"SELECT r.rondaId, r.nombre, r.tag, r.tagf, 
                                rp.rondaPuntoId, rp.orden, rp.puntoId, 
                                p.nombre AS pnombre, p.edificioId, p.tag AS ptag, 
                                e.nombre AS enombre, e.grupoId, g.nombre AS gnombre, p.cota, p.cubiculo, r.mintime, r.maxtime, p.csnmax, p.csnmargen, p.lastcontrol
                            FROM rondas AS r 
                                LEFT OUTER JOIN rondaspuntos AS rp ON rp.rondaId = r.rondaId 
                                LEFT OUTER JOIN puntos AS p ON p.puntoId = rp.puntoId
                                LEFT OUTER JOIN edificios AS e ON e.edificioId = p.edificioId 
                                LEFT OUTER JOIN grupos AS g ON g.grupoId = e.grupoId
                            WHERE r.tag = '{0}' ORDER BY rp.orden";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.CommandText = String.Format(sql, tag);
                using (SqlCeDataReader dr = cmd.ExecuteResultSet(ResultSetOptions.Scrollable))
                {
                    if (dr.HasRows)
                    {
                        r = GetRondaFromDr(dr);
                    }
                    if (!dr.IsClosed)
                    {
                        dr.Close();
                    }
                }
            }
            return(r);
        }
예제 #2
0
 public static void DesmarcarControlado(TRonda r, TPunto p)
 {
     if (r == null) return;
     for (int i = 0; i < r.RondasPuntos.Count; i++)
     {
         TRondaPunto rp = r.RondasPuntos[i];
         if (rp.Punto.puntoId == p.puntoId)
         {
             // lo desmarcamos como controlado
             rp.Controlado = false;
         }
     }
 }
예제 #3
0
 public static void DesmarcarControlado(TRonda r, TPunto p)
 {
     if (r == null)
     {
         return;
     }
     for (int i = 0; i < r.RondasPuntos.Count; i++)
     {
         TRondaPunto rp = r.RondasPuntos[i];
         if (rp.Punto.puntoId == p.puntoId)
         {
             // lo desmarcamos como controlado
             rp.Controlado = false;
         }
     }
 }
예제 #4
0
        public static Lectura LeidaRonda(TRonda r, string tag)
        {
            Lectura l = new Lectura();

            l.Status = 0; // por defecto no hay tratamiento especial
            // Debería haberse leido previamente un vigilante
            l.Leido = r.nombre;
            //--- Montar descarga asociada
            SqlCeConnection conn = CntCN50.TSqlConnection();

            CntCN50.TOpen(conn);
            l.DescargaLinea = new TDescargaLinea();
            l.DescargaLinea.descargaLineaId = CntCN50.GetSiguienteDescargaLineaId(conn);
            l.DescargaLinea.tag             = tag;
            l.DescargaLinea.tipo            = "RONDA";
            l.DescargaLinea.tipoId          = r.rondaId;
            l.DescargaLinea.nombre          = r.nombre;
            l.DescargaLinea.fechaHora       = DateTime.Now;
            //---------
            if (Estado.Vigilante == null)
            {
                l.InAuto  = "INCIDENCIA";
                l.ObsAuto = "Usuario NO IDENTIFICADO. Realizar lectura de codigo personal.";
            }
            else
            {
                l.InAuto  = "CORRECTO";
                l.ObsAuto = "Inicio de ronda " + r.nombre + ".";
            }
            if (Estado.Ronda != null)
            {
                l.InAuto  = "INCIDENCIA";
                l.ObsAuto = "Ronda anterior SIN CERRAR. Pulsa <Volver> para seguir con la ronda anterior. Pulsa <Continuar> para cerrar la ronda anterior SIN FINALIZAR.";
                l.Status  = 2; // ronda no cerrada
            }
            // salvamos datos de ronda anterior en previsión de cancelar
            Estado.Ronda2 = Estado.Ronda;
            Estado.RondaPuntoEsperado2 = Estado.RondaPuntoEsperado;
            Estado.Orden2 = Estado.Orden;
            // cambiamos en el estado la ronda
            Estado.Ronda = r;
            Estado.RondaPuntoEsperado = r.RondasPuntos[0];
            Estado.Orden = 0;
            return(l);
        }
예제 #5
0
        public static TRonda GetRondaFromDr(SqlCeDataReader dr)
        {
            TRonda r       = new TRonda();
            bool   primero = true;

            while (dr.Read())
            {
                if (primero)
                {
                    r.rondaId      = dr.GetInt32(0);
                    r.nombre       = dr.GetString(1);
                    r.tag          = dr.GetString(2);
                    r.tagf         = dr.GetString(3);
                    r.RondasPuntos = new List <TRondaPunto>();
                    primero        = false;
                }
                TRondaPunto rp = new TRondaPunto();
                TPunto      p  = new TPunto();
                TEdificio   e  = new TEdificio();
                TGrupo      g  = new TGrupo();
                rp.rondaPuntoId = dr.GetInt32(4);
                rp.orden        = dr.GetInt32(5);
                p.puntoId       = dr.GetInt32(6);
                p.nombre        = dr.GetString(7);
                e.edificioId    = dr.GetInt32(8);
                p.tag           = dr.GetString(9);
                e.nombre        = dr.GetString(10);
                g.grupoId       = dr.GetInt32(11);
                g.nombre        = dr.GetString(12);
                p.cota          = dr.GetString(13);
                p.cubiculo      = dr.GetString(14);
                r.mintime       = dr.GetInt32(15);
                r.maxtime       = dr.GetInt32(16);
                p.csnmax        = dr.GetInt32(17);
                p.csnmargen     = dr.GetInt32(18);
                p.lastcontrol   = dr.GetDateTime(19);
                e.Grupo         = g;
                p.Edificio      = e;
                rp.Punto        = p;
                rp.Ronda        = r;
                r.RondasPuntos.Add(rp);
            }
            return(r);
        }
예제 #6
0
 public static TRonda GetRondaFromDr(SqlCeDataReader dr)
 {
     TRonda r = new TRonda();
     bool primero = true;
     while (dr.Read())
     {
         if (primero)
         {
             r.rondaId = dr.GetInt32(0);
             r.nombre = dr.GetString(1);
             r.tag = dr.GetString(2);
             r.tagf = dr.GetString(3);
             r.RondasPuntos = new List<TRondaPunto>();
             primero = false;
         }
         TRondaPunto rp = new TRondaPunto();
         TPunto p = new TPunto();
         TEdificio e = new TEdificio();
         TGrupo g = new TGrupo();
         rp.rondaPuntoId = dr.GetInt32(4);
         rp.orden = dr.GetInt32(5);
         p.puntoId = dr.GetInt32(6);
         p.nombre = dr.GetString(7);
         e.edificioId = dr.GetInt32(8);
         p.tag = dr.GetString(9);
         e.nombre = dr.GetString(10);
         g.grupoId = dr.GetInt32(11);
         g.nombre = dr.GetString(12);
         p.cota = dr.GetString(13);
         p.cubiculo = dr.GetString(14);
         r.mintime = dr.GetInt32(15);
         r.maxtime = dr.GetInt32(16);
         p.csnmax = dr.GetInt32(17);
         p.csnmargen = dr.GetInt32(18);
         p.lastcontrol = dr.GetDateTime(19);
         e.Grupo = g;
         p.Edificio = e;
         rp.Punto = p;
         rp.Ronda = r;
         r.RondasPuntos.Add(rp);
     }
     return r;
 }
예제 #7
0
        public static PuntosSinControl PuntosNoControlados(TRonda r)
        {
            PuntosSinControl psc = new PuntosSinControl();
            int    pos           = -1;
            string lista         = "";

            for (int i = 0; i < r.RondasPuntos.Count; i++)
            {
                TRondaPunto rp = r.RondasPuntos[i];
                if (!rp.Controlado)
                {
                    if (pos == -1)
                    {
                        pos = i;
                    }
                    lista += "[" + rp.Punto.nombre + "]";
                }
            }
            psc.pos   = pos;
            psc.lista = lista;
            return(psc);
        }
예제 #8
0
        public static TRonda GetTRonda(int id, SqlCeConnection conn)
        {
            TRonda r = null;

            using (SqlCeCommand cmd = conn.CreateCommand())
            {
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.CommandText = String.Format("SELECT * FROM rondas WHERE rondaId = {0}", id);
                using (SqlCeDataReader dr = cmd.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        r = GetRondaFromDr(dr);
                    }
                    if (!dr.IsClosed)
                    {
                        dr.Close();
                    }
                }
            }
            return(r);
        }
예제 #9
0
        public static Lectura ComprobarTag(string tag)
        {
            SqlCeConnection conn = CntCN50.TSqlConnection();

            CntCN50.TOpen(conn);
            // comprobamos si el tag corresponde a un vigilante
            TVigilante v = CntCN50.GetVigilanteFromTag(tag, conn);

            if (v != null)
            {
                CntCN50.TClose(conn);
                return(LeidoVigilante(v, tag));
            }
            // comprobamos si es una ronda
            TRonda r = CntCN50.GetRondaFromTag(tag, conn);

            if (r != null)
            {
                CntCN50.TClose(conn);
                return(LeidaRonda(r, tag));
            }
            // comprobamos si es punto
            TPunto p = CntCN50.GetPuntoFromTag(tag, conn);

            if (p != null)
            {
                CntCN50.TClose(conn);
                return(LeidoPunto(p, tag));
            }
            // cierre manual de ronda
            if (tag == "*99*")
            {
                return(FinRondaManual(tag));
            }
            // desconocido
            CntCN50.TClose(conn);
            return(TagDesconocido(tag));
        }
예제 #10
0
 public static Lectura LeidaRonda(TRonda r, string tag)
 {
     Lectura l = new Lectura();
     l.Status = 0; // por defecto no hay tratamiento especial
     // Debería haberse leido previamente un vigilante
     l.Leido = r.nombre;
     //--- Montar descarga asociada
     SqlCeConnection conn = CntCN50.TSqlConnection();
     CntCN50.TOpen(conn);
     l.DescargaLinea = new TDescargaLinea();
     l.DescargaLinea.descargaLineaId = CntCN50.GetSiguienteDescargaLineaId(conn);
     l.DescargaLinea.tag = tag;
     l.DescargaLinea.tipo = "RONDA";
     l.DescargaLinea.tipoId = r.rondaId;
     l.DescargaLinea.nombre = r.nombre;
     l.DescargaLinea.fechaHora = DateTime.Now;
     //---------
     if (Estado.Vigilante == null)
     {
         l.InAuto = "INCIDENCIA";
         l.ObsAuto = "Usuario NO IDENTIFICADO. Realizar lectura de codigo personal.";
     }
     else
     {
         l.InAuto = "CORRECTO";
         l.ObsAuto = "Inicio de ronda " + r.nombre + ".";
     }
     if (Estado.Ronda != null)
     {
         l.InAuto = "INCIDENCIA";
         l.ObsAuto = "Ronda anterior SIN CERRAR. Pulsa <Volver> para seguir con la ronda anterior. Pulsa <Continuar> para cerrar la ronda anterior SIN FINALIZAR.";
         l.Status = 2; // ronda no cerrada
     }
     // salvamos datos de ronda anterior en previsión de cancelar
     Estado.Ronda2 = Estado.Ronda;
     Estado.RondaPuntoEsperado2 = Estado.RondaPuntoEsperado;
     Estado.Orden2 = Estado.Orden;
     // cambiamos en el estado la ronda
     Estado.Ronda = r;
     Estado.RondaPuntoEsperado = r.RondasPuntos[0];
     Estado.Orden = 0;
     return l;
 }
예제 #11
0
 public static PuntosSinControl PuntosNoControlados(TRonda r)
 {
     PuntosSinControl psc = new PuntosSinControl();
     int pos = -1;
     string lista = "";
     for (int i = 0; i < r.RondasPuntos.Count; i++)
     {
         TRondaPunto rp = r.RondasPuntos[i];
         if (!rp.Controlado)
         {
             if (pos == -1) pos = i;
             lista += "[" + rp.Punto.nombre + "]";
         }
     }
     psc.pos = pos;
     psc.lista = lista;
     return psc;
 }