public ResultadoBd ActualizarDvvDeTabla(string nombreTabla, List <string> lstDvh)
        {
            string dvvNuevo = null;

            foreach (string dvh in lstDvh)
            {
                dvvNuevo += dvh;
            }

            dvvNuevo = DigitoVerificador.CrearHash(dvvNuevo);

            BE.DVV dvvBase = ObtenerDvvPorNombreDeTabla(nombreTabla);

            if (dvvBase != null)
            {
                dvvBase.Valor = dvvNuevo;
            }
            else
            {
                dvvBase = new BE.DVV {
                    NombreTabla = nombreTabla, Valor = dvvNuevo
                };

                return(Agregar(dvvBase));
            }


            return(Editar(dvvBase));
        }
        public EstadoBaseDeDatos ValidarBasedeDatos()
        {
            BLL.Sistema       bllSistema = new BLL.Sistema();
            EstadoBaseDeDatos resultado  = new EstadoBaseDeDatos();

            try
            {
                string todosLosDvh = null;
                resultado.EsValida = true;

                //CALCULO DE TODOS LOS DVH
                //Obtengo todos los nombres de las tablas de la base de datos
                List <string> nombresDeTablas = ObtenerNombresDeTablas();

                foreach (string nombreTabla in nombresDeTablas)
                {
                    //Obtengo el contenido de la tabla actual
                    DataTable tabla        = bllSistema.LeerTablaPorNombre(nombreTabla);
                    string    dvvCalculado = "";
                    bool      tablaValida  = true;

                    for (int row = 0; row <= tabla.Rows.Count - 1; row++)
                    {
                        //Calculo el DVH
                        string dvhCalculado = DigitoVerificador.CalcularDvhDeFila(tabla, row);

                        todosLosDvh = todosLosDvh + dvhCalculado;

                        if (!tabla.Rows[row]["DVH"].ToString().Equals(dvhCalculado))
                        {
                            //Si el DVH guardado en la base es distinto al DVH recien calculado
                            //indica que hubo una modificacion del registro, sin actualizar el DVH
                            resultado.RegistrosCorruptos.Add("Error de integridad en la tabla -" + nombreTabla +
                                                             "- en el registro " + tabla.Rows[row][0].ToString());
                            resultado.EsValida = false;
                            tablaValida        = false;
                        }

                        dvvCalculado += tabla.Rows[row]["DVH"].ToString();
                    }

                    if (tablaValida)
                    {
                        BE.DVV aDvv = _dalManagerDvv.ObtenerDVVPorNombreDeTabla(nombreTabla);
                        dvvCalculado = DigitoVerificador.CrearHash(dvvCalculado);

                        resultado.EsValida = dvvCalculado.Equals(aDvv.Valor);

                        if (!resultado.EsValida)
                        {
                            resultado.RegistrosCorruptos.Add(
                                "Error de integridad en la tabla -" + nombreTabla + "-. DVV vertical corrupto");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Log.Error("Error al validar la integridad de la base.", ex);
                resultado.RegistrosCorruptos.Add("No se pudo validar la integridad de la base.");
                resultado.EsValida = false;

                return(resultado);
            }

            return(resultado);
        }
Exemple #3
0
 public  string GenerarDvh(BE.Usuario usuario)
 {
     return DigitoVerificador.CrearHash(usuario.Id + usuario.Apellido + usuario.Nombre + usuario.NombreUsuario +
                                        usuario.Password + (usuario.Activo == true ? "True" : "False") + usuario.Idioma.Id);
 }