public static Curricula ObtenerCurricula(int IdCurricula)
        {
            Curricula curricula = BuscarCurricula(new Curricula()
            {
                IdCurricula = IdCurricula
            }).FirstOrDefault();

            return(curricula);
        }
        public static void RegistrarCurriculaEstado(Curricula BaseCurricula)
        {
            using (SqlConnection cn = new SqlConnection(Utilidad.conexionBDInnova()))
            {
                SqlCommand cmd = new SqlCommand("dbo.usp_GP_Curricula_RegistrarEstado", cn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@IdCurricula", SqlDbType.Int).Value       = BaseCurricula.IdCurricula;
                cmd.Parameters.Add("@Estado", SqlDbType.Int).Value            = BaseCurricula.Estado;
                cmd.Parameters.Add("@MotivoRechazo", SqlDbType.VarChar).Value = BaseCurricula.MotivoRechazo;

                cn.Open();
                cmd.ExecuteNonQuery();
                cn.Close();
            }
        }
        public static void RegistrarCurricula(Curricula BaseCurricula, List <DetalleCurricula> detalleCurricula,
                                              List <DetalleCurriculaTema> detalleCurriculaTema, List <DetalleCurriculaProfesor> detalleCurriculaProfesor,
                                              List <DetalleCurriculaCalificacion> detalleCurriculaCalificacion)
        {
            using (SqlConnection cn = new SqlConnection(Utilidad.conexionBDInnova()))
            {
                SqlCommand cmd = new SqlCommand("dbo.usp_GP_Curricula_Registrar", cn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@IdCurricula", SqlDbType.Int).Value                     = BaseCurricula.IdCurricula;
                cmd.Parameters.Add("@IdCurriculaBase", SqlDbType.Int).Value                 = BaseCurricula.IdCurriculaBase;
                cmd.Parameters.Add("@Año", SqlDbType.Int).Value                             = BaseCurricula.Año;
                cmd.Parameters.Add("@Codigo", SqlDbType.VarChar).Value                      = BaseCurricula.Codigo;
                cmd.Parameters.Add("@Descripcion", SqlDbType.VarChar).Value                 = BaseCurricula.Descripcion;
                cmd.Parameters.Add("@Estado", SqlDbType.Int).Value                          = BaseCurricula.Estado;
                cmd.Parameters.Add("@DetalleCurriculaXML", SqlDbType.Xml).Value             = Utilidad.DetalleCurriculatoXML(detalleCurricula);
                cmd.Parameters.Add("@DetalleCurriculaTemaXML", SqlDbType.Xml).Value         = Utilidad.DetalleCurriculaTematoXML(detalleCurriculaTema);
                cmd.Parameters.Add("@DetalleCurriculaProfesorXML", SqlDbType.Xml).Value     = Utilidad.DetalleCurriculaProfesortoXML(detalleCurriculaProfesor);
                cmd.Parameters.Add("@DetalleCurriculaCalificacionXML", SqlDbType.Xml).Value = Utilidad.DetalleCurriculaCalificaciontoXML(detalleCurriculaCalificacion);

                cn.Open();
                BaseCurricula.IdCurricula = int.Parse(cmd.ExecuteScalar().ToString());
                cn.Close();
            }
        }
        public static List <Curricula> BuscarCurricula(Curricula BaseCurricula, int AñoInicio = 0, int AñoFin = 0)
        {
            List <Curricula> lista = new List <Curricula>();

            try
            {
                using (SqlConnection cn = new SqlConnection(Utilidad.conexionBDInnova()))
                {
                    SqlCommand cmd = new SqlCommand("dbo.usp_GP_Curricula_Listar", cn);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add("@IdCurricula", SqlDbType.Int).Value = BaseCurricula.IdCurricula;
                    cmd.Parameters.Add("@Codigo", SqlDbType.VarChar).Value  = BaseCurricula.Codigo;
                    cmd.Parameters.Add("@AñoInicio", SqlDbType.Int).Value   = AñoInicio;
                    cmd.Parameters.Add("@AñoFin", SqlDbType.Int).Value      = AñoFin;
                    cmd.Parameters.Add("@Estado", SqlDbType.Int).Value      = BaseCurricula.Estado;

                    cn.Open();
                    SqlDataReader dr = cmd.ExecuteReader();

                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            Curricula curricula = new Curricula
                            {
                                IdCurricula = dr.IsDBNull(dr.GetOrdinal("IdCurricula")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdCurricula")),
                                Codigo      = dr.IsDBNull(dr.GetOrdinal("Codigo")) ? string.Empty : dr.GetString(dr.GetOrdinal("Codigo")),
                                Año         = dr.IsDBNull(dr.GetOrdinal("Año")) ? 0 : dr.GetInt32(dr.GetOrdinal("Año")),
                                Descripcion = dr.IsDBNull(dr.GetOrdinal("Descripcion")) ? string.Empty : dr.GetString(dr.GetOrdinal("Descripcion")),
                                Estado      = dr.IsDBNull(dr.GetOrdinal("Estado")) ? 0 : dr.GetInt32(dr.GetOrdinal("Estado")),

                                IdCurriculaBase = dr.IsDBNull(dr.GetOrdinal("IdCurriculaBase")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdCurriculaBase")),
                                CurriculaBase   = new CurriculaBase()
                                {
                                    IdCurriculaBase  = dr.IsDBNull(dr.GetOrdinal("IdCurriculaBase")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdCurriculaBase")),
                                    NumeroResolucion = dr.IsDBNull(dr.GetOrdinal("NumeroResolucion")) ? string.Empty : dr.GetString(dr.GetOrdinal("NumeroResolucion"))
                                },

                                IdUsuarioCreacion = dr.IsDBNull(dr.GetOrdinal("IdUsuarioCreacion")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdUsuarioCreacion")),
                                NoUsuarioCreacion = dr.IsDBNull(dr.GetOrdinal("NoUsuarioCreacion")) ? string.Empty : dr.GetString(dr.GetOrdinal("NoUsuarioCreacion")),
                                FechaAprobacion   = dr.IsDBNull(dr.GetOrdinal("FechaAprobacion")) ? DateTime.MinValue : dr.GetDateTime(dr.GetOrdinal("FechaAprobacion")),
                                FechaRechazo      = dr.IsDBNull(dr.GetOrdinal("FechaRechazo")) ? DateTime.MinValue : dr.GetDateTime(dr.GetOrdinal("FechaRechazo")),
                                MotivoRechazo     = dr.IsDBNull(dr.GetOrdinal("MotivoRechazo")) ? string.Empty : dr.GetString(dr.GetOrdinal("MotivoRechazo"))
                            };

                            lista.Add(curricula);
                        }

                        /*Se obtiene registro de DetalleCurricula solo cuando se consulta por idCurricula*/
                        if (dr.NextResult())
                        {
                            List <DetalleCurricula> listaDetalle = new List <DetalleCurricula>();
                            while (dr.Read())
                            {
                                DetalleCurricula detalle = new DetalleCurricula
                                {
                                    IdDetalleCurricula = dr.IsDBNull(dr.GetOrdinal("IdDetalleCurricula")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdDetalleCurricula")),
                                    IdCurricula        = dr.IsDBNull(dr.GetOrdinal("IdCurricula")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdCurricula")),
                                    Item    = dr.IsDBNull(dr.GetOrdinal("Item")) ? string.Empty : dr.GetString(dr.GetOrdinal("Item")),
                                    IdCurso = dr.IsDBNull(dr.GetOrdinal("IdCurso")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdCurso")),
                                    Curso   = new Curso()
                                    {
                                        IdCurso = dr.IsDBNull(dr.GetOrdinal("IdCurso")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdCurso")),
                                        Nombre  = dr.IsDBNull(dr.GetOrdinal("noCurso")) ? string.Empty : dr.GetString(dr.GetOrdinal("noCurso")),

                                        Grado = new Grado()
                                        {
                                            IdGrado = dr.IsDBNull(dr.GetOrdinal("IdGrado")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdGrado")),
                                            Nombre  = dr.IsDBNull(dr.GetOrdinal("noGrado")) ? string.Empty : dr.GetString(dr.GetOrdinal("noGrado")),

                                            Nivel = new Nivel()
                                            {
                                                IdNivel = dr.IsDBNull(dr.GetOrdinal("IdNivel")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdNivel")),
                                                Nombre  = dr.IsDBNull(dr.GetOrdinal("noNivel")) ? string.Empty : dr.GetString(dr.GetOrdinal("noNivel"))
                                            }
                                        },

                                        AreaCurricular = new AreaCurricular()
                                        {
                                            IdAreaCurricular = dr.IsDBNull(dr.GetOrdinal("IdAreaCurricular")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdAreaCurricular")),
                                            Nombre           = dr.IsDBNull(dr.GetOrdinal("noAreaCurricular")) ? string.Empty : dr.GetString(dr.GetOrdinal("noAreaCurricular"))
                                        }
                                    },
                                    HrsAsignadas  = dr.IsDBNull(dr.GetOrdinal("HrsAsignadas")) ? 0 : dr.GetDecimal(dr.GetOrdinal("HrsAsignadas")),
                                    IdCoordinador = dr.IsDBNull(dr.GetOrdinal("IdCoordinador")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdCoordinador")),
                                    Empleado      = new Empleado()
                                    {
                                        idEmpleado = dr.IsDBNull(dr.GetOrdinal("IdCoordinador")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdCoordinador")),
                                        Persona    = new Persona()
                                        {
                                            nombre = dr.IsDBNull(dr.GetOrdinal("noCoordinador")) ? string.Empty : dr.GetString(dr.GetOrdinal("noCoordinador"))
                                        }
                                    }
                                };

                                listaDetalle.Add(detalle);
                            }

                            foreach (Curricula curricula in lista.Where(x => x.IdCurricula == listaDetalle.FirstOrDefault().IdCurricula))
                            {
                                curricula.DetalleCurricula = listaDetalle;
                            }
                        }


                        List <DetalleCurriculaTema>         listaDetalleTema         = new List <DetalleCurriculaTema>();
                        List <DetalleCurriculaProfesor>     listaDetalleProfesor     = new List <DetalleCurriculaProfesor>();
                        List <DetalleCurriculaCalificacion> listaDetalleCalificacion = new List <DetalleCurriculaCalificacion>();

                        /*Se obtiene registro de DetalleCurriculaTema solo cuando se consulta por idCurricula*/
                        if (dr.NextResult())
                        {
                            while (dr.Read())
                            {
                                DetalleCurriculaTema detalleTema = new DetalleCurriculaTema
                                {
                                    IdDetalleCurriculaTema = dr.IsDBNull(dr.GetOrdinal("IdDetalleCurriculaTema")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdDetalleCurriculaTema")),
                                    IdDetalleCurricula     = dr.IsDBNull(dr.GetOrdinal("IdDetalleCurricula")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdDetalleCurricula")),
                                    IdCursoTema            = dr.IsDBNull(dr.GetOrdinal("IdCursoTema")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdCursoTema")),
                                    NoCursoTema            = dr.IsDBNull(dr.GetOrdinal("Temario")) ? string.Empty : dr.GetString(dr.GetOrdinal("Temario")),
                                    IdCompetencia          = dr.IsDBNull(dr.GetOrdinal("IdCompetencia")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdCompetencia")),
                                    NoCompetencia          = dr.IsDBNull(dr.GetOrdinal("noCompetencia")) ? string.Empty : dr.GetString(dr.GetOrdinal("noCompetencia")),

                                    IdUnidad = dr.IsDBNull(dr.GetOrdinal("IdUnidad")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdUnidad")),
                                    Unidad   = new Unidad()
                                    {
                                        IdUnidad = dr.IsDBNull(dr.GetOrdinal("IdUnidad")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdUnidad")),
                                        Nombre   = dr.IsDBNull(dr.GetOrdinal("noUnidad")) ? string.Empty : dr.GetString(dr.GetOrdinal("noUnidad"))
                                    }
                                };

                                listaDetalleTema.Add(detalleTema);
                            }
                        }

                        /*Se obtiene registro de DetalleCurriculaProfesor solo cuando se consulta por idCurricula*/
                        if (dr.NextResult())
                        {
                            while (dr.Read())
                            {
                                DetalleCurriculaProfesor detalleProfesor = new DetalleCurriculaProfesor
                                {
                                    IdDetalleCurriculaProfesor = dr.IsDBNull(dr.GetOrdinal("IdDetalleCurriculaProfesor")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdDetalleCurriculaProfesor")),
                                    IdDetalleCurricula         = dr.IsDBNull(dr.GetOrdinal("IdDetalleCurricula")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdDetalleCurricula")),
                                    IdProfesor = dr.IsDBNull(dr.GetOrdinal("IdProfesor")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdProfesor")),
                                    Empleado   = new Empleado()
                                    {
                                        idEmpleado = dr.IsDBNull(dr.GetOrdinal("IdProfesor")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdProfesor")),
                                        Persona    = new Persona()
                                        {
                                            nombre = dr.IsDBNull(dr.GetOrdinal("noProfesor")) ? string.Empty : dr.GetString(dr.GetOrdinal("noProfesor"))
                                        }
                                    }
                                };

                                listaDetalleProfesor.Add(detalleProfesor);
                            }
                        }

                        /*Se obtiene registro de DetalleCurriculaCalificacion solo cuando se consulta por idCurricula*/
                        if (dr.NextResult())
                        {
                            while (dr.Read())
                            {
                                DetalleCurriculaCalificacion detalleCalificacion = new DetalleCurriculaCalificacion
                                {
                                    IdDetalleCurriculaCalificacion = dr.IsDBNull(dr.GetOrdinal("IdDetalleCurriculaCalificacion")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdDetalleCurriculaCalificacion")),
                                    IdDetalleCurricula             = dr.IsDBNull(dr.GetOrdinal("IdDetalleCurricula")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdDetalleCurricula")),
                                    IdTipoCalificacion             = dr.IsDBNull(dr.GetOrdinal("IdTipoCalificacion")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdTipoCalificacion")),
                                    TipoCalificación = new TipoCalificación()
                                    {
                                        IdTipoCalificación  = dr.IsDBNull(dr.GetOrdinal("IdTipoCalificacion")) ? 0 : dr.GetInt32(dr.GetOrdinal("IdTipoCalificacion")),
                                        NomTipoCalificación = dr.IsDBNull(dr.GetOrdinal("NomTipoCalificación")) ? string.Empty : dr.GetString(dr.GetOrdinal("NomTipoCalificación"))
                                    },
                                    ValorCalificacion = dr.IsDBNull(dr.GetOrdinal("ValorCalificacion")) ? 0 : dr.GetDecimal(dr.GetOrdinal("ValorCalificacion")),
                                };

                                listaDetalleCalificacion.Add(detalleCalificacion);
                            }
                        }

                        foreach (DetalleCurricula detalle in lista.FirstOrDefault().DetalleCurricula.ToList())
                        {
                            detalle.DetalleCurriculaTema         = listaDetalleTema.Where(x => x.IdDetalleCurricula == detalle.IdDetalleCurricula).ToList();
                            detalle.DetalleCurriculaProfesor     = listaDetalleProfesor.Where(x => x.IdDetalleCurricula == detalle.IdDetalleCurricula).ToList();
                            detalle.DetalleCurriculaCalificacion = listaDetalleCalificacion.Where(x => x.IdDetalleCurricula == detalle.IdDetalleCurricula).ToList();
                        }
                    }

                    cn.Close();
                }
            }
            catch { }

            return(lista);
        }