Exemple #1
0
        public static TPunto GetTPunto(int id, SqlCeConnection conn)
        {
            TPunto p = null;

            using (SqlCeCommand cmd = conn.CreateCommand())
            {
                string sql = @"SELECT p.puntoId, p.nombre, p.edificioId, p.tag, p.cota, p.cubiculo, p.observaciones, 
                                    e.nombre AS enombre, e.grupoId, g.nombre AS gnombre, p.csnmax, p.csnmargen, p.lastcontrol
                                    FROM puntos AS p 
                                    LEFT OUTER JOIN edificios AS e ON e.edificioId = p.edificioId 
                                    LEFT OUTER JOIN grupos AS g ON g.grupoId = e.grupoId
                                    WHERE p.puntoId= {0}";
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.CommandText = String.Format(sql, id);
                using (SqlCeDataReader dr = cmd.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        p = GetPuntoFromDr(dr);
                    }
                    if (!dr.IsClosed)
                    {
                        dr.Close();
                    }
                }
            }
            return(p);
        }
Exemple #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;
         }
     }
 }
Exemple #3
0
        public static Lectura UltimoEnRonda(Lectura l, TPunto p)
        {
            // comprobamos si la ronda esta completa
            PuntosSinControl psc = PuntosNoControlados(Estado.Ronda);
            // Cogemos el último punto de verdad
            int         ultindex = Estado.Ronda.RondasPuntos.Count - 1;
            TRondaPunto urp      = Estado.Ronda.RondasPuntos[ultindex];

            if (urp.Punto.puntoId == p.puntoId)
            {
                // es el útimo punto
                l.ObsAuto = "FINAL DE RONDA." + l.ObsAuto;
                if (psc.pos >= 0)
                {
                    // hay puntos sin controlar i el siguiente viene en pos
                    l.InAuto  = "INCIDENCIA";
                    l.ObsAuto = "Ronda sin completar, faltan los puntos de control " + psc.lista + ". Pulsa <Volver> para realizar las lecturas pendientes Pulsar <Continuar> para forzar el cierre de la Ronda sin completar.";
                    Estado.RondaPuntoEsperado = Estado.Ronda.RondasPuntos[psc.pos];
                    l.Status = 3;
                }
                else
                {
                    Estado.Ronda = null;
                    Estado.RondaPuntoEsperado = null;
                    Estado.Orden = 0;
                }
            }
            else
            {
                if (psc.pos >= 0)
                {
                    if (l.Status == 0)
                    {
                        // no es el útimo (ponemos como siguiente el no controlado)
                        Estado.Orden = psc.pos;
                        Estado.RondaPuntoEsperado = Estado.Ronda.RondasPuntos[psc.pos];
                    }
                }
                else
                {
                    // la ronda en realidad está completa
                    l.ObsAuto    = "FINAL DE RONDA. " + "Ha controlado todos los puntos de la ronda activa";
                    Estado.Ronda = null;
                    Estado.RondaPuntoEsperado = null;
                    Estado.Orden = 0;
                }
            }
            return(l);
        }
Exemple #4
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;
         }
     }
 }
Exemple #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);
        }
Exemple #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;
 }
Exemple #7
0
 public static TPunto GetPuntoFromDr(SqlCeDataReader dr)
 {
     TGrupo g = new TGrupo();
     TEdificio e = new TEdificio();
     TPunto p = new TPunto();
     p.puntoId = dr.GetInt32(0);
     p.nombre = dr.GetString(1);
     e.edificioId = dr.GetInt32(2);
     p.tag = dr.GetString(3);
     p.cota = dr.GetString(4);
     p.cubiculo = dr.GetString(5);
     p.observaciones = dr.GetString(6);
     e.nombre = dr.GetString(7);
     g.grupoId = dr.GetInt32(8);
     g.nombre = dr.GetString(9);
     p.csnmax = dr.GetInt32(10);
     p.csnmargen = dr.GetInt32(11);
     p.lastcontrol = dr.GetDateTime(12);
     return p;
 }
Exemple #8
0
        public static TPunto GetPuntoFromDr(SqlCeDataReader dr)
        {
            TGrupo    g = new TGrupo();
            TEdificio e = new TEdificio();
            TPunto    p = new TPunto();

            p.puntoId       = dr.GetInt32(0);
            p.nombre        = dr.GetString(1);
            e.edificioId    = dr.GetInt32(2);
            p.tag           = dr.GetString(3);
            p.cota          = dr.GetString(4);
            p.cubiculo      = dr.GetString(5);
            p.observaciones = dr.GetString(6);
            e.nombre        = dr.GetString(7);
            g.grupoId       = dr.GetInt32(8);
            g.nombre        = dr.GetString(9);
            p.csnmax        = dr.GetInt32(10);
            p.csnmargen     = dr.GetInt32(11);
            p.lastcontrol   = dr.GetDateTime(12);
            return(p);
        }
Exemple #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));
        }
Exemple #10
0
 public static Lectura UltimoEnRonda(Lectura l, TPunto p)
 {
     // comprobamos si la ronda esta completa
     PuntosSinControl psc = PuntosNoControlados(Estado.Ronda);
     // Cogemos el último punto de verdad
     int ultindex = Estado.Ronda.RondasPuntos.Count - 1;
     TRondaPunto urp = Estado.Ronda.RondasPuntos[ultindex];
     if (urp.Punto.puntoId == p.puntoId)
     {
         // es el útimo punto
         l.ObsAuto = "FINAL DE RONDA." + l.ObsAuto;
         if (psc.pos >= 0)
         {
             // hay puntos sin controlar i el siguiente viene en pos
             l.InAuto = "INCIDENCIA";
             l.ObsAuto = "Ronda sin completar, faltan los puntos de control " + psc.lista + ". Pulsa <Volver> para realizar las lecturas pendientes Pulsar <Continuar> para forzar el cierre de la Ronda sin completar.";
             Estado.RondaPuntoEsperado = Estado.Ronda.RondasPuntos[psc.pos];
             l.Status = 3;
         }
         else
         {
             Estado.Ronda = null;
             Estado.RondaPuntoEsperado = null;
             Estado.Orden = 0;
         }
     }
     else
     {
         if (psc.pos >= 0)
         {
             if (l.Status == 0)
             {
                 // no es el útimo (ponemos como siguiente el no controlado)
                 Estado.Orden = psc.pos;
                 Estado.RondaPuntoEsperado = Estado.Ronda.RondasPuntos[psc.pos];
             }
         }
         else
         {
             // la ronda en realidad está completa
             l.ObsAuto = "FINAL DE RONDA. " + "Ha controlado todos los puntos de la ronda activa";
             Estado.Ronda = null;
             Estado.RondaPuntoEsperado = null;
             Estado.Orden = 0;
         }
     }
     return l;
 }
Exemple #11
0
 public static Lectura LeidoPunto(TPunto p, string tag)
 {
     Lectura l = new Lectura();
     l.Status = 0;
     //--- 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 = "PUNTO";
     l.DescargaLinea.tipoId = p.puntoId;
     l.DescargaLinea.nombre = p.nombre;
     l.DescargaLinea.fechaHora = DateTime.Now;
     // marcar el punto como controlado en la ronda activa
     CntCN50.SetPointLastControl(p.puntoId,conn);
     //---------
     // comprobar si hay una ronda activa
     if (Estado.Ronda == null)
     {
         l.InAuto = "INCIDENCIA";
         l.Leido = p.nombre;
         l.ObsAuto = "No hay ninguna ronda activa. Realizar la lectura del Codigo de la ronda deseada.";
         MarcarControlado(Estado.Ronda, p);
         return l;
     }
     // comprobar si el punto está en secuencia
     TRondaPunto rp = Estado.RondaPuntoEsperado;
     if (p.puntoId == rp.Punto.puntoId)
     {
         l.InAuto = "CORRECTO";
         l.Leido = p.nombre;
         l.ObsAuto = "Punto control [" + p.nombre + "] leido en secuencia correcta.";
         MarcarControlado(Estado.Ronda, p);
         // Verificar si es el último punto de la ronda
         return UltimoEnRonda(l, p);
     }
     // comprobar si pertence a esa ronda
     bool enRonda = false;
     bool repetido = false;
     for (int i = 0; i < Estado.Ronda.RondasPuntos.Count; i++)
     {
         rp = Estado.Ronda.RondasPuntos[i];
         if (rp.Punto.puntoId == p.puntoId)
         {
             enRonda = true;
             if (rp.Controlado) repetido = true;
         }
     }
     MarcarControlado(Estado.Ronda, p);
     if (enRonda)
     {
         l.InAuto = "INCIDENCIA";
         l.Leido = p.nombre;
         if (repetido)
         {
             l.ObsAuto = "Punto repetido, ya ha leido este punto en la ronda. Pulsa <Volver> para realizar la lectura del Punto Control esperado [" + Estado.RondaPuntoEsperado.Punto.nombre + "]. Pulsar <Continuar> para seguir con la ronda desde el Punto Control leido.";
             l.Status = 4; // punto repetido
         }
         else
         {
             l.ObsAuto = "Punto control leido pertenece a la ronda pero no se ha leido en el orden esperado. Pulsa <Volver> para realizar la lectura del Punto Control esperado [" + Estado.RondaPuntoEsperado.Punto.nombre + "]. Pulsar <Continuar> para seguir con la ronda desde el Punto Control leido.";
             l.Status = 1; // punto no en orden.
         }
         // puede que sea el último
         l = UltimoEnRonda(l, p);
     }
     else
     {
         l.InAuto = "INCIDENCIA";
         l.Leido = p.nombre;
         l.ObsAuto = "Punto control [" + p.nombre + "] leido NO pertenece a esta ronda.";
     }
     return l;
 }
Exemple #12
0
        public static Lectura LeidoPunto(TPunto p, string tag)
        {
            Lectura l = new Lectura();

            l.Status = 0;
            //--- 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            = "PUNTO";
            l.DescargaLinea.tipoId          = p.puntoId;
            l.DescargaLinea.nombre          = p.nombre;
            l.DescargaLinea.fechaHora       = DateTime.Now;
            // marcar el punto como controlado en la ronda activa
            CntCN50.SetPointLastControl(p.puntoId, conn);
            //---------
            // comprobar si hay una ronda activa
            if (Estado.Ronda == null)
            {
                l.InAuto  = "INCIDENCIA";
                l.Leido   = p.nombre;
                l.ObsAuto = "No hay ninguna ronda activa. Realizar la lectura del Codigo de la ronda deseada.";
                MarcarControlado(Estado.Ronda, p);
                return(l);
            }
            // comprobar si el punto está en secuencia
            TRondaPunto rp = Estado.RondaPuntoEsperado;

            if (p.puntoId == rp.Punto.puntoId)
            {
                l.InAuto  = "CORRECTO";
                l.Leido   = p.nombre;
                l.ObsAuto = "Punto control [" + p.nombre + "] leido en secuencia correcta.";
                MarcarControlado(Estado.Ronda, p);
                // Verificar si es el último punto de la ronda
                return(UltimoEnRonda(l, p));
            }
            // comprobar si pertence a esa ronda
            bool enRonda  = false;
            bool repetido = false;

            for (int i = 0; i < Estado.Ronda.RondasPuntos.Count; i++)
            {
                rp = Estado.Ronda.RondasPuntos[i];
                if (rp.Punto.puntoId == p.puntoId)
                {
                    enRonda = true;
                    if (rp.Controlado)
                    {
                        repetido = true;
                    }
                }
            }
            MarcarControlado(Estado.Ronda, p);
            if (enRonda)
            {
                l.InAuto = "INCIDENCIA";
                l.Leido  = p.nombre;
                if (repetido)
                {
                    l.ObsAuto = "Punto repetido, ya ha leido este punto en la ronda. Pulsa <Volver> para realizar la lectura del Punto Control esperado [" + Estado.RondaPuntoEsperado.Punto.nombre + "]. Pulsar <Continuar> para seguir con la ronda desde el Punto Control leido.";
                    l.Status  = 4; // punto repetido
                }
                else
                {
                    l.ObsAuto = "Punto control leido pertenece a la ronda pero no se ha leido en el orden esperado. Pulsa <Volver> para realizar la lectura del Punto Control esperado [" + Estado.RondaPuntoEsperado.Punto.nombre + "]. Pulsar <Continuar> para seguir con la ronda desde el Punto Control leido.";
                    l.Status  = 1; // punto no en orden.
                }
                // puede que sea el último
                l = UltimoEnRonda(l, p);
            }
            else
            {
                l.InAuto  = "INCIDENCIA";
                l.Leido   = p.nombre;
                l.ObsAuto = "Punto control [" + p.nombre + "] leido NO pertenece a esta ronda.";
            }
            return(l);
        }
Exemple #13
0
 private void mnuCancelar_Click(object sender, EventArgs e)
 {
     // salvamos la descarga y el status
     TDescargaLinea dl = this.lec.DescargaLinea;
     int status = this.lec.Status;
     // grabamos incidencias y observaciones
     if (cmbIncidencias.SelectedItem != null)
         dl.incidenciaId = ((TIncidencia)cmbIncidencias.SelectedItem).incidenciaId;
     dl.observaciones = txtObsMan.Text;
     if (status != 2)
     {
         // siempre se graba si le dan continuar
         // excepto en ronda mal leida (status 2)
         SqlCeConnection conn = CntCN50.TSqlConnection();
         CntCN50.TOpen(conn);
         CntCN50.SetDescargaLinea(dl, conn);
         CntCN50.TClose(conn);
         // controlamos que se ha leido un final de ronda pero quedaban puntos sin controlar
         if (status == 3)
         {
             // no hay que hacer nada, ya tiene como punto siguiente el último no controlado.
         }
         if (status == 1)
         {
             // punto fuera de secuencia pero en la ronda
             // hay que desmarcarlo como leido (Issue #SGUARD-63)
             if (dl.tipo == "PUNTO")
             {
                 TPunto p = new TPunto();
                 p.puntoId = dl.tipoId;
                 CntLecturas.DesmarcarControlado(Estado.Ronda, p);
             }
         }
     }
     else
     {
         // el status es 2 y hay que recuperar los datos de la ronda anterior.
         Estado.Ronda = Estado.Ronda2;
         Estado.RondaPuntoEsperado = Estado.RondaPuntoEsperado2;
         Estado.Orden = Estado.Orden2;
     }
     LeerCodigo lc = new LeerCodigo();
     lc.Show();
     this.Close();
 }