Exemplo n.º 1
0
        public List <IdValor> GetList()
        {
            var docentesGuia = new List <IdValor>();

            string        connectionstring = _configuration.GetConnectionString("DefaultConnectionString");
            SqlConnection connection       = new SqlConnection(connectionstring);

            connection.Open();

            SqlCommand com = new SqlCommand("select u.id as id, u.nombre + ' ' + u.apellido as nombre from usuarios u " +
                                            "inner join miembros_equipos me on me.usuario = u.id " +
                                            "inner join equipos e on e.id = me.equipo " +
                                            "where me.baja is null and e.baja is null and u.baja is null " +
                                            "and e.Nombre = 'Docentes guía' ", connection);
            SqlDataReader dr = com.ExecuteReader();

            while (dr.Read())
            {
                var docenteGuia = new IdValor();
                docenteGuia.Id    = dr["id"].ToString();
                docenteGuia.Valor = dr["nombre"].ToString();
                docentesGuia.Add(docenteGuia);
            }

            connection.Close();

            return(docentesGuia);
        }
Exemplo n.º 2
0
        public List <IdValor> GetList([FromQuery] string ciudad)
        {
            var localidades = new List <IdValor>();

            string        connectionstring = _configuration.GetConnectionString("DefaultConnectionString");
            SqlConnection connection       = new SqlConnection(connectionstring);

            connection.Open();

            SqlCommand com = new SqlCommand("select id, nombre from localidades where ciudad = @ciudad", connection);

            com.Parameters.AddWithValue("@ciudad", ciudad);
            SqlDataReader dr = com.ExecuteReader();

            while (dr.Read())
            {
                var localidad = new IdValor();
                localidad.Id    = dr["id"].ToString();
                localidad.Valor = dr["nombre"].ToString();
                localidades.Add(localidad);
            }

            connection.Close();

            return(localidades);
        }
Exemplo n.º 3
0
        public void DesestimarSeleccion([FromBody] IdValor razonId)
        {
            string        connectionstring = _configuration.GetConnectionString("DefaultConnectionString");
            SqlConnection connection       = new SqlConnection(connectionstring);

            connection.Open();

            SqlCommand com = new SqlCommand("update etapas_seleccion_alumnos set estado = (select id from estados_seleccion where nombre = 'Alumno Rechazado') where id = @id", connection);

            com.Parameters.AddWithValue("@id", razonId.Id);

            com.ExecuteReader();

            connection.Close();
            connection.Open();

            SqlCommand com2 = new SqlCommand("update etapas_seleccion_alumnos set razon_rechazo = @razon where id = @id", connection);

            com2.Parameters.AddWithValue("@id", razonId.Id);
            com2.Parameters.AddWithValue("@razon", razonId.Valor);

            com2.ExecuteReader();

            connection.Close();
        }
Exemplo n.º 4
0
        public List <IdValor> GetList()
        {
            var empresas = new List <IdValor>();

            string        connectionstring = _configuration.GetConnectionString("DefaultConnectionString");
            SqlConnection connection       = new SqlConnection(connectionstring);

            connection.Open();

            SqlCommand    com = new SqlCommand("select id, nombre from empresas", connection);
            SqlDataReader dr  = com.ExecuteReader();

            while (dr.Read())
            {
                var empresa = new IdValor();
                empresa.Id    = dr["id"].ToString();
                empresa.Valor = dr["nombre"].ToString();

                empresas.Add(empresa);
            }

            connection.Close();

            return(empresas);
        }
        public IdValor MostrarConf([FromQuery] string tareaId)
        {
            var str = new IdValor();

            string        connectionstring2 = _configuration.GetConnectionString("DefaultConnectionString");
            SqlConnection connection2       = new SqlConnection(connectionstring2);

            connection2.Open();

            SqlCommand com2 = new SqlCommand("select case when " +
                                             "exists(select 1 from tareas t2 where t2.id in " +
                                             "(select rt.tarea_pred from relacion_tareas rt where rt.tarea_suce = t.id) " +
                                             "and t2.estado in (1, 2, 3)) then 'mostrar_conf' else '' end as mostrar_conf " +
                                             "from tareas t where id = @id", connection2);

            com2.Parameters.AddWithValue("@id", tareaId);
            SqlDataReader dr2 = com2.ExecuteReader();

            if (dr2.HasRows)
            {
                while (dr2.Read())
                {
                    str.Valor = dr2["mostrar_conf"].ToString();
                }
            }

            connection2.Close();

            return(str);
        }
        public List <IdValor> GetList()
        {
            var tutores = new List <IdValor>();

            string        connectionstring = _configuration.GetConnectionString("DefaultConnectionString");
            SqlConnection connection       = new SqlConnection(connectionstring);

            connection.Open();

            SqlCommand com = new SqlCommand("select u.id as id, u.nombre + ' ' + u.apellido as nombre from usuarios u " +
                                            "inner join miembros_equipos me on me.usuario = u.id " +
                                            "inner join equipos e on e.id = me.equipo " +
                                            "inner join empresas em on em.id = e.empresa " +
                                            "where me.baja is null and e.baja is null and u.baja is null " +
                                            "and e.Nombre = 'Tutores' and em.baja is null and em.id = 23", connection);
            SqlDataReader dr = com.ExecuteReader();

            while (dr.Read())
            {
                var tutor = new IdValor();
                tutor.Id    = dr["id"].ToString();
                tutor.Valor = dr["nombre"].ToString();
                tutores.Add(tutor);
            }

            connection.Close();

            return(tutores);
        }
        public List <IdValor> GetUsuarioRespList([FromQuery] string usuarioId, [FromQuery] string tipoEtapa, [FromQuery] string etapaId)
        {
            var usuarios = new List <IdValor>();

            string        connectionstring = _configuration.GetConnectionString("DefaultConnectionString");
            SqlConnection connection       = new SqlConnection(connectionstring);

            connection.Open();

            SqlCommand com = new SqlCommand("select u.id as id, " +
                                            "u.nombre + ' ' + u.apellido as nombre from  " +
                                            "usuarios u " +
                                            "where " +
                                            "((((select tipo_usuario from usuarios u3 where u3.id=@id_usuario)='e' " +
                                            "and u.empresa=(select u2.empresa from usuarios u2 where u2.id=@id_usuario))) " +
                                            "or " +
                                            "(((select tipo_usuario from usuarios u3 where u3.id=@id_usuario)='u') and u.alumno is null and u.empresa is null)) " +
                                            "and u.baja is null and u.id<>@id_usuario " +
                                            "union " +
                                            "select u.id, " +
                                            "u.nombre + ' ' + u.apellido from " +
                                            "usuarios u " +
                                            "where " +
                                            "(@tipo_etapa='seleccion' and u.id=(select alumno from etapas_seleccion_alumnos where id=@idetapa)) " +
                                            "and u.baja is null and u.id<>@id_usuario " +
                                            "union " +
                                            "select u3.id as id, " +
                                            "u3.nombre + ' ' + u3.apellido as nombre " +
                                            "from participantes_etapa pe inner " +
                                            "join usuarios u3 on u3.id = pe.usuario " +
                                            "and u3.id <> @id_usuario and u3.baja is null", connection);

            com.Parameters.AddWithValue("@id_usuario", usuarioId);
            com.Parameters.AddWithValue("@tipo_etapa", tipoEtapa);
            com.Parameters.AddWithValue("@idetapa", etapaId);

            SqlDataReader dr = com.ExecuteReader();

            while (dr.Read())
            {
                var usuario = new IdValor();
                usuario.Id    = dr["id"].ToString();
                usuario.Valor = dr["nombre"].ToString();

                usuarios.Add(usuario);
            }

            connection.Close();

            return(usuarios);
        }
        public void CambiarResponsable([FromBody] IdValor responsable, [FromQuery] string tipo)
        {
            DateTime myDateTime       = DateTime.Now;
            string   sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss.fff");

            string        connectionstring2 = _configuration.GetConnectionString("DefaultConnectionString");
            SqlConnection connection2       = new SqlConnection(connectionstring2);

            connection2.Open();

            SqlCommand com2 = new SqlCommand("update tareas set responsable = @responsable_id, fecha_modif = @fecha_modif " +
                                             "where id = @id", connection2);

            com2.Parameters.AddWithValue("@responsable_id", responsable.Valor);
            com2.Parameters.AddWithValue("@id", responsable.Id);
            com2.Parameters.AddWithValue("@fecha_modif", sqlFormattedDate);
            com2.ExecuteReader();

            connection2.Close();
            connection2.Open();

            var aux = 0;

            if (tipo == "definicion")
            {
                aux = 1;
            }
            else
            {
                aux = 2;
            }

            SqlCommand com3 = new SqlCommand("insert into participantes_etapa select @aux, @id, @responsable_id, @alta, null", connection2);

            com3.Parameters.AddWithValue("@aux", aux);
            com3.Parameters.AddWithValue("@responsable_id", responsable.Valor);
            com3.Parameters.AddWithValue("@id", responsable.Id);
            com3.Parameters.AddWithValue("@fecha_modif", sqlFormattedDate);
            com3.Parameters.AddWithValue("@alta", sqlFormattedDate);
            com3.ExecuteReader();

            connection2.Close();
        }
Exemplo n.º 9
0
        public Alumno GetId([FromBody] IdValor usuario)
        {
            string        connectionstring = _configuration.GetConnectionString("DefaultConnectionString");
            SqlConnection connection       = new SqlConnection(connectionstring);

            connection.Open();

            SqlCommand com = new SqlCommand("select id, nombre, apellido from alumnos where nombreUsuario = @nombreUsuario", connection);

            com.Parameters.AddWithValue("@nombreUsuario", usuario.Valor);
            SqlDataReader dr = com.ExecuteReader();

            Alumno alumno = new Alumno();

            while (dr.Read())
            {
                alumno.Id        = dr["id"].ToString();
                alumno.Nombres   = dr["nombre"].ToString();
                alumno.Apellidos = dr["apellido"].ToString();
            }
            connection.Close();

            return(alumno);
        }
Exemplo n.º 10
0
        public TareaView Get([FromQuery] string tareaId)
        {
            var tarea = new TareaView();

            string        connectionstring = _configuration.GetConnectionString("DefaultConnectionString");
            SqlConnection connection       = new SqlConnection(connectionstring);

            connection.Open();

            SqlCommand com = new SqlCommand("select t.id as id_tarea, t.nombre as nombre, t.descripcion as descripcion, e.nombre as estado, " +
                                            "u.id as responsable_id, u.nombre + ' ' + u.apellido as responsable, convert(varchar, t.fecha_fin, 103) as fecha_fin from tareas t " +
                                            "inner join estados_tareas e on e.id = t.estado " +
                                            "inner join usuarios u on u.id = t.responsable " +
                                            "where t.id = @id and e.baja is null and u.baja is null", connection);

            com.Parameters.AddWithValue("@id", tareaId);

            SqlDataReader dr = com.ExecuteReader();

            while (dr.Read())
            {
                tarea.Id          = dr["id_tarea"].ToString();
                tarea.Nombre      = dr["nombre"].ToString();
                tarea.Descripcion = dr["descripcion"].ToString();
                tarea.Estado      = dr["estado"].ToString();
                tarea.Responsable = new IdValor {
                    Id = dr["responsable_id"].ToString(), Valor = dr["responsable"].ToString()
                };
                tarea.FechaFin = dr["fecha_fin"].ToString();
            }

            connection.Close();
            connection.Open();

            SqlCommand com2 = new SqlCommand("select c.id as id_comentario, c.comentario as comentario, u.nombre + ' ' + u.apellido as usuario, " +
                                             "convert(varchar, c.alta, 103) as fecha " +
                                             "from comentarios_x_tarea c " +
                                             "inner join usuarios u on u.id = c.usuario " +
                                             "where tarea = @id and u.baja is null and c.baja is null " +
                                             "order by c.alta desc", connection);

            com2.Parameters.AddWithValue("@id", tareaId);

            SqlDataReader dr2 = com2.ExecuteReader();

            if (dr2.HasRows)
            {
                var comentarios = new List <Comentario>();
                while (dr2.Read())
                {
                    var comentario = new Comentario();
                    comentario.Contenido = dr2["comentario"].ToString();
                    comentario.Fecha     = dr2["fecha"].ToString();
                    comentario.Id        = dr2["id_comentario"].ToString();
                    comentario.Usuario   = dr2["usuario"].ToString();

                    comentarios.Add(comentario);
                }

                tarea.Comentarios = comentarios.ToArray();
            }

            connection.Close();
            connection.Open();

            SqlCommand com3 = new SqlCommand("select a.id as id_archivo, a.archivo_ruta as archivo, u.nombre + ' ' + u.apellido as usuario, " +
                                             "convert(varchar, a.fecha, 103) as fecha " +
                                             "from archivos_x_tarea a " +
                                             "inner join usuarios u on u.id = a.usuario " +
                                             "where tarea = @id and u.baja is null and a.baja is null " +
                                             "order by a.alta desc", connection);

            com3.Parameters.AddWithValue("@id", tareaId);

            SqlDataReader dr3 = com3.ExecuteReader();

            if (dr3.HasRows)
            {
                var archivos = new List <TareaViewArchivo>();
                while (dr3.Read())
                {
                    var archivo = new TareaViewArchivo();
                    archivo.Archivo = dr3["archivo"].ToString();
                    archivo.Id      = dr3["id_archivo"].ToString();
                    archivo.Usuario = dr3["usuario"].ToString();

                    archivos.Add(archivo);
                }

                tarea.Archivos = archivos.ToArray();
            }

            connection.Close();
            connection.Open();

            SqlCommand com4 = new SqlCommand("select t2.id as tarea_que_hab_id, t2.nombre + ' (' + e.nombre + ')' as tarea_que_hab_nombre " +
                                             "from relacion_tareas rt " +
                                             "inner join tareas t on t.id = rt.tarea_pred " +
                                             "inner join tareas t2 on t2.id = rt.tarea_suce " +
                                             "inner join estados_tareas e on e.id = t2.estado " +
                                             "where t.id = @id and rt.baja is null " +
                                             "and t2.baja is null", connection);

            com4.Parameters.AddWithValue("@id", tareaId);

            SqlDataReader dr4 = com4.ExecuteReader();

            if (dr4.HasRows)
            {
                var tareas = new List <IdValor>();
                while (dr4.Read())
                {
                    var tareaQH = new IdValor();
                    tareaQH.Id    = dr4["tarea_que_hab_id"].ToString();
                    tareaQH.Valor = dr4["tarea_que_hab_nombre"].ToString();

                    tareas.Add(tareaQH);
                }
                tarea.TareasQueHabilita = tareas.ToArray();
            }

            connection.Close();
            connection.Open();

            SqlCommand com5 = new SqlCommand("select t2.id as tarea_pred_id, t2.nombre + ' (' + e.nombre + ')' as tarea_pred_nombre " +
                                             "from relacion_tareas rt " +
                                             "inner join tareas t on t.id = rt.tarea_suce " +
                                             "inner join tareas t2 on t2.id = rt.tarea_pred " +
                                             "inner join estados_tareas e on e.id = t2.estado " +
                                             "where t.id = @id and rt.baja is null " +
                                             "and t2.baja is null", connection);

            com5.Parameters.AddWithValue("@id", tareaId);

            SqlDataReader dr5 = com5.ExecuteReader();

            if (dr5.HasRows)
            {
                var tareas = new List <IdValor>();
                while (dr5.Read())
                {
                    var tareaP = new IdValor();
                    tareaP.Id    = dr5["tarea_pred_id"].ToString();
                    tareaP.Valor = dr5["tarea_pred_nombre"].ToString();

                    tareas.Add(tareaP);
                }
                tarea.TareasPredecesoras = tareas.ToArray();
            }

            connection.Close();

            return(tarea);
        }
Exemplo n.º 11
0
        public Etapa GetData([FromQuery] string etapaDefinicionId)
        {
            var etapa = new Etapa();

            string        connectionstring = _configuration.GetConnectionString("DefaultConnectionString");
            SqlConnection connection       = new SqlConnection(connectionstring);

            connection.Open();

            SqlCommand com = new SqlCommand("select u.id,'Administrador de Universidad: ' + u.nombre + ' ' + u.apellido as nombre " +
                                            "from usuarios u " +
                                            "inner join etapas_definicion_convenio ec on u.id = ec.admin_universidad " +
                                            "where ec.baja IS NULL and u.baja IS NULL and ec.id = @etapadefinicion", connection);

            com.Parameters.AddWithValue("@etapadefinicion", etapaDefinicionId);

            SqlDataReader dr = com.ExecuteReader();

            while (dr.Read())
            {
                var adminstradorUniversidad = new IdValor();
                adminstradorUniversidad.Id     = dr["id"].ToString();
                adminstradorUniversidad.Valor  = dr["nombre"].ToString();
                etapa.AdministradorUniversidad = adminstradorUniversidad;
            }

            connection.Close();
            connection.Open();

            SqlCommand comAdminEmp = new SqlCommand("select u.id as id, 'Administrador de Empresa: ' + u.nombre + ' ' + u.apellido  as nombre " +
                                                    "from usuarios u " +
                                                    "inner join etapas_definicion_convenio ec on u.id = ec.admin_empresa " +
                                                    "where ec.baja IS NULL and u.baja IS NULL and ec.id = @etapadefinicion", connection);

            comAdminEmp.Parameters.AddWithValue("@etapadefinicion", etapaDefinicionId);

            SqlDataReader drAdminEmp = comAdminEmp.ExecuteReader();

            while (drAdminEmp.Read())
            {
                var administradorEmpresa = new IdValor();
                administradorEmpresa.Id    = drAdminEmp["id"].ToString();
                administradorEmpresa.Valor = drAdminEmp["nombre"].ToString();
                etapa.AdministradorEmpresa = administradorEmpresa;
            }

            connection.Close();
            connection.Open();

            SqlCommand comEstado = new SqlCommand("select est.id as id, 'Estado: ' + est.nombre as nombre " +
                                                  "from estados_convenios est " +
                                                  "inner join etapas_definicion_convenio ec on est.id = ec.estado " +
                                                  "where ec.baja is null and est.baja is null and ec.id = @etapadefinicion", connection);

            comEstado.Parameters.AddWithValue("@etapadefinicion", etapaDefinicionId);

            SqlDataReader drEstado = comEstado.ExecuteReader();

            while (drEstado.Read())
            {
                var estado = new IdValor();
                estado.Id    = drEstado["id"].ToString();
                estado.Valor = drEstado["nombre"].ToString();
                etapa.Estado = estado;
            }

            connection.Close();
            connection.Open();

            SqlCommand comTarea = new SqlCommand("SELECT " +
                                                 "t.id as idtarea, " +
                                                 "t.alta as alta, " +
                                                 "t.nombre as nombre, " +
                                                 "'Responsable: ' + u.nombre + ' ' + u.apellido as responsable, " +
                                                 "'Estado: ' + et.nombre as estado, " +
                                                 "'Fecha de fin de tarea: ' + convert(varchar, t.fecha_fin, 103) as fecha_fin, " +
                                                 "'Última modificación: Hace ' + convert(varchar, datediff(dd, t.fecha_modif, getdate())) + ' días' as dias_modif, " +
                                                 "isnull((datediff(dd, t.fecha_modif, getdate())),0) as dias_modif_int, " +
                                                 "case when exists " +
                                                 "(select 1 from relacion_tareas rt " +
                                                 "inner join tareas t2 on rt.tarea_pred = t2.id " +
                                                 "where rt.tarea_suce = t.id and t2.estado in (1, 2, 3)) then 'Existen predecesoras sin terminar' else '' end as predec " +
                                                 "FROM tareas t " +
                                                 "inner join etapas_definicion_convenio ec on t.etapa_definicion_convenio = ec.id " +
                                                 "left join usuarios u on u.id = t.responsable " +
                                                 "inner join estados_tareas et on et.id = t.estado " +
                                                 "where t.baja is null and u.baja is null and et.baja is null and ec.baja is null " +
                                                 "and ec.id = @etapadefinicion", connection);

            comTarea.Parameters.AddWithValue("@etapadefinicion", etapaDefinicionId);

            SqlDataReader drTarea = comTarea.ExecuteReader();

            if (drTarea.HasRows)
            {
                var tareas = new List <Tarea>();
                while (drTarea.Read())
                {
                    var tarea = new Tarea();
                    tarea.Id           = drTarea["idtarea"].ToString();
                    tarea.Nombre       = drTarea["nombre"].ToString();
                    tarea.Responsable  = drTarea["responsable"].ToString();
                    tarea.Estado       = drTarea["estado"].ToString();
                    tarea.FechaFin     = drTarea["fecha_fin"].ToString();
                    tarea.DiaModif     = drTarea["dias_modif"].ToString();
                    tarea.Predecesoras = drTarea["predec"].ToString();
                    tarea.Alta         = drTarea["alta"].ToString();
                    tarea.DiasModifInt = Convert.ToInt32(drTarea["dias_modif_int"]);

                    tareas.Add(tarea);
                }
                etapa.Tareas = tareas.ToArray();
            }

            connection.Close();
            connection.Open();

            SqlCommand com2 = new SqlCommand("select e.id as empresa_id, e.nombre as empresa_nombre, c.id as convenio_id, c.nombre as convenio_nombre, edc.nombre as nombre_etapa, " +
                                             "c.archivo_convenio_string as archivo " +
                                             "from etapas_definicion_convenio edc inner join empresas e on e.id=edc.empresa " +
                                             "left join convenios c on c.etapa_definicion=edc.id " +
                                             "where c.baja is null and e.baja is null and edc.baja is null and edc.id = @id", connection);

            com2.Parameters.AddWithValue("@id", etapaDefinicionId);

            SqlDataReader dr2 = com2.ExecuteReader();

            if (dr2.HasRows)
            {
                while (dr2.Read())
                {
                    etapa.Empresa = new IdValor {
                        Id = dr2["empresa_id"].ToString(), Valor = dr2["empresa_nombre"].ToString()
                    };
                    etapa.Convenio = new IdValor {
                        Id = dr2["convenio_id"].ToString(), Valor = dr2["convenio_nombre"].ToString()
                    };
                    etapa.Archivo     = dr2["archivo"].ToString();
                    etapa.NombreEtapa = dr2["nombre_etapa"].ToString();
                }
            }

            connection.Close();

            return(etapa);
        }
        public Perfil GetPerfil([FromQuery] string alumnoId)
        {
            string        connectionstring = _configuration.GetConnectionString("DefaultConnectionString");
            SqlConnection connection       = new SqlConnection(connectionstring);

            connection.Open();

            SqlCommand com = new SqlCommand("select perfil.id, " +
                                            "perfil.nombre, " +
                                            "perfil.apellido, " +
                                            "perfil.pais_residencia as pais_residencia_id, pais.nombre as pais_nombre, " +
                                            "perfil.provincia as provincia_id, provincia.nombre as provincia_nombre, " +
                                            "perfil.zona as zona_id, zona.nombre as zona_nombre, " +
                                            "perfil.ciudad as ciudad_id, ciudad.nombre as ciudad_nombre, " +
                                            "perfil.localidad as localidad_id, localidad.nombre as localidad_nombre, " +
                                            "perfil.fecha_nac, " +
                                            "perfil.estado_civil, " +
                                            "perfil.pais_nacionalidad as pais_nacionalidad_id, pais2.nombre as pais_nacionalidad_nombre, " +
                                            "perfil.tipo_documento, " +
                                            "perfil.documento, " +
                                            "perfil.objetivo_laboral, " +
                                            "perfil.intereses_personales, " +
                                            "perfil.alumno, " +
                                            "perfil.carrera as carrera_id, carrera.nombre as carrera_nombre, " +
                                            "perfil.porcentaje_mat_apr, " +
                                            "perfil.cantidad_mat_apr, " +
                                            "perfil.promedio, " +
                                            "perfil.anio_cursada " +
                                            "from perfil perfil " +
                                            "left join paises pais on perfil.pais_residencia = pais.id " +
                                            "left join paises pais2 on perfil.pais_nacionalidad = pais2.id " +
                                            "left join provincias provincia on perfil.provincia = provincia.id " +
                                            "left join zonas zona on perfil.zona = zona.id " +
                                            "left join ciudades ciudad on perfil.ciudad = ciudad.id " +
                                            "left join localidades localidad on perfil.localidad = localidad.id " +
                                            "left join carreras carrera on perfil.carrera = carrera.id " +
                                            "where perfil.alumno = @alumno", connection);

            com.Parameters.AddWithValue("@alumno", alumnoId);

            SqlDataReader dr = com.ExecuteReader();

            var perfil = new Perfil();

            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    perfil.Id             = dr["id"].ToString();
                    perfil.Nombre         = dr["nombre"].ToString();
                    perfil.Apellido       = dr["apellido"].ToString();
                    perfil.PaisResidencia = new IdValor[] { new IdValor {
                                                                Id = dr["pais_residencia_id"].ToString(), Valor = dr["pais_nombre"].ToString()
                                                            } };
                    perfil.ProvinciaResidencia = new IdValor[] { new IdValor {
                                                                     Id = dr["provincia_id"].ToString(), Valor = dr["provincia_nombre"].ToString()
                                                                 } };
                    perfil.Zona = new IdValor[] { new IdValor {
                                                      Id = dr["zona_id"].ToString(), Valor = dr["zona_nombre"].ToString()
                                                  } };
                    perfil.Ciudad = new IdValor[] { new IdValor {
                                                        Id = dr["ciudad_id"].ToString(), Valor = dr["ciudad_nombre"].ToString()
                                                    } };
                    perfil.Localidad = new IdValor[] { new IdValor {
                                                           Id = dr["localidad_id"].ToString(), Valor = dr["localidad_nombre"].ToString()
                                                       } };
                    perfil.FechaNacimientoDT = Convert.ToDateTime(dr["fecha_nac"].ToString());
                    perfil.EstadoCivil       = dr["estado_civil"].ToString() != null ? new IdValor[] { new IdValor {
                                                                                                           Id = GetEstadoCivilId(dr["estado_civil"].ToString()), Valor = dr["estado_civil"].ToString()
                                                                                                       } } : null;
                    perfil.PaisNacionalidad = new IdValor[] { new IdValor {
                                                                  Id = dr["pais_nacionalidad_id"].ToString(), Valor = dr["pais_nacionalidad_nombre"].ToString()
                                                              } };
                    perfil.TipoDocumento       = dr["tipo_documento"].ToString();
                    perfil.Documento           = dr["documento"].ToString();
                    perfil.ObjetivoLaboral     = dr["objetivo_laboral"].ToString();
                    perfil.InteresesPersonales = dr["intereses_personales"].ToString();
                    perfil.Alumno  = dr["alumno"].ToString();
                    perfil.Carrera = new IdValor[] { new IdValor {
                                                         Id = dr["carrera_id"].ToString(), Valor = dr["carrera_nombre"].ToString()
                                                     } };
                    perfil.PorcentajeMateriasAprobadas = (float)Convert.ToDouble(dr["porcentaje_mat_apr"]);
                    perfil.CantidadMateriasAprobadas   = Convert.ToInt32(dr["cantidad_mat_apr"]);
                    perfil.Promedio    = (float)Convert.ToDouble(dr["promedio"]);
                    perfil.AnioCursada = Convert.ToInt32(dr["anio_cursada"]);
                }
            }
            else
            {
                return(null);
            }
            connection.Close();
            connection.Open();

            SqlCommand comRedesSociales = new SqlCommand("select id, red_social, tipo_red, mostrar_feed from redes_sociales where perfil = @perfil", connection);

            comRedesSociales.Parameters.AddWithValue("@perfil", perfil.Id);
            SqlDataReader drRedesSociales = comRedesSociales.ExecuteReader();

            if (drRedesSociales.HasRows)
            {
                perfil.RedesSociales = new RedesSociales();
                while (drRedesSociales.Read())
                {
                    switch (drRedesSociales["tipo_red"].ToString())
                    {
                    case "FB":
                        perfil.RedesSociales.usuarioFacebook     = drRedesSociales["red_social"].ToString();
                        perfil.RedesSociales.mostrarFeedFacebook = (bool)drRedesSociales["mostrar_feed"];
                        break;

                    case "TW":
                        perfil.RedesSociales.usuarioTwitter     = drRedesSociales["red_social"].ToString();
                        perfil.RedesSociales.mostrarFeedTwitter = (bool)drRedesSociales["mostrar_feed"];
                        break;

                    case "IG":
                        perfil.RedesSociales.usuarioInstagram     = drRedesSociales["red_social"].ToString();
                        perfil.RedesSociales.mostrarFeedInstagram = (bool)drRedesSociales["mostrar_feed"];
                        break;

                    case "LI":
                        perfil.RedesSociales.usuarioLinkedIn     = drRedesSociales["red_social"].ToString();
                        perfil.RedesSociales.mostrarFeedLinkedIn = (bool)drRedesSociales["mostrar_feed"];
                        break;
                    }
                }
            }

            connection.Close();
            connection.Open();

            SqlCommand comExperienciasLaborales = new SqlCommand("select el.id, el.empresa, el.puesto as puesto_id, puesto.nombre as puesto_nombre, el.fecha_desde, el.fecha_hasta, el.actualmente_trabajando, cel.conocimiento as conocimiento_id, c.nombre as conocimiento_nombre, el.comentarios " +
                                                                 "from experiencias_laborales el " +
                                                                 "left join puestos puesto on el.puesto = puesto.id " +
                                                                 "inner join conocimientos_x_experiencia_laboral cel on el.id = cel.experiencia_laboral " +
                                                                 "left join conocimientos c on cel.conocimiento = c.id " +
                                                                 "where perfil = @perfil", connection);

            comExperienciasLaborales.Parameters.AddWithValue("@perfil", perfil.Id);

            SqlDataReader drExperienciasLaborales = comExperienciasLaborales.ExecuteReader();

            if (drExperienciasLaborales.HasRows)
            {
                var experienciasLaborales = new List <ExperienciaLaboral>();
                while (drExperienciasLaborales.Read())
                {
                    var elIndex = experienciasLaborales.FindIndex(x => x.Id == drExperienciasLaborales["id"].ToString());
                    if (elIndex > -1)
                    {
                        //Lo convierto a List
                        List <Conocimiento> conocimientoListAux = new List <Conocimiento>(experienciasLaborales[elIndex].Conocimientos);
                        //Agrego el item
                        conocimientoListAux.Add(new Conocimiento {
                            Id = drExperienciasLaborales["conocimiento_id"].ToString(), Nombre = drExperienciasLaborales["conocimiento_nombre"].ToString()
                        });
                        //Lo vuelvo a Array
                        experienciasLaborales[elIndex].Conocimientos = conocimientoListAux.ToArray();
                    }
                    else
                    {
                        var experienciaLaboral = new ExperienciaLaboral();
                        experienciaLaboral.Id            = drExperienciasLaborales["id"].ToString();
                        experienciaLaboral.Empresa       = drExperienciasLaborales["empresa"].ToString();
                        experienciaLaboral.PuestoLaboral = new Puesto[] { new Puesto {
                                                                              Id = drExperienciasLaborales["puesto_id"].ToString(), Nombre = drExperienciasLaborales["puesto_nombre"].ToString()
                                                                          } };
                        experienciaLaboral.FechaDesdeDT  = Convert.ToDateTime(drExperienciasLaborales["fecha_desde"].ToString());
                        experienciaLaboral.FechaHastaDT  = Convert.ToDateTime(drExperienciasLaborales["fecha_hasta"].ToString());
                        experienciaLaboral.Conocimientos = new Conocimiento[] { new Conocimiento {
                                                                                    Id = drExperienciasLaborales["conocimiento_id"].ToString(), Nombre = drExperienciasLaborales["conocimiento_nombre"].ToString()
                                                                                } };
                        experienciaLaboral.ActualmenteTrabajando = (bool)drExperienciasLaborales["actualmente_trabajando"];
                        experienciaLaboral.Descripcion           = drExperienciasLaborales["comentarios"].ToString();

                        experienciasLaborales.Add(experienciaLaboral);
                    }
                }

                perfil.ExperienciaLaboral = experienciasLaborales.ToArray();
            }

            connection.Close();
            connection.Open();

            SqlCommand comED = new SqlCommand("select id, institucion, titulo, tipo_estudio, estado, fecha_desde, fecha_hasta, actualmente_estudiando, comentarios " +
                                              "from experiencias_educativas " +
                                              "where perfil = @perfil", connection);

            comED.Parameters.AddWithValue("@perfil", perfil.Id);

            SqlDataReader drED = comED.ExecuteReader();

            if (drED.HasRows)
            {
                var experienciasEducativas = new List <ExperienciaEducativa>();
                while (drED.Read())
                {
                    var experienciaEducativa = new ExperienciaEducativa();
                    experienciaEducativa.Id          = drED["id"].ToString();
                    experienciaEducativa.Institucion = drED["institucion"].ToString();
                    experienciaEducativa.Titulo      = drED["titulo"].ToString();
                    experienciaEducativa.TipoEstudio = new IdValor[] { new IdValor {
                                                                           Id = GetTipoEstudio(drED["tipo_estudio"].ToString()), Valor = drED["tipo_estudio"].ToString()
                                                                       } };
                    experienciaEducativa.Estado = new IdValor[] { new IdValor {
                                                                      Id = GetEstado(drED["estado"].ToString()), Valor = drED["estado"].ToString()
                                                                  } };
                    experienciaEducativa.FechaDesdeDT          = Convert.ToDateTime(drED["fecha_desde"].ToString());
                    experienciaEducativa.FechaHastaDT          = Convert.ToDateTime(drED["fecha_hasta"].ToString());
                    experienciaEducativa.ActualmenteEstudiando = Convert.ToBoolean(drED["actualmente_estudiando"]);
                    experienciaEducativa.Comentarios           = drED["comentarios"].ToString();

                    experienciasEducativas.Add(experienciaEducativa);
                }

                perfil.ExperienciaEducativa = experienciasEducativas.ToArray();
            }

            connection.Close();
            connection.Open();

            SqlCommand comIdioma = new SqlCommand("select ixp.id, ixp.idioma as idioma_id, i.nombre_idioma, ixp.nivel_oral, ixp.nivel_escrito, ixp.comentarios " +
                                                  "from idiomas_x_perfil ixp inner join idiomas i on ixp.idioma = i.id " +
                                                  "where perfil = @perfil", connection);

            comIdioma.Parameters.AddWithValue("@perfil", perfil.Id);

            SqlDataReader drIdioma = comIdioma.ExecuteReader();

            if (drIdioma.HasRows)
            {
                var idiomas = new List <Idioma>();
                while (drIdioma.Read())
                {
                    var idioma = new Idioma();
                    idioma.Id           = drIdioma["id"].ToString();
                    idioma.NombreIdioma = new IdValor[] { new IdValor {
                                                              Id = drIdioma["idioma_id"].ToString(), Valor = drIdioma["nombre_idioma"].ToString()
                                                          } };
                    idioma.NivelOral = new IdValor[] { new IdValor {
                                                           Id = GetNivel(drIdioma["nivel_oral"].ToString()), Valor = drIdioma["nivel_oral"].ToString()
                                                       } };
                    idioma.NivelEscrito = new IdValor[] { new IdValor {
                                                              Id = GetNivel(drIdioma["nivel_escrito"].ToString()), Valor = drIdioma["nivel_escrito"].ToString()
                                                          } };
                    idioma.Comentarios = drIdioma["comentarios"].ToString();

                    idiomas.Add(idioma);
                }

                perfil.Idioma = idiomas.ToArray();
            }

            connection.Close();
            connection.Open();

            SqlCommand comCXP = new SqlCommand("select cxp.id, cxp.conocimiento, c.nombre " +
                                               "from conocimientos_x_perfil cxp inner join conocimientos c on cxp.conocimiento = c.id " +
                                               "where perfil = @perfil", connection);

            comCXP.Parameters.AddWithValue("@perfil", perfil.Id);

            SqlDataReader drCXP = comCXP.ExecuteReader();

            if (drCXP.HasRows)
            {
                var conocimientos = new List <IdValor>();
                while (drCXP.Read())
                {
                    var conocimiento = new IdValor();
                    conocimiento.Id    = drCXP["conocimiento"].ToString();
                    conocimiento.Valor = drCXP["nombre"].ToString();

                    conocimientos.Add(conocimiento);
                }

                perfil.OtrosConocimientos = conocimientos.ToArray();
            }

            connection.Close();
            connection.Open();

            SqlCommand comEmail = new SqlCommand("select id, correo from correos_electronicos " +
                                                 "where perfil = @perfil", connection);

            comEmail.Parameters.AddWithValue("@perfil", perfil.Id);

            SqlDataReader drEmail = comEmail.ExecuteReader();

            if (drEmail.HasRows)
            {
                var emails = new List <IdValor>();
                while (drEmail.Read())
                {
                    var email = new IdValor();
                    email.Id    = drEmail["id"].ToString();
                    email.Valor = drEmail["correo"].ToString();

                    emails.Add(email);
                }

                perfil.Emails = emails.ToArray();
            }

            connection.Close();
            connection.Open();

            SqlCommand comTelefono = new SqlCommand("select id, numero_telefono from telefonos " +
                                                    "where perfil = @perfil", connection);

            comTelefono.Parameters.AddWithValue("@perfil", perfil.Id);

            SqlDataReader drTelefono = comTelefono.ExecuteReader();

            if (drTelefono.HasRows)
            {
                var telefonos = new List <IdValor>();
                while (drTelefono.Read())
                {
                    var telefono = new IdValor();
                    telefono.Id    = drTelefono["id"].ToString();
                    telefono.Valor = drTelefono["numero_telefono"].ToString();

                    telefonos.Add(telefono);
                }

                perfil.Telefonos = telefonos.ToArray();
            }

            connection.Close();

            return(perfil);
        }