/// <summary>
        /// Maestros asesores o coinvestigadores
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult MaestroCoinvestigador(int id = 0)
        {
            string userId = AspNetUsers.GetUserId(User.Identity.Name);

            int idGrupoInvestigacion = tblGrupoInvestigacion.ResearchGroupIdByUser(userId);

            if (id == 0)
            {
                id = idGrupoInvestigacion;
            }
            InformacionGrupo infogrupo = new InformacionGrupo();
            var grupo = tblGrupoInvestigacion.Find(id);

            infogrupo.idGrupo     = id;
            infogrupo.Descripcion = grupo.tblPreguntaInvestigacion
                                    .Where(m => m.idGrupoInvestigacion == id)
                                    .Where(m => m.PreguntaPrincipal).Select(m => m.Pregunta).First();
            infogrupo.Institucion = grupo.tblInstitucion.Nombre;
            infogrupo.Municipio   = grupo.tblInstitucion.tblMunicipios.NombreMunicipio;
            infogrupo.NombreGrupo = grupo.Nombre;
            ViewBag.InfoGrupo     = infogrupo;

            var tbcoresearchteacher = db.tblMiembroGrupo
                                      .Where(m => m.idGrupoInvestigacion == idGrupoInvestigacion)
                                      .Where(m => m.tblRol.id == 1);

            if (tbcoresearchteacher.ToList().Count == 0)
            {
                var tbgroupmember = new tblMiembroGrupo();
                tbgroupmember.idGrupoInvestigacion = idGrupoInvestigacion;
                tbgroupmember.idUsuario            = userId;
                tbgroupmember.idRol = 1;
                tbgroupmember.Grado = "0";
                try
                {
                    db.tblMiembroGrupo.Add(tbgroupmember);
                    db.SaveChanges();
                }
                catch (Exception)
                {
                    return(RedirectToAction("Index", new { id = 160 }));
                }
            }
            else
            {
                tbcoresearchteacher = db.tblMiembroGrupo
                                      .Where(m => m.idGrupoInvestigacion == idGrupoInvestigacion)
                                      .Where(m => m.tblRol.id != 2);
            }
            int idRol = tblMiembroGrupo.GetRoleMiembro(userId);

            if (idRol != 1)
            {
                return(RedirectToAction("Index", new { id = 999 }));
            }
            ViewBag.Message = dl.ErrorCodes.ErrorCodeToString(id);
            return(View(tbcoresearchteacher.ToList()));
        }
        /// <summary>
        /// Eliminar Miembro grupo
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult DeleteGroupMember(int id)
        {
            tblMiembroGrupo tbgroupmember = db.tblMiembroGrupo.Find(id);
            int             idGroup       = tbgroupmember.idGrupoInvestigacion;

            db.tblMiembroGrupo.Remove(tbgroupmember);
            db.SaveChanges();
            return(RedirectToAction("MiembroGrupo"));
        }
        /// <summary>
        /// Aceptar invitación
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Aceptar(int id)
        {
            var             invitacion = db.tblInvitacionGrupo.Find(id);
            tblMiembroGrupo miembro    = new tblMiembroGrupo();

            miembro.Grado = "0";
            miembro.idGrupoInvestigacion = invitacion.idGrupo;
            miembro.idUsuario            = invitacion.idUsuario;
            miembro.idRol = invitacion.idRol;
            db.tblMiembroGrupo.Add(miembro);
            db.SaveChanges();
            invitacion.Aceptada        = true;
            db.Entry(invitacion).State = EntityState.Modified;
            db.SaveChanges();
            return(RedirectToAction("Invitaciones"));
        }
        /// <summary>
        /// Maestros asesores o coinvestigadores
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult MaestroCoinvestigador(int id, int code = 0)
        {
            string userId = AspNetUsers.GetUserId(User.Identity.Name);

            ViewBag.Message = dl.ErrorCodes.ErrorCodeToString(code);

            InformacionGrupo infogrupo = new InformacionGrupo();
            var grupo = tblGrupoInvestigacion.Find(id);

            infogrupo.idGrupo     = id;
            infogrupo.Descripcion = "No disponible";
            if (grupo.tblProblemaInvestigacion.First() != null)
            {
                infogrupo.Descripcion = grupo.tblProblemaInvestigacion.First().Descripcion;
            }
            infogrupo.Institucion = grupo.tblInstitucion.Nombre;
            infogrupo.Municipio   = grupo.tblInstitucion.tblMunicipios.NombreMunicipio;
            infogrupo.NombreGrupo = grupo.Nombre;
            infogrupo.Pregunta    = "Pregunta no disponible";
            if (grupo.tblPreguntaInvestigacion.Where(g => g.PreguntaPrincipal).First() != null)
            {
                infogrupo.Pregunta = grupo.tblPreguntaInvestigacion.Where(g => g.PreguntaPrincipal).First().Pregunta;
            }
            infogrupo.EsCreador = true;
            ViewBag.InfoGrupo   = infogrupo;

            var tbcoresearchteacher = db.tblMiembroGrupo
                                      .Where(m => m.idGrupoInvestigacion == id)
                                      .Where(m => m.tblRol.id == 1);

            if (tbcoresearchteacher.ToList().Count == 0)
            {
                var tbgroupmember = new tblMiembroGrupo();
                tbgroupmember.idGrupoInvestigacion = id;
                tbgroupmember.idUsuario            = userId;
                tbgroupmember.idRol = 1;
                tbgroupmember.Grado = "0";
                try
                {
                    db.tblMiembroGrupo.Add(tbgroupmember);
                    db.SaveChanges();
                }
                catch (Exception)
                {
                    return(RedirectToAction("IrABitacoras", new { id = id, code = 160 }));
                }
            }
            else
            {
                tbcoresearchteacher = db.tblMiembroGrupo
                                      .Where(m => m.idGrupoInvestigacion == id)
                                      .Where(m => m.tblRol.id != 2);
            }
            int idRol = tblMiembroGrupo.GetRoleMiembro(userId);

            if (idRol != 1)
            {
                return(RedirectToAction("IrABitacoras", new { id = id }));
            }
            return(View(tbcoresearchteacher.ToList()));
        }