private int EvaluarBoolIfSp(Regla r, int x, int exitoLinea, string[] text) { string valor; int res1; int res2; StringCollection resultadoValor; string[] inString; int j; string[] conditionString = null; valor = r.ReglaValidacion; valor = valor.Replace("@valor", "'" + CampoActual + "'"); valor = valor.Replace("@IdArchivo", IdArchivo.ToString()); valor = valor.Replace("@NumeroLinea", (x + 1).ToString()); valor = valor.Replace("@CampoInicial", r.CaracterInicial.ToString()); valor = valor.Replace("@LargoCampo", r.LargoCampo.ToString()); conditionString = valor.Split(';'); //InsertaAuditoria(Me.UsuarioModificacion, "Validación BOOL_IF_SP", valor, Me.idArchivo) switch (conditionString[0]) { case "AND": case "OR": res1 = 0; res2 = 0; switch (conditionString[1].Substring(0, 3)) { case "SP#": if (ExecSpBool(conditionString[1].Substring(3))) { res1 = 1; } break; //InsertaAuditoria(Me.UsuarioModificacion, "BOOL_IF_SP SP#", ConditionString[1].Substring(3), Me.idArchivo) case "EQ#": if (CampoActual == conditionString[1].Substring(3)) { res1 = 1; } break; //InsertaAuditoria(Me.UsuarioModificacion, "BOOL_IF_SP EQ#", Me.campoActual + "=" + ConditionString[1].Substring(3), Me.idArchivo) case "IQ#": resultadoValor = ExecQuery(conditionString[1].Substring(3)); if (resultadoValor.Contains(CampoActual)) { res1 = 1; } break; //InsertaAuditoria(Me.UsuarioModificacion, "BOOL_IF_SP IQ#", Me.campoActual + "IN(" + ConditionString[1].Substring(3) + ")", Me.idArchivo) case "IN#": inString = conditionString[1].Substring(3).Split(','); for (j = 0; j <= inString.Count() - 1; j++) { if (CampoActual == inString[j]) { res1 = 1; break; // TODO: might not be correct. Was : Exit For } } break; //InsertaAuditoria(Me.UsuarioModificacion, "BOOL_IF_SP IN#", Me.campoActual + "IN(" + ConditionString[1].Substring(3) + ")", Me.idArchivo) } switch (conditionString[2].Substring(0, 3)) { case "SP#": if (ExecSpBool(conditionString[2].Substring(3))) { res2 = 1; } break; //InsertaAuditoria(Me.UsuarioModificacion, "BOOL_IF_SP SP#", ConditionString[2].Substring(3), Me.idArchivo) case "EQ#": if (CampoActual == conditionString[2].Substring(3)) { res2 = 1; } break; //InsertaAuditoria(Me.UsuarioModificacion, "BOOL_IF_SP EQ#", Me.campoActual + "=" + ConditionString[2].Substring(3), Me.idArchivo) case "IQ#": resultadoValor = ExecQuery(conditionString[2].Substring(3)); if (resultadoValor.Contains(CampoActual)) { res2 = 1; } break; //InsertaAuditoria(Me.UsuarioModificacion, "BOOL_IF_SP IQ#", Me.campoActual + "IN(" + ConditionString[2].Substring(3) + ")", Me.idArchivo) case "IN#": inString = conditionString[1].Substring(3).Split(','); for (j = 0; j <= inString.Count() - 1; j++) { if (CampoActual == inString[j]) { res2 = 1; break; // TODO: might not be correct. Was : Exit For } } break; //InsertaAuditoria(Me.UsuarioModificacion, "BOOL_IF_SP IN#", Me.campoActual + "IN(" + ConditionString[2].Substring(3) + ")", Me.idArchivo) } if (conditionString[0] == "AND") { if (res1 == 1 & res2 == 1) { exitoLinea = 1; } else { ContadorErrores = ContadorErrores + 1; } } else { if (res1 == 1 | res2 == 1) { exitoLinea = 1; } else { ContadorErrores = ContadorErrores + 1; } } break; case "IF": switch (conditionString[1].Substring(0, 3)) { case "LT#": if (ExecSpBoolLT1(conditionString[1].Substring(3), x, text)) { exitoLinea = 1; } else { exitoLinea = evaluarPasoPasoFalse(conditionString) == 0 ? evaluarPasoPasoTrue(conditionString) : 1; ContadorErrores = exitoLinea == 1 ? ContadorErrores: ContadorErrores + 1; } break; case "SP#": if (ExecSpBool(conditionString[1].Substring(3))) { exitoLinea = evaluarPasoPasoTrue(conditionString); ContadorErrores = exitoLinea == 1 ? ContadorErrores : ContadorErrores + 1; } else { exitoLinea = evaluarPasoPasoFalse(conditionString); ContadorErrores = exitoLinea == 1 ? ContadorErrores : ContadorErrores + 1; } break; case "EQ#": if (CampoActual.Equals(conditionString[2].Substring(3))) { exitoLinea = 1; } else { ContadorErrores = ContadorErrores + 1; } break; //InsertaAuditoria(Me.UsuarioModificacion, "BOOL_IF_SP EQ#", Me.campoActual + "=" + ConditionString[2].Substring(3), Me.idArchivo) } break; } return(exitoLinea); }
private int EvaluarBoolSp(string tipoArchivo, Regla regla, int x, int exitoLinea, string text) { //en la tabla regla de archivos se agrego una columna forma de validacion los cuales son: //1 = Valida el dato en la aplicacion //0 = Consulta los stores respectivos StringCollection resultadoValor = new StringCollection(); if (regla.FormaValidacion == 1) { string resultado = string.Empty; switch (regla.ReglaValidacion.Trim()) { case "pa_valida_Fecha @valor": resultado = paValidaFecha(CampoActual).ToString(); break; case "pa_valida_Numero7x2 @valor": resultado = paValidaNumero7x2(CampoActual).ToString(); break; case "pa_valida_SoloNumeros @valor": resultado = paValidaSoloNumero(CampoActual).ToString(); break; } resultadoValor.Add(resultado); } else { var valor = regla.ReglaValidacion; if (valor.Contains("pa_valida_SumaDetalleEnTotal")) { return(EvaluarBoolSumaDetalleEnTotal(regla)); } if (valor.Contains("pa_valida_montoWithKeyNomina")) { valor = valor.Replace("@IdArchivo", IdArchivo.ToString()); valor = valor.Replace("@monto", CampoActual); valor = valor.Replace("@keyNomina", string.Format("'{0}'", text.Trim().Substring(31, 25))); } else { valor = valor.Replace("@valor", "'" + CampoActual + "'"); valor = valor.Replace("@IdArchivo", IdArchivo.ToString()); valor = valor.Replace("@NumeroLinea", (x + 1).ToString()); valor = valor.Replace("@CampoInicial", regla.CaracterInicial.ToString()); valor = valor.Replace("@LargoCampo", regla.LargoCampo.ToString()); } using (var context = new DISEntities()) { var resultado = context.pa_valida_EjecutaProcedimientoAlmacenado(valor); resultadoValor = ObtieneColeccion(resultado); } } if (resultadoValor[0] == "1") { exitoLinea = 1; //start: //1.- valida que exista una PRIMAPAG if (tipoArchivo == "PRIMDCUA") { if (tipoArchivo == "PRIMDCUA") { exitoLinea = EvaluarBoolSpPrimaPag(regla, exitoLinea); } } //end } else { ContadorErrores = ContadorErrores + 1; exitoLinea = 0; } return(exitoLinea); }
private bool ValidacionesArchivo(string tipoArchivo, int tipoRegla) { var exitoValidacion = 0; try { string regla = null; using (var context = new DISEntities()) { if (tipoRegla == 2 & ContadorErrores == 0) { var valorRetorno = context.pa_file_ArchivoValido(IdArchivo); InsertaAuditoria(Convert.ToInt32(UsuarioModificacion), "Se valida archivo", "pa_file_ArchivoValido", IdArchivo); exitoValidacion = int.Parse(valorRetorno.ToString()); if (exitoValidacion == 0) { ContadorErrores = ContadorErrores + 1; MensageError = "Error en Cuadratura de primas"; InsertaAuditoria(Convert.ToInt32(UsuarioModificacion), MensageError, NombreArchivo, IdArchivo); return(false); } } var resultado = context.pa_file_ObtieneReglavalidacionArchivo(tipoArchivo, tipoRegla); regla = resultado.FirstOrDefault(); } if (!string.IsNullOrEmpty(regla)) { string[] conditionString = null; regla = regla.Replace("@NombreArchivo", NombreArchivo); regla = regla.Replace("@IdArchivo", IdArchivo.ToString()); conditionString = regla.Split(';'); switch (conditionString[0].Substring(0, 3)) { case "SP#": if (ExecSpBool(conditionString[0].Substring(3))) { exitoValidacion = 1; } else { exitoValidacion = 0; } InsertaAuditoria(Convert.ToInt32(UsuarioModificacion), conditionString[0].Substring(3), conditionString[0].Substring(3), IdArchivo); break; } if (exitoValidacion == 1) { switch (conditionString[1].Substring(0, 3)) { case "SP#": if (ExecSpBool(conditionString[1].Substring(3))) { exitoValidacion = 1; } else { exitoValidacion = 0; } InsertaAuditoria(Convert.ToInt32(UsuarioModificacion), conditionString[1].Substring(3), conditionString[1].Substring(3), IdArchivo); break; } } else { switch (conditionString[2].Substring(0, 3)) { case "SP#": if (ExecSpBool(conditionString[2].Substring(3))) { exitoValidacion = 1; } else { exitoValidacion = 0; } InsertaAuditoria(Convert.ToInt32(UsuarioModificacion), conditionString[2].Substring(3), conditionString[2].Substring(3), IdArchivo); break; } } return(exitoValidacion == 1); } return(true); } catch (Exception ex) { Observacion = ex.Message; return(false); } }