private static void CargarDatoRevision(DatosRevision dr, SqlCeConnection conn, LainsaSci ctx) { string v1 = null, v3 = null, v4 = null; int v2 = 0; if (dr.Campo != null) { if (dr.Campo.TipoCampo != null) { v1 = dr.Campo.TipoCampo.Descripcion; } v2 = dr.Campo.Posicion; v3 = dr.Campo.Nombre; } TDatoRevision tdr = new TDatoRevision() { DatosId = dr.DatosId, TRevision = CntSciTerminal.GetTRevision(dr.Revision.RevisionId, conn), Tipo = v1, Posicion = v2, Nombre = v3, Valor = dr.Valor }; CntSciTerminal.TSave(tdr, conn); }
public static Timbre GetTimbre(Dispositivo dsp, LainsaSci ctx) { Timbre tim = new Timbre(); // el primer paso es mirar en el dispositivo la última quinquenal realizada. //Dispositivo dsp = rev.Dispositivo; var rs = from r in dsp.Revisiones orderby r.FechaRevision descending where r.PlantillaRevision.TipoPeriodo == "A" && r.PlantillaRevision.NumeroPeriodos == 5 && r.Estado == "REALIZADA" select r; if (rs.Count() > 0) { // la fecha del último timbrado será la de esa revisión tim.FechaUltima = rs.FirstOrDefault <Revision>().FechaRevision; tim.PPrueba = 0; tim.PTimbre = 0; } else { // si no se utiliza la fecha de fabricación. tim.FechaUltima = dsp.FechaFabricacion; Revision rev = rs.FirstOrDefault <Revision>(); if (rev != null) { DatosRevision dar = (from dr in rev.DatosRevisions where dr.Campo.InformaDe == "PPrueba" select dr).FirstOrDefault <DatosRevision>(); if (dar != null) { tim.PPrueba = int.Parse(GetValorCampo(dar.Valor)); } else { tim.PPrueba = 0; } dar = (from dr in rs.FirstOrDefault <Revision>().DatosRevisions where dr.Campo.InformaDe == "PTimbre" select dr).FirstOrDefault <DatosRevision>(); if (dar != null) { tim.PTimbre = int.Parse(GetValorCampo(dar.Valor)); } else { tim.PTimbre = 0; } } } // la siguiente será 5 años después tim.FechaSiguiente = tim.FechaUltima.AddYears(5); return(tim); }
private static void CargarDatoRevision(DatosRevision dr, SqlCeConnection conn, LainsaSci ctx) { TDatoRevision tdr = new TDatoRevision() { DatosId = dr.DatosId, TRevision = CntSciTerminal.GetTRevision(dr.Revision.RevisionId, conn), Valor = dr.Valor, Tipo = dr.Campo.TipoCampo.Descripcion, Posicion = dr.Campo.Posicion, Nombre = dr.Campo.Nombre }; CntSciTerminal.TSave(tdr, conn); }
protected void CargarControl(DatosRevision dr) { string tipo = dr.Campo.TipoCampo.Descripcion; switch (tipo) { case "Campo Si/No": CampoSN csn = (CampoSN)LoadControl("~/CampoSN.ascx"); csn.ID = dr.DatosId.ToString(); csn.SetNombre(dr.Campo.Nombre); csn.SetValor(dr.Valor); PlantillaHolder.Controls.Add(csn); break; case "Texto": CampoText ctxt = (CampoText)LoadControl("~/CampoText.ascx"); ctxt.ID = dr.DatosId.ToString(); ctxt.SetNombre(dr.Campo.Nombre); ctxt.SetValor(dr.Valor); PlantillaHolder.Controls.Add(ctxt); break; case "Tetra": CampoTetra ctt = (CampoTetra)LoadControl("~/CampoTetra.ascx"); ctt.ID = dr.DatosId.ToString(); ctt.SetNombre(dr.Campo.Nombre); ctt.SetValor(dr.Valor); PlantillaHolder.Controls.Add(ctt); break; case "Numerico": CampoNum cnum = (CampoNum)LoadControl("~/CampoNum.ascx"); cnum.ID = dr.DatosId.ToString(); cnum.SetNombre(dr.Campo.Nombre); cnum.SetValor(dr.Valor); PlantillaHolder.Controls.Add(cnum); break; case "Fecha": CampoDate cdt = (CampoDate)LoadControl("~/CampoDate.ascx"); cdt.ID = dr.DatosId.ToString(); cdt.SetNombre(dr.Campo.Nombre); cdt.SetValor(dr.Valor); PlantillaHolder.Controls.Add(cdt); break; } }
protected void Page_Init(object sender, EventArgs e) { // it gets an appropiate context (LainsaSciCTX -> web.config) ctx = new LainsaSci("LainsaSciCTX"); // Comprobar que hay algún usuario if (Session["UsuarioId"] != null) { usuario = CntLainsaSci.GetUsuario(int.Parse(Session["UsuarioId"].ToString()), ctx); if (usuario == null) { Response.Redirect("Default.aspx"); } } else { Response.Redirect("Default.aspx"); } lblUsuario.Text = usuario.Nombre; if (Request.QueryString["Id"] != null) { r = CntLainsaSci.GetRevision(int.Parse(Request.QueryString["Id"]), ctx); } if (Request.QueryString["P"] != null) { pagina = int.Parse(Request.QueryString["P"]); } if (r == null) { Response.Redirect("ProgramaList.aspx"); } numpag = r.DatosRevisions.Count + 1; IList <DatosRevision> ldr = r.DatosRevisions.OrderBy(x => x.Campo.Posicion).ToList <DatosRevision>(); dr = ldr[pagina - 1]; lblTitulo.Text = String.Format("{0}: {1} / {2} <br/> <b>D: </b>{3}", r.PlantillaRevision.Descripcion, pagina, numpag, r.Dispositivo.Nombre); // cargar controles segun los datos CargarControl(dr); if (pagina == 1) { btnAnterior.Text = "S"; } }
protected void leerDatos() { foreach (Control control in PlantillaHolder.Controls) { string tipo = control.GetType().ToString(); int id = int.Parse(control.ID); DatosRevision dr = (from d in revision.DatosRevisions where d.DatosId == id select d).FirstOrDefault <DatosRevision>(); if (dr != null) { switch (tipo) { case "ASP.camposn_ascx": CampoSN csn = (CampoSN)control; dr.Valor = csn.GetValor(); break; case "ASP.campotext_ascx": CampoText ctxt = (CampoText)control; dr.Valor = ctxt.GetValor(); break; case "ASP.camponum_ascx": CampoNum cnum = (CampoNum)control; dr.Valor = cnum.GetValor(); break; case "ASP.campodate_ascx": CampoDate cdt = (CampoDate)control; dr.Valor = cdt.GetValor(); break; case "ASP.campotetra_ascx": CampoTetra ctetra = (CampoTetra)control; dr.Valor = ctetra.GetValor(); break; } dr.Revision = revision; } } ctx.SaveChanges(); }
/// <summary> /// Descarga los controles y los asigna a los atributos /// </summary> protected void DescargarControles(Revision revision) { if (revision == null) { revision = new Revision(); ctx.Add(revision); } revision.Dispositivo = CntLainsaSci.GetDispositivo(int.Parse(rdcDispositivo.SelectedValue), ctx); revision.PlantillaRevision = CntLainsaSci.GetPlantillaRevision(int.Parse(rdcPlantilla.SelectedValue), ctx); revision.FechaPlanificada = (DateTime)rdtFecha.SelectedDate; revision.Usuario = CntLainsaSci.GetUsuario(int.Parse(rdcUsuario.SelectedValue), ctx); revision.Estado = "PLANIFICADA"; // Ahora hay que crear los datos asociados a esa revisión foreach (Campo c in revision.PlantillaRevision.Campos) { DatosRevision dr = new DatosRevision(); dr.Campo = c; dr.Revision = revision; ctx.Add(dr); } ctx.SaveChanges(); }
protected void DescargarControl(DatosRevision dr) { Control control = PlantillaHolder.Controls[0]; string tipo = control.GetType().ToString(); if (dr != null) { switch (tipo) { case "ASP.camposn_ascx": CampoSN csn = (CampoSN)control; dr.Valor = csn.GetValor(); break; case "ASP.campotext_ascx": CampoText ctxt = (CampoText)control; dr.Valor = ctxt.GetValor(); break; case "ASP.camponum_ascx": CampoNum cnum = (CampoNum)control; dr.Valor = cnum.GetValor(); break; case "ASP.campodate_ascx": CampoDate cdt = (CampoDate)control; dr.Valor = cdt.GetValor(); break; case "ASP.campotetra_ascx": CampoTetra ctetra = (CampoTetra)control; dr.Valor = ctetra.GetValor(); break; } dr.Revision = r; } // si descargamos grabamos ctx.SaveChanges(); }
public static void ProgramarSiguienteRevision(Revision rev, LainsaSci ctx, bool controlSuperiores) { // si la plantilla no es periódica no hay nada que planificar if (rev.PlantillaRevision.NoPeriodica) { return; } // si el dispositivo está caducado no hay nada que planificar. if (rev.Dispositivo.Caducado) { return; } // si la revisión actual no tiene fecha tampoco podemos planificar. if (CntLainsaSci.FechaNula(rev.FechaRevision)) { return; } Dispositivo dsp = rev.Dispositivo; // controlamos si el dispositivo en el intermedio no está operativo y no se planifican if (!dsp.Operativo && !dsp.SiguePlan) { return; } PlantillaRevision pr = rev.PlantillaRevision; ResumenRevision rr = (from rsr in dsp.ResumenesRevisones where rsr.PlantillaRevision.PlantillaId == pr.PlantillaId select rsr).FirstOrDefault <ResumenRevision>(); // lo primero es conocer cuando tocaría la siguiente. DateTime fechaFin = SiguienteFecha(rev.FechaRevision, pr); // controlar que no hay una revisión de periodo mayor que coincida con ella //if (controlSuperiores) //{ // if (HayPlanificadaSuperior(fechaFin, rev, ctx)) // return; //} // buscamos si ya había una revisión que exactamente [fecha y tipo] // coi-ncida con la que vamos a dar de alta Revision rev2 = (from r in ctx.Revisions where r.Dispositivo.DispositivoId == dsp.DispositivoId && r.PlantillaRevision.PlantillaId == pr.PlantillaId && r.FechaPlanificada == fechaFin select r).FirstOrDefault <Revision>(); if (rev2 == null) { rev2 = new Revision(); rev2.Dispositivo = rev.Dispositivo; rev2.FechaPlanificada = fechaFin; rev2.PlantillaRevision = pr; rev2.Estado = "PLANIFICADA"; // Comprobamos si caemos en caducidad if (fechaFin >= dsp.FechaCaducidad) { rev2.CaduProx = true; } else { // calculamos en que fecha caerá la siguiente y si es fuera de caducidad DateTime fechaSS = SiguienteFecha(fechaFin, pr); if (fechaSS >= dsp.FechaCaducidad) { rev2.CaduProx = true; } } ctx.Add(rev2); foreach (Campo c in pr.Campos) { DatosRevision dr = new DatosRevision(); dr.Campo = c; // Miramos los valores de campo en la anterior para copiarlos DatosRevision dr2 = (from d in rev.DatosRevisions where d.Campo.Nombre == c.Nombre select d).FirstOrDefault <DatosRevision>(); if (dr2 != null) { dr.Valor = dr2.Valor; } dr.Revision = rev2; ctx.Add(dr); } // Eliminmos las posibles inferiores a la planificada. if (controlSuperiores) { EliminarInferiores(rev2, ctx); // esto ya se ha hecho antes } ctx.SaveChanges(); } // Por último actulaizar la fecha en resumen rr.FechaUltima = rev.FechaRevision; rr.FechaSiguiente = fechaFin; ctx.SaveChanges(); }
public static void PlanificarRevisiones(ResumenRevision rr, LainsaSci ctx) { // Hay que evitar que un dispositivo que no sigue planificación planifique. if (!rr.Dispositivo.Operativo && !rr.Dispositivo.SiguePlan) { return; } // NO se planifican dispositivos caducados if (rr.Dispositivo.Caducado) { return; } // Eliminar todas las revisiones de ese dispositivo para esa plantilla, no realizadas var rs = from r in rr.Dispositivo.Revisiones where r.PlantillaRevision.PlantillaId == rr.PlantillaRevision.PlantillaId select r; IList <Revision> revisiones = new List <Revision>(); foreach (Revision r in rs) { if (CntLainsaSci.FechaNula(r.FechaRevision)) { // hay que salvar las programadas para poder recargarlas if (r.Programa != null) { Revision rev = new Revision { Dispositivo = r.Dispositivo, PlantillaRevision = r.PlantillaRevision, FechaPlanificada = r.FechaPlanificada, Programa = r.Programa, FechaProgramada = r.FechaPlanificada }; revisiones.Add(rev); } ctx.Delete(r.DatosRevisions); ctx.Delete(r.Sustitucions); ctx.Delete(r); } } ctx.SaveChanges(); if (CntLainsaSci.FechaNula(rr.FechaUltima)) { return; } DateTime fechaBase = rr.FechaUltima; DateTime fechaSiguiente = SiguienteFecha(fechaBase, rr.PlantillaRevision); // buscamos si ya había una revisión que coincida con la que vamos a dar de alta Revision rev2 = (from r in ctx.Revisions where r.Dispositivo.DispositivoId == rr.Dispositivo.DispositivoId && r.PlantillaRevision.PlantillaId == rr.PlantillaRevision.PlantillaId && r.FechaRevision == fechaSiguiente && r.Dispositivo.Operativo == true select r).FirstOrDefault <Revision>(); if (rev2 == null) { rev2 = new Revision(); rev2.Dispositivo = rr.Dispositivo; rev2.FechaPlanificada = fechaSiguiente; // Comprobamos si caemos en caducidad if (fechaSiguiente >= rev2.Dispositivo.FechaCaducidad) { rev2.CaduProx = true; } else { // calculamos en que fecha caerá la siguiente y si es fuera de caducidad DateTime fechaSS = SiguienteFecha(fechaSiguiente, rr.PlantillaRevision); if (fechaSS >= rev2.Dispositivo.FechaCaducidad) { rev2.CaduProx = true; } } rev2.PlantillaRevision = rr.PlantillaRevision; rev2.Estado = "PLANIFICADA"; //Respetamos la programación en función de las revisiones anteriores foreach (Revision r in revisiones) { if (r.Dispositivo.DispositivoId == rev2.Dispositivo.DispositivoId && r.PlantillaRevision.PlantillaId == rev2.PlantillaRevision.PlantillaId && r.FechaPlanificada == rev2.FechaPlanificada) { rev2.Programa = r.Programa; rev2.FechaProgramada = r.FechaProgramada; rev2.Estado = "PROGRAMADA"; r.Programa.Revisions.Add(rev2); } } ctx.Add(rev2); // buscamos la revisión anterior que tenga datos Revision rva = (from rv in ctx.Revisions where rv.Dispositivo.DispositivoId == rev2.Dispositivo.DispositivoId && rv.PlantillaRevision.PlantillaId == rev2.PlantillaRevision.PlantillaId && rv.Estado == "REALIZADA" && rv.FechaRevision < rev2.FechaPlanificada select rv).FirstOrDefault <Revision>(); foreach (Campo c in rr.PlantillaRevision.Campos) { DatosRevision dr = new DatosRevision(); dr.Campo = c; // si hay anterior copiamos if (rva != null) { DatosRevision dr2 = (from d in rva.DatosRevisions where d.Campo.Nombre == c.Nombre select d).FirstOrDefault <DatosRevision>(); if (dr2 != null) { dr.Valor = dr2.Valor; } } dr.Revision = rev2; ctx.Add(dr); } ctx.SaveChanges(); } // Actualizamos la fecha siguiente en esta plantilla rr.FechaSiguiente = fechaSiguiente; ctx.SaveChanges(); }