Ejemplo n.º 1
0
        /// <summary>
        /// Controla la consistencia vertical de todas las entidades críticas
        /// </summary>
        /// <returns></returns>
        public ResultBM IsVerticallyConsistent()
        {
            Dictionary <string, string> entityToCheck = new Dictionary <string, string>();
            DigitVerificatorDAL         dvDal         = new DigitVerificatorDAL();
            List <DigitVerificatorDTO>  digits;

            UserBLL  userBll              = new UserBLL();
            ResultBM usersBms             = userBll.GetUsers();
            List <DigitVeryficator> users = usersBms.GetValue <List <UserBM> >().Cast <DigitVeryficator>().ToList();

            //TODO - Evaluar la posibilidad de ir a buscar a vdv el listado de entidades, y luego ir  a buscarlas

            // La estrategia consiste en crear un diccionario que posea como key la entidad a controlar,
            //y como value un string construido en base a los dígitos horizontales de cada uno de sus registros
            entityToCheck.Add(USER_TABLE, this.GetStringToCheck(users));

            digits = dvDal.GetEntityDigits();

            // En base a las entidades que poseen integridad vertical, se recorre la lista de entidades a chequear
            foreach (DigitVerificatorDTO entityVDV in digits)
            {
                if (!SecurityHelper.IsEquivalent(entityToCheck[entityVDV.entity], entityVDV.vdv))
                {
                    return(new ResultBM(ResultBM.Type.CORRUPTED_DATABASE, SessionHelper.GetTranslation("CORRUPTED_DATABASE_ERROR") + " (VERTICAL - " + entityVDV.entity + ")"));
                }
            }

            return(new ResultBM(ResultBM.Type.OK, "Dígito vertical correcto."));
        }
Ejemplo n.º 2
0
        public ResultBM UpdateVerticallDigit()
        {
            try
            {
                //TODO - debería soportar varias entidades
                DigitVerificatorDAL dvDal   = new DigitVerificatorDAL();
                UserBLL             userBll = new UserBLL();

                ResultBM usersBms             = userBll.GetUsers();
                List <DigitVeryficator> users = usersBms.GetValue <List <UserBM> >().Cast <DigitVeryficator>().ToList();

                string digit = SecurityHelper.Encrypt(GetStringToCheck(users));

                DigitVerificatorDTO digitDto = new DigitVerificatorDTO(USER_TABLE, digit);
                bool result = dvDal.UpdateEntityDigit(digitDto);

                if (result)
                {
                    return(new ResultBM(ResultBM.Type.OK, "Dígito verificador vertical actualizado."));
                }
                else
                {
                    return(new ResultBM(ResultBM.Type.EXCEPTION, SessionHelper.GetTranslation("UPDATING_ERROR")));
                }
            }
            catch (Exception exception)
            {
                return(new ResultBM(ResultBM.Type.EXCEPTION, SessionHelper.GetTranslation("UPDATING_ERROR") + " " + exception.Message, exception));
            }
        }