/**
         * Anula la solicitud especificada
         **/
        public bool AnularSolicitud(Solicitud pSolicitud)
        {
            try
            {
                _objConexionBase = new Inclutec_BDEntities();

                SIFSolicitud _sifSolicitud = (from _sifSolicitudes in _objConexionBase.SIFSolicituds
                                              where _sifSolicitudes.id_Solicitud == pSolicitud.Id_Solicitud
                                              select _sifSolicitudes).First();
                _sifSolicitud.txt_estado = _sifSolicitud.txt_estado;

                _objConexionBase.SaveChanges();
                _objConexionBase.Connection.Close();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        /**
         * Agrega una regla al negocio.
         **/
        public bool AgregarRegla(Regla pRegla)
        {
            try
            {
                SIFRegla _sifRegla = new SIFRegla();
                _sifRegla.num_prioridad = pRegla.Posicion;
                _sifRegla.txt_estado = pRegla.Estado;
                _sifRegla.txt_nombre = pRegla.Nombre;
                _sifRegla.txt_script = pRegla.StoredProcedure;

                _objConexionBase = new Inclutec_BDEntities();
                _objConexionBase.AddToSIFReglas(_sifRegla);
                _objConexionBase.SaveChanges();
                _objConexionBase.Connection.Close();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        /**
         * Crea una excepcion.
         **/
        public bool CrearExcepcion(int pPeriodo, int pCurso,
            int pGrupo, string pEstudiante)
        {
            try
            {
                SITExcepcion _sitExcepcion = new SITExcepcion();
                _sitExcepcion.FK_Curso_idCurso = pCurso;
                _sitExcepcion.FK_Estudiante_carnet = pEstudiante;
                _sitExcepcion.FK_Grupo_idGrupo = pGrupo;
                _sitExcepcion.FK_Periodo_idPeriodo = pPeriodo;

                _objConexionBase = new Inclutec_BDEntities();
                _objConexionBase.AddToSITExcepcions(_sitExcepcion);
                _objConexionBase.SaveChanges();
                _objConexionBase.Connection.Close();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        /**
         * Retorna true si el Estudiante existe en la base de la aplicacion
         * Retorna false en caso contrario.
         **/
        public bool EstudianteExiste(string pCarnet)
        {
            try
            {
                _objConexionBase = new Inclutec_BDEntities();

                int _iExiste = (from _sifEstudiantes in _objConexionBase.SIFEstudiantes
                                where _sifEstudiantes.id_Carnet == pCarnet
                                select _sifEstudiantes).Count();

                _objConexionBase.Connection.Close();
                switch (_iExiste)
                {
                    case 0:
                        return false;
                    default:
                        return true;
                }
            }
            catch (Exception)
            {
                return false;
            }
        }
        /**
         * Define un periodo para la aceptacion de solicitudes.
         **/
        public bool DefinirPeriodoSolicitud(Periodo pPeriodo)
        {
            try
            {
                SIFPeriodo _sifPeriodo = new SIFPeriodo();
                _sifPeriodo.fec_fin = pPeriodo.Fec_Fin;
                _sifPeriodo.fec_inicio = pPeriodo.Fec_Inicio;
                _sifPeriodo.num_anno = pPeriodo.Num_Anno;
                _sifPeriodo.num_periodo = pPeriodo.Num_Periodo;
                _sifPeriodo.txt_estado = pPeriodo.Txt_Estado;
                _sifPeriodo.txt_modalidad = pPeriodo.Txt_Modalidad;

                _objConexionBase = new Inclutec_BDEntities();
                _objConexionBase.AddToSIFPeriodoes(_sifPeriodo);
                _objConexionBase.SaveChanges();
                _objConexionBase.Connection.Close();

                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        /**
         * Retorna los grupos especificados en una solicitud de inclusion
         **/
        public LinkedList<Grupo_Por_Solicitud> ObtenerGruposInclusion(Solicitud pSolicitud)
        {
            try
            {
                _objConexionBase = new Inclutec_BDEntities();

                var _liGruposSolicitud = from _sifGruposSolicitud in _objConexionBase.SIFGrupo_Por_Solicitud
                                         where _sifGruposSolicitud.FK_Solicitud_idSolicitud == pSolicitud.Id_Solicitud
                                         select _sifGruposSolicitud;

                LinkedList<Grupo_Por_Solicitud> _liGrupos = new LinkedList<Grupo_Por_Solicitud>();

                foreach(SIFGrupo_Por_Solicitud _sifGrupoSolicitud in _liGruposSolicitud){

                    //Obtiene el grupo por solicitud
                    Grupo_Por_Solicitud _gpsGrupo = new Grupo_Por_Solicitud();
                    _gpsGrupo.Id_Grupo_Por_Solicitud = _sifGrupoSolicitud.id_Grupo_Por_Solicitud;
                    _gpsGrupo.Num_Prioridad = _sifGrupoSolicitud.num_prioridad;

                    //Obtiene el grupo
                    SIFGrupo _sifGrupo = (from _sifGrupos in _objConexionBase.SIFGrupoes
                                        where _sifGrupos.id_Grupo == _sifGrupoSolicitud.FK_Grupo_idGrupo
                                        select _sifGrupos).First();

                    Grupo _gGrupo = new Grupo();
                    _gGrupo.Id_Curso = _sifGrupo.FK_Curso_idCurso;
                    _gGrupo.Id_Grupo = _sifGrupo.id_Grupo;
                    _gGrupo.Num_Cupos = _sifGrupo.num_cupos;
                    _gGrupo.Num_Cupos_Extra = _sifGrupo.num_cupos_extra;
                    _gGrupo.Num_Grupo = _sifGrupo.num_grupo;

                    //Define los horarios para los grupos
                    var _liHorarios = from _sitHorarios in _objConexionBase.SITHorarios
                                      where _sitHorarios.FK_Grupo_idGrupo == _gGrupo.Id_Grupo
                                      select _sitHorarios;

                    _gGrupo.Li_Horarios = new LinkedList<Horario>();

                    foreach (SITHorario _sitHorario in _liHorarios)
                    {
                        Horario _hHorario = new Horario();
                        _hHorario.Id_Horario = _sitHorario.id_Horario;
                        _hHorario.Txt_Dia = _sitHorario.txt_dia;
                        _hHorario.Txt_Hora_Final = _sitHorario.tim_hora_fin.ToString();
                        _hHorario.Txt_Hora_Inicio = _sitHorario.tim_hora_inicio.ToString();
                        _gGrupo.Li_Horarios.AddLast(_hHorario);
                    }

                    //Define el grupo de grupo por solicitud
                    _gpsGrupo.Id_Grupo = _gGrupo;

                    //Agrega grupo por solicitud a la lista
                    _liGrupos.AddLast(_gpsGrupo);
                }

                _objConexionBase.Connection.Close();
                return _liGrupos;
            }
            catch (Exception)
            {
                return null;
            }
        }
        /**
         * Retorna los datos del Estudiante especificado mediante el Carnet
         **/
        public Estudiante ObtenerDatosEstudiante(string pCarnet, bool pExisteBase)
        {
            try
            {
                Estudiante _estEstudiante = new Estudiante();

                if (pExisteBase)
                {
                    _objConexionBase = new Inclutec_BDEntities();

                    SIFEstudiante _sifEstudiante = (from _sifEstudiantes in _objConexionBase.SIFEstudiantes
                                                    where _sifEstudiantes.id_Carnet == pCarnet
                                                    select _sifEstudiantes).First();

                    _objConexionBase.Connection.Close();

                    _estEstudiante.Id_Carnet = _sifEstudiante.id_Carnet;
                    _estEstudiante.Nom_Nombre = _sifEstudiante.nom_nombre;
                    _estEstudiante.Num_Celular = _sifEstudiante.num_celular;
                    _estEstudiante.Num_Telefono = _sifEstudiante.num_telefono;
                    _estEstudiante.Txt_Apellido1 = _sifEstudiante.txt_apellido_1;
                    _estEstudiante.Txt_Apellido2 = _sifEstudiante.txt_apellido_2;
                    _estEstudiante.Dir_Email = _sifEstudiante.dir_email;
                }
                else
                {
                    _objConexionWS = new wsDar.AdmisionyRegistro();

                    DataSet _dsDatosEstudiante = _objConexionWS.IESCDATOSESTUDIANTE_Buscar(pCarnet);
                    DataRow _drEstudiante = _dsDatosEstudiante.Tables[0].Rows[0];

                    String[] _strNombreEstudiante = _drEstudiante["NOM_ESTUDIANTE"].ToString().Split(' ');

                    _estEstudiante.Id_Carnet = _drEstudiante["IDE_ESTUDIANTE"].ToString();
                    _estEstudiante.Nom_Nombre = _strNombreEstudiante[2];
                    if (_strNombreEstudiante.Length == 4)
                    {
                        _estEstudiante.Nom_Nombre += " " + _strNombreEstudiante[3];
                    }
                    _estEstudiante.Txt_Apellido1 = _strNombreEstudiante[0];
                    _estEstudiante.Txt_Apellido2 = _strNombreEstudiante[1];
                    _estEstudiante.Num_Telefono = _drEstudiante["NUM_TELEFONO"].ToString();
                    _estEstudiante.Num_Celular = _drEstudiante["NUM_CELULAR"].ToString();
                    _estEstudiante.Dir_Email = _drEstudiante["DIR_CORREO"].ToString();

                }
                return _estEstudiante;
            }
            catch (Exception)
            {
                return null;
            }
        }
 /**
  * Retorna los cursos matriculados del _sifeEstudiante
  * Temporalmente retorna todos los cursos de la carrera
  **/
 public LinkedList<Curso> ObtenerCursosEstudiante(string pCarnet, string pModalidad)
 {
     try
     {
         _objConexionBase = new Inclutec_BDEntities();
         var _objCursosInclusion = from _sifCursos in _objConexionBase.SIFCursoes
                                   select _sifCursos;
         LinkedList<Curso> _sifCursoLista = new LinkedList<Curso>();
         foreach (SIFCurso _sifCurso in _objCursosInclusion)
         {
             Curso _curso = new Curso();
             _curso.Id_Curso = _sifCurso.id_Curso;
             _curso.Cod_Curso = _sifCurso.cod_Curso;
             _curso.Txt_Curso = _sifCurso.nom_Curso;
             _sifCursoLista.AddLast(_curso);
         }
         _objConexionBase.Connection.Close();
         return _sifCursoLista;
     }
     catch (Exception)
     {
         return null;
     }
 }
        /**
         * Modifica el orden de las reglas establecido
         * en el archivo OrdenReglas.xml.
         **/
        public bool ModificarOrdenReglas(LinkedList<Regla> pReglas)
        {
            try
            {
                _objConexionBase = new Inclutec_BDEntities();
                var _liReglas = from _sifReglas in _objConexionBase.SIFReglas
                                select _sifReglas;

                foreach(SIFRegla _sifRegla in _liReglas)
                {
                    foreach (Regla _regla in pReglas)
                    {
                        if (_sifRegla.txt_nombre.Equals(_regla.Nombre))
                        {
                            _sifRegla.num_prioridad = _regla.Posicion;
                            break;
                        }
                    }
                }

                _objConexionBase.SaveChanges();
                _objConexionBase.Connection.Close();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        /**
         * Obtiene la solicitud especificada por el id
         **/
        public Solicitud ObtenerSolicitudEspecificada(int pSolicitud)
        {
            try
            {
                _objConexionBase = new Inclutec_BDEntities();
                SIFSolicitud _sifSolicitud = (from _sifSolicitudes in _objConexionBase.SIFSolicituds
                                              where _sifSolicitudes.id_Solicitud == pSolicitud
                                              select _sifSolicitudes).First();
                _objConexionBase.Connection.Close();

                Solicitud _solicitud = new Solicitud();
                _solicitud.Fec_Creacion = _sifSolicitud.fec_creacion;
                _solicitud.Id_GrupoAceptado = _sifSolicitud.grupo_aceptado;
                _solicitud.Id_Solicitud = _sifSolicitud.id_Solicitud;
                _solicitud.Txt_Comentario = _sifSolicitud.txt_comentario;
                _solicitud.txt_Curso = _sifSolicitud.txt_curso;
                _solicitud.Txt_Estado = _sifSolicitud.txt_estado;
                _solicitud.Txt_Motivo = _sifSolicitud.txt_motivo;

                return _solicitud;
            }
            catch(Exception)
            {
                return null;
            }
        }
        /**
         * Retorna el plan asociado al estudiante
         **/
        public PlanEstudios ObtenerPlanEstudios(string pCarnet, bool pExisteBase)
        {
            try
            {
                PlanEstudios _planEstudios = new PlanEstudios();

                if (pExisteBase)
                {
                    _objConexionBase = new Inclutec_BDEntities();

                    SIFPlanEstudio _sifPlanEstudios = (from _sifEstudiantes in _objConexionBase.SIFEstudiantes
                                                       where _sifEstudiantes.id_Carnet == pCarnet
                                                       select _sifEstudiantes.SIFPlanEstudio).First();

                    _objConexionBase.Connection.Close();
                    _planEstudios.Id_Plan_Estudios = _sifPlanEstudios.id_PlanEstudios;
                    _planEstudios.Nom_Carrera = _sifPlanEstudios.nom_carrera;
                }
                else
                {
                    DataSet _dsDatosPlanEstudiante = _objConexionWS.DATOS_ESTUDIANTE(pCarnet);
                    DataRow _drPlanEstudiante = _dsDatosPlanEstudiante.Tables[0].Rows[0];

                    _planEstudios.Id_Plan_Estudios = Int32.Parse(_drPlanEstudiante["IDE_PLAN"].ToString());
                    _planEstudios.Nom_Carrera = _drPlanEstudiante["DSC_PLAN"].ToString();
                }

                return _planEstudios;
            }
            catch (Exception)
            {
                return null;
            }
        }
        /**
         * Retorna el ultimo periodo
         **/
        public Periodo UltimoPeriodo()
        {
            try
            {
                _objConexionBase = new Inclutec_BDEntities();
                SIFPeriodo _sifPeriodo = (from _sifPeriodos in _objConexionBase.SIFPeriodoes
                                          where _sifPeriodos.txt_estado == "En Curso"
                                          select _sifPeriodos).First();
                _objConexionBase.Connection.Close();

                Periodo _objPeriodo = new Periodo();
                _objPeriodo.Id_Periodo = _sifPeriodo.id_Periodo;
                _objPeriodo.Fec_Fin = _sifPeriodo.fec_fin;
                _objPeriodo.Fec_Inicio = _sifPeriodo.fec_inicio;
                _objPeriodo.Num_Anno = _sifPeriodo.num_anno;
                _objPeriodo.Num_Periodo = (int) _sifPeriodo.num_periodo;
                _objPeriodo.Txt_Estado = _sifPeriodo.txt_estado;
                _objPeriodo.Txt_Modalidad = _sifPeriodo.txt_modalidad;

                return _objPeriodo;
            }
            catch (Exception)
            {
                return null;
            }
        }
        /**
         * Retorna la lista de excepciones del periodo
         **/
        public LinkedList<Excepcion> ObtenerListaExcepciones(int pPeriodo)
        {
            try
            {
                _objConexionBase = new Inclutec_BDEntities();
                var _sitExcepciones = from _sifExcepciones in _objConexionBase.SITExcepcions
                                        where _sifExcepciones.FK_Periodo_idPeriodo == pPeriodo
                                        select _sifExcepciones;
                _objConexionBase.Connection.Close();
                LinkedList<Excepcion> _liExcepciones = new LinkedList<Excepcion>();
                foreach (SITExcepcion _sitExcepcion in _sitExcepciones)
                {
                    Excepcion _excepcion = new Excepcion();
                    _excepcion.Id_Curso = _sitExcepcion.FK_Curso_idCurso;
                    _excepcion.Id_Estudiante = _sitExcepcion.FK_Estudiante_carnet;
                    _excepcion.Id_Excepcion = _sitExcepcion.id_Excepcion;
                    _excepcion.Id_Grupo = _sitExcepcion.FK_Grupo_idGrupo;
                    _excepcion.Id_Periodo = _sitExcepcion.FK_Periodo_idPeriodo;

                    _liExcepciones.AddLast(_excepcion);
                }

                return _liExcepciones;
            }
            catch (Exception)
            {
                return null;
            }
        }
 /**
  * Retorna la informacion de todas las reglas.
  **/
 public LinkedList<Regla> ObtenerInformacionReglas()
 {
     try
     {
         _objConexionBase = new Inclutec_BDEntities();
         var _Reglas = from _sifReglas in _objConexionBase.SIFReglas
                       select _sifReglas;
         LinkedList<Regla> _liReglas = new LinkedList<Regla>();
         foreach (SIFRegla _sifRegla in _Reglas)
         {
             Regla _regla = new Regla();
             _regla.Nombre = _sifRegla.txt_nombre;
             _regla.Estado = _sifRegla.txt_estado;
             _regla.Posicion = _sifRegla.num_prioridad;
             _regla.StoredProcedure = _sifRegla.txt_script;
             _liReglas.AddLast(_regla);
         }
         return _liReglas;
     }
     catch (Exception)
     {
         return null;
     }
 }
 /**
  * Modifica el procedimiento de una regla del negocio.
  **/
 public bool ModificarProcedimientoRegla(Regla pNombreProcedimiento, string pProcedimiento)
 {
     try
     {
         _objConexionBase = new Inclutec_BDEntities();
         SIFRegla _sifRegla = (from _sifReglas in _objConexionBase.SIFReglas
                               where _sifReglas.txt_nombre == pNombreProcedimiento.Nombre
                               select _sifReglas).First();
         _sifRegla.txt_script = pProcedimiento;
         _objConexionBase.SaveChanges();
         _objConexionBase.Connection.Close();
         return true;
     }
     catch (Exception)
     {
         return false;
     }
 }
        /**
         * Retorna la lista con los grupos a los que se le puede hacer inclusion
         **/
        public LinkedList<Grupo> ObtenerGruposParaInclusion(int pCurso)
        {
            try
            {
                _objConexionBase = new Inclutec_BDEntities();
                var _Grupos = from _sifGrupos in _objConexionBase.SIFGrupoes
                              where _sifGrupos.FK_Curso_idCurso == pCurso
                              select _sifGrupos;

                LinkedList<Grupo> _sifGrupoLista = new LinkedList<Grupo>();
                foreach (SIFGrupo _sifGrupo in _Grupos)
                {
                    Grupo _grupo = new Grupo();
                    _grupo.Id_Grupo = _sifGrupo.id_Grupo;
                    _grupo.Num_Cupos = _sifGrupo.num_cupos;
                    _grupo.Num_Cupos_Extra = _sifGrupo.num_cupos_extra;
                    _grupo.Num_Grupo = _sifGrupo.num_grupo;
                    _grupo.Li_Horarios = new LinkedList<Horario>();

                    //Agrega todos los horarios de ese grupo
                    var _liHorario = from _sitHorarios in _objConexionBase.SITHorarios
                                     where _sitHorarios.FK_Grupo_idGrupo == _grupo.Id_Grupo
                                     select _sitHorarios;

                    foreach (SITHorario _sitHorario in _liHorario)
                    {
                        Horario _objHorario = new Horario();
                        _objHorario.Id_Horario = _sitHorario.id_Horario;
                        _objHorario.Txt_Dia = _sitHorario.txt_dia;
                        _objHorario.Txt_Hora_Final = _sitHorario.tim_hora_fin.ToString();
                        _objHorario.Txt_Hora_Inicio = _sitHorario.tim_hora_inicio.ToString();
                        _grupo.Li_Horarios.AddLast(_objHorario);
                    }
                    _sifGrupoLista.AddLast(_grupo);
                }
                _objConexionBase.Connection.Close();
                return _sifGrupoLista;
            }
            catch (Exception)
            {
                return null;
            }
        }
 /**
  * Modifica el estado del periodo.
  **/
 public bool ModificarEstadoPeriodo(int pPeriodo, string pEstado)
 {
     try
     {
         _objConexionBase = new Inclutec_BDEntities();
         SIFPeriodo _sifPeriodo = (from _sifPeriodos in _objConexionBase.SIFPeriodoes
                                   where _sifPeriodos.id_Periodo == pPeriodo
                                   select _sifPeriodos).First();
         _sifPeriodo.txt_estado = pEstado;
         _objConexionBase.SaveChanges();
         return true;
     }
     catch (Exception)
     { return false; }
 }
        /// <summary>
        /// Guarda los grupos de una solicitud
        /// </summary>
        /// <param name="pSolicitud"></param>
        /// <param name="pGrupos">Debe ir ordenada en cuanto a prioridad, 
        /// entre mayor la prioridad, mas antes tiene que ir el grupo</param>
        /// <returns></returns>
        public bool GuardarGruposSolicitud(Solicitud pSolicitud, LinkedList<Grupo> pGrupos)
        {
            try
            {
                int _iPrioridad = 1;
                _objConexionBase = new Inclutec_BDEntities();
                foreach(Grupo _gGrupo in pGrupos)
                {
                    SIFGrupo_Por_Solicitud _sifGrupo = new SIFGrupo_Por_Solicitud();
                    _sifGrupo.num_prioridad = _iPrioridad;
                    _sifGrupo.FK_Grupo_idGrupo = _gGrupo.Id_Grupo;
                    _sifGrupo.FK_Solicitud_idSolicitud = pSolicitud.Id_Solicitud;
                    _objConexionBase.AddToSIFGrupo_Por_Solicitud(_sifGrupo);
                    _iPrioridad++;
                }

                _objConexionBase.SaveChanges();
                _objConexionBase.Connection.Close();
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }
        /**
         * Retorna el nombre del profesor asignado al curso.
         **/
        public string ObtenerProfesor(int pGrupo)
        {
            try
            {
                _objConexionBase = new Inclutec_BDEntities();

                SIFProfesor _sifProfesor = (from _sifGrupos in _objConexionBase.SIFGrupoes
                                            where _sifGrupos.id_Grupo == pGrupo
                                            select _sifGrupos).First().SIFProfesor;

                return _sifProfesor.nom_profesor;
            }
            catch (Exception)
            {
                return null;
            }
        }
        /**
         * Guarda la solicitud creada por el _sifeEstudiante
         **/
        public Solicitud GuardarSolicitud(string pEstudiante, int pPeriodo, 
            Solicitud pSolicitud)
        {
            try
            {
                SIFSolicitud _sifSolicitud = new SIFSolicitud();
                _sifSolicitud.txt_comentario = pSolicitud.Txt_Comentario;
                _sifSolicitud.txt_curso = pSolicitud.txt_Curso;
                _sifSolicitud.txt_estado = pSolicitud.Txt_Estado;
                _sifSolicitud.txt_motivo = pSolicitud.Txt_Motivo;
                _sifSolicitud.grupo_aceptado = 0;
                _sifSolicitud.fec_creacion = DateTime.Now;
                _sifSolicitud.FK_Estudiante_carnet = pEstudiante;
                _sifSolicitud.FK_Periodo_idPeriodo = pPeriodo;

                _objConexionBase = new Inclutec_BDEntities();
                _objConexionBase.AddToSIFSolicituds(_sifSolicitud);
                _objConexionBase.SaveChanges();
                _objConexionBase.Connection.Close();
                pSolicitud.Id_Solicitud = _sifSolicitud.id_Solicitud;
                return pSolicitud;
            }catch (Exception)
            {
                return null;
            }
        }
        /**
         * Retorna las solicitudes reprobadas hechas por el _sifeEstudiante
         **/
        public LinkedList<Solicitud> ObtenerSolicitudesReprobadas(string pCarnet, int pPeriodo)
        {
            try
            {
                _objConexionBase = new Inclutec_BDEntities();

                var _dataSolicitudes = from _sifSolicitudes in _objConexionBase.SIFSolicituds
                                       where _sifSolicitudes.FK_Estudiante_carnet == pCarnet
                                       && _sifSolicitudes.FK_Periodo_idPeriodo == pPeriodo
                                       && _sifSolicitudes.txt_estado == "REPROBADA"
                                       select _sifSolicitudes;

                LinkedList<Solicitud> _liSolicitudes = new LinkedList<Solicitud>();

                foreach (SIFSolicitud _sifSolicitud in _dataSolicitudes)
                {
                    Solicitud _solicitud = new Solicitud();
                    _solicitud.Id_Solicitud = _sifSolicitud.id_Solicitud;
                    _solicitud.Fec_Creacion = _sifSolicitud.fec_creacion;
                    _solicitud.Txt_Comentario = _sifSolicitud.txt_comentario;
                    _solicitud.Txt_Estado = _sifSolicitud.txt_estado;
                    _solicitud.Txt_Motivo = _sifSolicitud.txt_motivo;
                    _solicitud.txt_Curso = _sifSolicitud.txt_curso;
                    _liSolicitudes.AddLast(_solicitud);
                }

                _objConexionBase.Connection.Close();
                return _liSolicitudes;
            }
            catch (Exception)
            {
                return null;
            }
        }
        /// <summary>
        /// Modifica los grupos especificados en una solicitud
        /// </summary>
        /// <param name="pSolicitud"></param>
        /// <param name="pEliminados">Contiene los ids de los grupos por solicitud eliminados</param>
        /// <returns></returns>
        public bool ModificiarSolicitud(Solicitud pSolicitud, LinkedList<int> pEliminados)
        {
            _objConexionBase = new Inclutec_BDEntities();

            //Obtiene los grupos por solicitud de la solicitud
            var _sifGrupos = from _sifGPS in _objConexionBase.SIFGrupo_Por_Solicitud
                             where _sifGPS.FK_Solicitud_idSolicitud == pSolicitud.Id_Solicitud
                             select _sifGPS;

            //Asigna las nuevas prioridades y elimina los grupos marcados a eliminar
            foreach (SIFGrupo_Por_Solicitud _sifGPS in _sifGrupos)
            {
                if (pEliminados.Contains(_sifGPS.id_Grupo_Por_Solicitud))
                {
                    _objConexionBase.DeleteObject(_sifGPS);
                }
                else
                {
                    foreach (Grupo_Por_Solicitud _gpsGrupo in pSolicitud.Li_Grupos)
                    {
                        if (_sifGPS.id_Grupo_Por_Solicitud == _gpsGrupo.Id_Grupo_Por_Solicitud)
                        {
                            _sifGPS.num_prioridad = _gpsGrupo.Num_Prioridad;
                            break;
                        }
                    }
                }
            }

            _objConexionBase.SaveChanges();
            _objConexionBase.Connection.Close();
            return true;
        }
        /**
         * Guarda los datos del Estudiante en la base de datos
         **/
        public bool GuardarDatosEstudiantes(Estudiante pEstudiante, int pPlanEstudios)
        {
            IMetodosEstudiante _metEstudiante = new MetodosEstudiante();
            _objConexionBase = new Inclutec_BDEntities();
            try
            {
                if (_metEstudiante.EstudianteExiste(pEstudiante.Id_Carnet))
                {
                    SIFEstudiante _sifEstudiante = (from _sifEstudiantes in _objConexionBase.SIFEstudiantes
                                                   where _sifEstudiantes.id_Carnet == pEstudiante.Id_Carnet
                                                   select _sifEstudiantes).First();
                    _sifEstudiante.dir_email = pEstudiante.Dir_Email;
                    _sifEstudiante.num_celular = pEstudiante.Num_Celular;
                    _sifEstudiante.num_telefono = pEstudiante.Num_Telefono;
                }
                else
                {
                    SIFEstudiante _sifeEstudiante = new SIFEstudiante();
                    _sifeEstudiante.id_Carnet = pEstudiante.Id_Carnet;
                    _sifeEstudiante.nom_nombre = pEstudiante.Nom_Nombre;
                    _sifeEstudiante.txt_apellido_1 = pEstudiante.Txt_Apellido1;
                    _sifeEstudiante.txt_apellido_2 = pEstudiante.Txt_Apellido2;
                    _sifeEstudiante.num_telefono = pEstudiante.Num_Telefono;
                    _sifeEstudiante.num_celular = pEstudiante.Num_Celular;
                    _sifeEstudiante.dir_email = pEstudiante.Dir_Email;
                    _sifeEstudiante.FK_PlanEstudios_idPlanEstudios = pPlanEstudios;

                    _objConexionBase.AddToSIFEstudiantes(_sifeEstudiante);
                }

                _objConexionBase.SaveChanges();
                _objConexionBase.Connection.Close();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
 /**
  * Elimina una regla del negocio.
  **/
 public bool DesactivarRegla(Regla pRegla)
 {
     try
     {
         _objConexionBase = new Inclutec_BDEntities();
         SIFRegla _sifRegla = (from _sifReglas in _objConexionBase.SIFReglas
                             where _sifReglas.txt_nombre == pRegla.Nombre
                             select _sifReglas).First();
         _sifRegla.txt_estado = "deshabilitada";
         _objConexionBase.SaveChanges();
         _objConexionBase.Connection.Close();
         return true;
     }
     catch (Exception)
     {
         return false;
     }
 }