public static Lectura Observacion() { if (Estado.RondaPuntoEsperado == null) { return(null); } SqlCeConnection conn = CntCN50.TSqlConnection(); CntCN50.TOpen(conn); Lectura l = new Lectura(); l.Status = 0; l.DescargaLinea = new TDescargaLinea(); l.DescargaLinea.descargaLineaId = CntCN50.GetSiguienteDescargaLineaId(conn); l.DescargaLinea.tag = "OBSERVACION"; l.DescargaLinea.tipo = "OBSERVACION"; TRondaPunto rp = Estado.RondaPuntoEsperado; l.DescargaLinea.tipoId = 0; l.DescargaLinea.nombre = rp.Punto.nombre; l.DescargaLinea.fechaHora = DateTime.Now; CntCN50.TClose(conn); //--------- l.InAuto = "OBSERVACION"; l.Leido = rp.Punto.nombre; l.ObsAuto = "Introduzca incidencia y/o comentario"; return(l); }
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); }
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; } } }
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); }
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; }
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); }
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); }