예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
    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;
        }
    }
예제 #5
0
    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";
        }
    }
예제 #6
0
    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();
    }
예제 #7
0
 /// <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();
 }
예제 #8
0
    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();
    }
예제 #9
0
        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();
        }
예제 #10
0
        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();
        }