Example #1
0
 public override Task <Archivo> SolicitarDescargarArchivo(IdArchivo idArchivo, ServerCallContext context)
 {
     return(Task.FromResult(new Archivo
     {
         Datos = ByteString.CopyFrom(LeerArchivoPorId(idArchivo.Id))
     }));
 }
        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);
            }
        }