コード例 #1
0
        public MODResultado ProbarConeccion(MODOrigenDatos origen)
        {
            EnumBaseDatosOrigen dbtype         = (EnumBaseDatosOrigen)origen.TipoOrigen;
            string coneccion                   = "";
            SqlConnectionStringBuilder builder = null;
            Object parametros                  = null;

            switch (dbtype)
            {
            case EnumBaseDatosOrigen.Oracle:
                coneccion          = Configuraciones.ObtenerConfiguracion("Conexiones", "ORA");
                builder            = new SqlConnectionStringBuilder(coneccion);
                builder.DataSource = string.Format("{0}{1}{2}", origen.Servidor, (string.IsNullOrEmpty(origen.Puerto) && origen.Puerto != "0" ? ":" + origen.Puerto.ToString() : ""), (!string.IsNullOrEmpty(origen.Sid) ? "/" + origen.Sid : ""));
                builder.UserID     = origen.UsuarioBD;
                builder.Password   = origen.ClaveBD;
                break;

            case EnumBaseDatosOrigen.SqlServer:
                coneccion              = Configuraciones.ObtenerConfiguracion("Conexiones", EnumBaseDatos.SIR.ToString());
                builder                = new SqlConnectionStringBuilder(coneccion);
                builder.DataSource     = string.Format("{0}{1}", origen.Servidor, (string.IsNullOrEmpty(origen.Puerto) && origen.Puerto != "0" ? ":" + origen.Puerto.ToString() : ""));
                builder.InitialCatalog = origen.Sid;
                builder.UserID         = origen.UsuarioBD;
                builder.Password       = origen.ClaveBD;
                break;
            }
            MODResultado resultado = new MODResultado();

            try
            {
                IDbConnection con = this.ObtenerConexion(builder.ConnectionString, dbtype);
                if (!string.IsNullOrEmpty(origen.consulta))
                {
                    var consulta = (CommandType.Text == (CommandType)origen.tipoMando) ? origen.consulta.ToLower().Replace("where", "where rownum = 1 and") : origen.consulta;
                    consulta = consulta.Replace("@periodo", "'" + DateTime.Now.ToString("yyyyMMdd") + "'");
                    var reader = con.ExecuteReader(consulta, parametros, commandType: (CommandType)origen.tipoMando);
                    var schema = reader.GetSchemaTable();
                    reader.Close();
                    List <MODCampos> campos = new List <MODCampos>();
                    foreach (DataRow row in schema.Rows)
                    {
                        campos.Add(new MODCampos
                        {
                            Nombre  = row["ColumnName"].ToString(),
                            Largo   = row["ColumnSize"].ToString(),
                            Ordinal = Convert.ToInt32(row["ColumnOrdinal"])
                        });
                    }
                    resultado.DatosAdicionales.Add("campos", JsonConvert.SerializeObject(campos));
                }
            }
            catch (Exception exp)
            {
                resultado.Errores.Add(exp.Message);
                Log.WriteLog(exp, this.GetType().FullName + "-" + nameof(ProbarConeccion),
                             String.Format(@"origen:{0}", System.Text.Json.JsonSerializer.Serialize(origen)),
                             ErrorType.Error);
            }
            return(resultado);
        }
コード例 #2
0
        private DynamicParameters ObtenerParametros(MODOrigenDatos origen)
        {
            DynamicParameters parametros = new DynamicParameters();

            try
            {
                if (origen.Parametros != null)
                {
                    foreach (var a in origen.Parametros)
                    {
                        parametros.Add(a.Key, a.Value);
                    }
                }
                else
                {
                    parametros = null;
                }
            }
            catch (Exception e)
            {
                Log.WriteLog(e, "SIR.Datos.Concretos.ConfiguracionOrigenDatos - ObtenerParametros",
                             String.Format(@"Origen:{0}", System.Text.Json.JsonSerializer.Serialize(origen)),
                             ErrorType.Error);
            }

            return(parametros);
        }
コード例 #3
0
        public List <IDictionary <string, object> > Ejecutar(MODOrigenDatos origen, MODReporte reporte, ref MODResultado resultado)
        {
            List <IDictionary <string, object> > result = null;

            try
            {
                using (var coneccion = ObtenerConexion(origen.cadenaConexion, origen.TipoOrigen))
                {
                    origen.consulta = (origen.TipoOrigen == Comun.Enumeradores.EnumBaseDatosOrigen.Oracle)?origen.consulta.Replace("@periodo", ":periodo"):origen.consulta;
                    var lector = coneccion.ExecuteReader(origen.consulta,
                                                         ObtenerParametros(origen),
                                                         commandType: origen.tipoMando);
                    result = ConvertirADiccionario(ref lector, reporte.campos);
                    coneccion.Close();
                }
            }
            catch (Exception e)
            {
                Log.WriteLog(e, "SIR.Datos.Concretos.ConfiguracionOrigenDatos - Ejecutar",
                             String.Format(@"Origen:{0} - reporte:{1}", System.Text.Json.JsonSerializer.Serialize(origen),
                                           System.Text.Json.JsonSerializer.Serialize(reporte)),
                             ErrorType.Error);
                resultado.Errores.Add("COMUNES.ERRORSERVICIO");
            }
            return(result);
        }
コード例 #4
0
        public IDictionary <string, object> CrearParametros(MODOrigenDatos configuracion, MODFlujo flujo)
        {
            Dictionary <string, object> resultado = new Dictionary <string, object>();
            var _historico = new MODFlujoHistorico {
                Periodo = FijarPeriodoPorPeriodicidad(flujo.Periodo, flujo.Periodicidad, flujo.DatoPeriodo), Periodicidad = flujo.Periodicidad
            };

            if (configuracion != null)
            {
                switch (flujo.Periodicidad)
                {
                case EnumPeriodicidad.diario:
                    if (configuracion == null || configuracion.TipoOrigen == Comun.Enumeradores.EnumBaseDatosOrigen.SqlServer)
                    {
                        resultado.Add("periodo", _historico.StrPeriodo);
                    }
                    else
                    {
                        resultado.Add("periodo", _historico.StrPeriodoOracle);
                    }
                    break;

                case EnumPeriodicidad.mensual:
                case EnumPeriodicidad.trimestral:
                    if (configuracion.TipoOrigen == Comun.Enumeradores.EnumBaseDatosOrigen.SqlServer && configuracion.Sid == "SIR2")
                    {
                        resultado.Add("periodo", _historico.StrPeriodo);
                    }
                    else
                    {
                        resultado.Add("periodo", _historico.StrPeriodoOracle);
                    }
                    break;

                case EnumPeriodicidad.semestral:
                    break;

                case EnumPeriodicidad.anual:
                    var fechaInicio = new DateTime(Convert.ToInt32(_historico.StrPeriodo), 1, 1, 0, 0, 0);
                    var fechaFinal  = new DateTime(Convert.ToInt32(_historico.StrPeriodo), 12, 31, 23, 59, 59);
                    resultado.Add("fecha_ini", fechaInicio.ToString("yyyyMMdd HH:mm:ss"));
                    resultado.Add("fecha_fin", fechaFinal.ToString("yyyyMMdd HH:mm:ss"));
                    break;

                default:
                    break;
                }
            }
            else
            {
                resultado.Add("periodo", _historico.StrPeriodo);
            }

            return(resultado);
        }
コード例 #5
0
 public void AgregarOrigen(MODOrigenDatos origen)
 {
     this.origenes.Add(origen);
     this.homologacion.Add(origen.id, new List <Homologacion>());
 }
コード例 #6
0
        public MODResultado ProbarConeccion(MODOrigenDatos origen)
        {
            IFlujoTrabajoNegocio negocio = FabricaNegocio.CrearFlujoTrabajoNegocio;

            return(negocio.ProbarConeccion(origen));
        }
コード例 #7
0
        public MODResultado ProbarConeccion(MODOrigenDatos origen)
        {
            var data = FabricaDatos.CrearFlujoTrabajoDatos;

            return(data.ProbarConeccion(origen));
        }