/// <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.")); }
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)); } }