protected void btnAccept_Click(object sender, ImageClickEventArgs e) { try { if (!DataOk()) { return; } if (newRecord) { resumenRevision = new ResumenRevision(); } UnloadData(resumenRevision); if (newRecord) { ctx.Add(resumenRevision); } ctx.SaveChanges(); if (newRecord) { RadAjaxManager1.ResponseScripts.Add(String.Format("closeWindowRefreshGrid('{0}', 'new');", caller)); } else { RadAjaxManager1.ResponseScripts.Add(String.Format("closeWindowRefreshGrid('{0}', 'edit');", caller)); } } catch (Exception ex) { ControlDeError(ex); } }
public static void CrearResumenesRevision(Dispositivo dsp, LainsaSci ctx) { if (dsp == null) { return; } IList <PlantillaRevision> lpr = (from p in dsp.TipoDispositivo.PlantillaRevisions where p.NoPeriodica == false select p).ToList <PlantillaRevision>(); foreach (PlantillaRevision pr in lpr) { ResumenRevision rr = (from rsr in dsp.ResumenesRevisones where rsr.PlantillaRevision.PlantillaId == pr.PlantillaId select rsr).FirstOrDefault <ResumenRevision>(); if (rr == null) { rr = new ResumenRevision(); rr.Dispositivo = dsp; rr.PlantillaRevision = pr; ctx.Add(rr); } } ctx.SaveChanges(); }
protected void UnloadData(ResumenRevision rr) { if (rdtFechaUltima.SelectedDate != null) { rr.FechaUltima = (DateTime)rdtFechaUltima.SelectedDate; if (CntLainsaSci.FechaNula(rr.FechaSiguiente)) { rr.FechaInicio = rr.FechaUltima; } CntLainsaSci.PlanificarRevisiones(rr, ctx); } }
protected void Page_Init(object sender, EventArgs e) { // it gets an appropiate context (LainsaSciCTX -> web.config) ctx = new LainsaSci("LainsaSciCTX"); // verify if a Usuario is logged Usuario = CntWinWeb.IsSomeoneLogged(this, ctx); if (Usuario == null) { Response.Redirect("Default.aspx"); } else { Session["UsuarioId"] = Usuario.UsuarioId; } // // si llega aquí está autorizado permiso = CntLainsaSci.GetPermiso(Usuario.GrupoUsuario, "dispositivogrid", ctx); if (permiso == null) { RadNotification1.Text = String.Format("<b>{0}</b><br/>{1}", (string)GetGlobalResourceObject("ResourceLainsaSci", "Warning"), (string)GetGlobalResourceObject("ResourceLainsaSci", "NoPermissionsAssigned")); RadNotification1.Show(); RadAjaxManager1.ResponseScripts.Add("closeWindow();"); } btnAccept.Visible = permiso.Modificar; // Si esto no va antes de ResumenRevisionID tendrás problemas. if (Request.QueryString["Caller"] != null) { caller = Request.QueryString["Caller"]; caller = caller.Replace("'", ""); } // Is it a new record or not? if (Request.QueryString["ResumenRevisionId"] != null) { resumenRevision = CntLainsaSci.GetResumenRevision(int.Parse(Request.QueryString["ResumenRevisionId"]), ctx); LoadData(resumenRevision); if (CntLainsaSci.HayRevisionesHechas(resumenRevision, ctx)) { rdtFechaUltima.Enabled = false; } newRecord = false; } // control de skin if (Session["Skin"] != null) { RadSkinManager1.Skin = Session["Skin"].ToString(); } }
public static void PlanificarRevisionesAccesorios(ResumenRevision rr, LainsaSci ctx) { foreach (Dispositivo d in rr.Dispositivo.Accesorios) { foreach (ResumenRevision r in d.ResumenesRevisones) { if (r.PlantillaRevision.PlantillaId == rr.PlantillaRevision.PlantillaId) { r.FechaUltima = rr.FechaUltima; PlanificarRevisiones(r, ctx); } } } return; }
public static bool HayRevisionesHechas(ResumenRevision rr, LainsaSci ctx) { bool res = false; // 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; foreach (Revision r in rs) { if (!CntLainsaSci.FechaNula(r.FechaRevision)) { res = true; } } return(res); }
protected void LoadData(ResumenRevision rr) { txtResumenRevisionId.Text = rr.ResumenRevisionId.ToString(); txtDispositivo.Text = rr.Dispositivo.Nombre; txtPlantilla.Text = rr.PlantillaRevision.Descripcion; if (!CntLainsaSci.FechaNula(rr.FechaInicio)) { txtFechaInicio.Text = String.Format("{0:dd/MM/yyyy}", rr.FechaUltima); } if (!CntLainsaSci.FechaNula(rr.FechaUltima)) { rdtFechaUltima.SelectedDate = rr.FechaUltima; } if (!CntLainsaSci.FechaNula(rr.FechaSiguiente)) { txtFechaSiguiente.Text = String.Format("{0:dd/MM/yyyy}", rr.FechaSiguiente); } }
protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e) { // we only process commands with a datasource (our image buttons) if (e.CommandSource == null) { return; } string typeOfControl = e.CommandSource.GetType().ToString(); if (typeOfControl.Equals("System.Web.UI.WebControls.ImageButton")) { int id = 0; ImageButton imgb = (ImageButton)e.CommandSource; if (imgb.ID != "New" && imgb.ID != "Exit") { id = (int)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex][e.Item.OwnerTableView.DataKeyNames[0]]; } switch (imgb.ID) { case "Select": break; case "Edit": break; case "Delete": try { ResumenRevision ResumenRevision = CntLainsaSci.GetResumenRevision(id, ctx); CntLainsaSci.CTXEliminar(ResumenRevision, ctx); CntLainsaSci.CTXGuardar(ctx); RefreshGrid(true); } catch (Exception ex) { ControlDeError(ex); } break; } } }
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(); }