Esempio n. 1
0
        static void Main(string[] args)
        {
            //Console.WriteLine(EventsDateTimeRecipient().Content.ToString());

            //Console.WriteLine(SendSimpleMessage().Content.ToString());


            Console.WriteLine("Hello World!");
            RootSP lstProcedimientos = ProcedimientosJSON();


            /*Procedimientos proc = lstProcedimientos.Find(x => x.procedimientos[0].Nombre.Contains("EmpleadoPerfilDTO"))*/
            ;

            CapaDatos         capaDatos = new CapaDatos();
            EmpleadoPerfilDTO emp       = new EmpleadoPerfilDTO();

            emp.Nomina = "10001595";

            //capaDatos.Generico(proc, ref emp);


            Type typeEmp      = Type.GetType("ConsoleApp1.EmpleadoPerfilDTO");
            Type typePerfiles = Type.GetType("ConsoleApp1.PerfilesDTO");
            Type typePerfil   = Type.GetType("ConsoleApp1.PerfilesDTO");

            dynamic dynEmp;
            dynamic dynPerfiles;
            dynamic dynPerfil;

            using (OracleConnection cnn = new OracleConnection(CapaDatos.connectionString))
            {
                cnn.Open();
                var p = new OracleDynamicParameters();
                p.Add("p_empleado", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output);
                p.Add("p_nomina", "10001595", dbType: OracleDbType.Varchar2, direction: ParameterDirection.Input);
                p.Add("p_perfil", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output);
                p.Add("p_perfiles", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output);
                p.Add("p_estatus", null, dbType: OracleDbType.Int32, direction: ParameterDirection.Output, 20);
                p.Add("p_mensaje", null, dbType: OracleDbType.Varchar2, direction: ParameterDirection.Output, 20);

                using (var multi = cnn.QueryMultiple("ENLACOMS.PKG_EJEMPLO_DAPPER.EMPLEADO_PERFILES",
                                                     param: p, commandType: CommandType.StoredProcedure))
                {
                    //emp = multi.ReadSingle<Empleado>();
                    //emp.perfiles = multi.Read<Perfiles>().AsList();
                    dynEmp      = multi.ReadSingle(typeEmp);
                    dynPerfiles = multi.Read(typePerfiles).AsList();
                    dynPerfil   = multi.ReadFirst(typePerfil);

                    emp        = dynEmp;
                    emp.Perfil = dynPerfil;

                    emp.Perfiles = dynPerfiles;
                }
            }
        }
Esempio n. 2
0
            public void Generico(Procedimientos proc, ref EmpleadoPerfilDTO emp)
            {
                using (OracleConnection cnn = new OracleConnection(connectionString))
                {
                    cnn.Open();
                    var p = new OracleDynamicParameters();
                    //Asigna parametro de entrada
                    foreach (Parametros parametro in proc.Parametros)
                    {
                        if (parametro.Direccion == ParameterDirection.InputOutput ||
                            parametro.Direccion == ParameterDirection.Input)
                        {
                            if (parametro.Valor == null)
                            {
                                AtributoEntidad atrEnt        = parametro.AtributosEntd;
                                object          valorAtributo = emp.GetType().GetProperty(atrEnt.Atributo).GetValue(emp, null);

                                p.Add(parametro.Nombre, valorAtributo, parametro.Tipo, parametro.Direccion, parametro.Tamanio);
                            }
                            else
                            {
                                p.Add(parametro.Nombre, parametro.Valor, parametro.Tipo, parametro.Direccion, parametro.Tamanio);
                            }
                        }
                        else
                        {
                            p.Add(parametro.Nombre, parametro.Valor, parametro.Tipo, parametro.Direccion, parametro.Tamanio);
                        }
                    }

                    using (var multi = cnn.QueryMultiple(proc.Procedimiento,
                                                         param: p, commandType: CommandType.StoredProcedure))
                    {
                        //Asigna valores de salida a la entidad
                        foreach (Parametros parametro in proc.Parametros)
                        {
                            if (parametro.Direccion == ParameterDirection.InputOutput ||
                                parametro.Direccion == ParameterDirection.Output)
                            {
                                AtributoEntidad atrEnt = parametro.AtributosEntd;
                                if (parametro.Tipo == OracleDbType.RefCursor)
                                {
                                    if (atrEnt.Atributo != null)
                                    {
                                        //Type tipoLista = emp.GetType().GetProperty(atrEnt.Atributo).GetType();
                                        //PerfilesDTO ppp = new PerfilesDTO();
                                        //Type tipoLista2 = ppp.GetType();

                                        Type tipoLista = Type.GetType(atrEnt.AtributoTipo);

                                        if (atrEnt.Coleccion.Equals("Si"))
                                        {
                                            List <PerfilesDTO> dd = multi.Read <PerfilesDTO>().AsList();
                                            //dynamic dd = multi.Read(tipoLista).AsList();
                                            emp.GetType().GetProperty(atrEnt.Atributo).SetValue(emp, dd);
                                            //emp.Perfiles = multi.Read<PerfilesDTO>().AsList();
                                        }
                                        else
                                        {
                                            emp.GetType().GetProperty(atrEnt.Atributo).SetValue(emp, multi.ReadSingle(tipoLista));
                                        }
                                    }
                                    else
                                    {
                                        emp = multi.ReadSingle <EmpleadoPerfilDTO>();
                                    }
                                }
                                else
                                {
                                    if (parametro.Tipo == OracleDbType.Varchar2)
                                    {
                                        emp.GetType().GetProperty(atrEnt.Atributo).SetValue(emp, p.Get <OracleString>(parametro.Nombre).ToString());
                                    }
                                    if (parametro.Tipo == OracleDbType.Decimal)
                                    {
                                        emp.GetType().GetProperty(atrEnt.Atributo).SetValue(emp, p.Get <OracleDecimal>(parametro.Nombre).ToInt32());
                                    }
                                }
                            }
                        }
                    }
                }
            }