public ActionResult IrABitacoras(int id, int code = 0)
        {
            tblGrupoInvestigacion tblgrupo = db.tblGrupoInvestigacion.Find(id);
            var idUsuario = AspNetUsers.GetUserId(User.Identity.Name);

            InformacionGrupo infogrupo = new InformacionGrupo();

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

            if (tblgrupo.idUsuario.Equals(idUsuario))
            {
                infogrupo.EsCreador = true;
                ViewBag.InfoGrupo   = infogrupo;
                return(View("BitacoraCreador", tblgrupo));
            }
            else
            {
                infogrupo.EsCreador = false;
                ViewBag.InfoGrupo   = infogrupo;
                return(View("BitacoraColaborador", tblgrupo));
            }
        }
        // GET: GruposInvestigacion
        public ActionResult Index()
        {
            List <MisGrupos> misGrupos = new List <MisGrupos>();
            var idUsuario   = AspNetUsers.GetUserId(User.Identity.Name);
            var listaGrupos = db.tblGrupoInvestigacion;

            foreach (var item in listaGrupos)
            {
                MisGrupos        m = new MisGrupos();
                InformacionGrupo i = new InformacionGrupo();
                i.Descripcion = "No disponible";
                if (item.tblProblemaInvestigacion.FirstOrDefault() != null)
                {
                    i.Descripcion = item.tblProblemaInvestigacion.First().Descripcion;
                }
                i.Institucion = item.tblInstitucion.Nombre;
                i.Municipio   = item.tblInstitucion.tblMunicipios.NombreMunicipio;
                i.NombreGrupo = item.Nombre;
                m.Informacion = i;
                m.Avatar      = item.Avatar;
                m.id          = item.id;
                misGrupos.Add(m);
            }

            return(View(misGrupos));
        }
        public ActionResult ParaElMaestro([Bind(Include = "id,FechaInicio,UltimaModificacion,Proceso,Motivacion,Reflexion,ConceptoAsesor,Revisado,idGrupoInvestigacion")] tblReflexionProyectoInvestigacion tbresearchprojectreflexion)
        {
            string userId = AspNetUsers.GetUserId(User.Identity.Name);

            int id = tbresearchprojectreflexion.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;
            infogrupo.EsCreador   = true;
            ViewBag.InfoGrupo     = infogrupo;

            int idRol = tblMiembroGrupo.GetRoleMiembro(userId, tbresearchprojectreflexion.idGrupoInvestigacion);

            if (idRol != 1)
            {
                return(RedirectToAction("IrABitacoras", new { id = tbresearchprojectreflexion.idGrupoInvestigacion, code = 999 }));
            }

            tbresearchprojectreflexion.UltimaModificacion = DateTime.Now;
            if (ModelState.IsValid)
            {
                db.Entry(tbresearchprojectreflexion).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("IrABitacoras", new { id = tbresearchprojectreflexion.idGrupoInvestigacion, code = 110 }));
            }

            return(View(tbresearchprojectreflexion));
        }
        public ActionResult AgregarForo([Bind(Include = "id,idUser,idGrupoInvestigacion,Titulo,Mensaje,Fecha,Respuestas,idForo,FechaUltimaRespuesta")] tblForoProyectoInvestigacion tblforo)
        {
            tblforo.Fecha = DateTime.Now;

            int id = tblforo.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;

            if (ModelState.IsValid)
            {
                db.tblForoProyectoInvestigacion.Add(tblforo);
                db.SaveChanges();
                if (tblforo.idForo.HasValue)
                {
                    tblForoProyectoInvestigacion tblForoPrincipal = db.tblForoProyectoInvestigacion.Find(tblforo.idForo.Value);
                    int respuestas = db.tblForoProyectoInvestigacion.Where(m => m.idForo == tblforo.idForo.Value).Count();
                    tblForoPrincipal.Respuestas      = respuestas;
                    db.Entry(tblForoPrincipal).State = EntityState.Modified;
                    db.SaveChanges();
                }
                return(RedirectToAction("ForoProyecto", new { id = tblforo.idGrupoInvestigacion }));
            }
            return(RedirectToAction("ForoPoryecto", new { id = tblforo.idGrupoInvestigacion }));
        }
        /// <summary>
        /// Miembros del grupo
        /// </summary>
        /// <returns></returns>
        public ActionResult MiembroGrupo()
        {
            string userId = AspNetUsers.GetUserId(User.Identity.Name);

            int idRol = tblMiembroGrupo.GetRoleMiembro(userId);

            if (idRol != 1)
            {
                return(RedirectToAction("Index", new { id = 999 }));
            }
            InformacionGrupo infogrupo = new InformacionGrupo();
            int idGrupo = tblGrupoInvestigacion.ResearchGroupIdByUser(userId);
            var grupo   = tblGrupoInvestigacion.Find(idGrupo);

            infogrupo.idGrupo     = idGrupo;
            infogrupo.Descripcion = grupo.tblPreguntaInvestigacion
                                    .Where(m => m.idGrupoInvestigacion == idGrupo)
                                    .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;
            int id            = tblGrupoInvestigacion.ResearchGroupIdByUser(userId);
            var tbgroupmember = db.tblMiembroGrupo.Where(m => m.idGrupoInvestigacion == id).Where(m => m.idRol == 2);

            return(View(tbgroupmember));
        }
        /// <summary>
        /// Inicio del Asistente de Grupos de Investigacion
        /// </summary>
        /// <param name="code">Codigo de Mensaje de error</param>
        /// <returns></returns>
        public ActionResult Index(int code = 0, int id = 0)
        {
            string idUSer = AspNetUsers.GetUserId(User.Identity.Name);
            tblGrupoInvestigacion tblgrupoinvestigacion = db.tblGrupoInvestigacion.Where(m => m.idUsuario.Equals(idUSer)).SingleOrDefault();

            if (id != 0)
            {
                tblgrupoinvestigacion = db.tblGrupoInvestigacion.Where(m => m.id == id).SingleOrDefault();
            }
            ViewBag.Message = dl.ErrorCodes.ErrorCodeToString(code);

            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;

            return(View(tblgrupoinvestigacion));
        }
        /// <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>
        /// El problema
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult ElProblema(int idGrupoInvestigacion)
        {
            InformacionGrupo infogrupo = new InformacionGrupo();
            var grupo = tblGrupoInvestigacion.Find(idGrupoInvestigacion);

            infogrupo.idGrupo     = idGrupoInvestigacion;
            infogrupo.Descripcion = grupo.tblPreguntaInvestigacion
                                    .Where(m => m.idGrupoInvestigacion == idGrupoInvestigacion)
                                    .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 tbresearchproblem = db.tblProblemaInvestigacion.Where(m => m.idGrupoInvestigacion == idGrupoInvestigacion).SingleOrDefault();

            return(View(tbresearchproblem));
        }
        /// <summary>
        /// Pregunta para el grupo
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Pregunta(int id)
        {
            ViewBag.ResearchId = id;
            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 tbresearchquestion = db.tblPreguntaInvestigacion.Where(m => m.idGrupoInvestigacion == id);

            return(View(tbresearchquestion));
        }
        /// <summary>
        /// Ingreso de información de la bitacora
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult ParaElMaestro(int idGrupo)
        {
            int id = idGrupo;
            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;
            infogrupo.EsCreador   = true;
            ViewBag.InfoGrupo     = infogrupo;

            //var tbresearchprojectreflexion = db.tblReflexionProyectoInvestigacion.Where(m => m.idGrupoInvestigacion == id).SingleOrDefault();
            return(View(grupo.tblReflexionProyectoInvestigacion.First()));
        }
        public ActionResult ComentarioProyecto(int id, int code = 0)
        {
            var tbcomentario = db.tblComentarioGrupo.Where(m => m.idGrupo == id)
                               .Include(m => m.tblGrupoInvestigacion);

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

            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;

            return(View(tbcomentario.ToList()));
        }
        public ActionResult PresupuestoDetallado(int id, int code = 0)
        {
            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;

            ViewBag.Message = dl.ErrorCodes.ErrorCodeToString(code);
            var presupuesto = db.tblPresupuestoProyectoInvestigacion.Where(m => m.idGrupoInvestigacion == id).ToList();

            if (presupuesto.Count == 0)
            {
                return(RedirectToAction("Index", new { code = 411, id = id }));
            }
            return(View(presupuesto));
        }
        /// <summary>
        /// Invitar usuarios como Colaborador
        /// </summary>
        /// <param name="id"></param>
        /// <param name="idGroup"></param>
        /// <returns></returns>
        public ActionResult InvitarColaborador(string id, int idGroup)
        {
            try
            {
                var tblinvitacion = new tblInvitacionGrupo();
                tblinvitacion.idGrupo   = idGroup;
                tblinvitacion.idUsuario = id;
                tblinvitacion.idRol     = 4;
                db.tblInvitacionGrupo.Add(tblinvitacion);
                db.SaveChanges();

                tblGrupoInvestigacion tblgrupo  = db.tblGrupoInvestigacion.Find(idGroup);
                InformacionGrupo      infogrupo = new InformacionGrupo();
                infogrupo.idGrupo     = idGroup;
                infogrupo.Descripcion = "No disponible";
                if (tblgrupo.tblProblemaInvestigacion.First() != null)
                {
                    infogrupo.Descripcion = tblgrupo.tblProblemaInvestigacion.First().Descripcion;
                }
                infogrupo.Institucion = tblgrupo.tblInstitucion.Nombre;
                infogrupo.Municipio   = tblgrupo.tblInstitucion.tblMunicipios.NombreMunicipio;
                infogrupo.NombreGrupo = tblgrupo.Nombre;
                infogrupo.Pregunta    = "Pregunta no disponible";
                if (tblgrupo.tblPreguntaInvestigacion.Where(g => g.PreguntaPrincipal).First() != null)
                {
                    infogrupo.Pregunta = tblgrupo.tblPreguntaInvestigacion.Where(g => g.PreguntaPrincipal).First().Pregunta;
                }
                infogrupo.EsCreador = true;

                return(RedirectToAction("MaestroCoinvestigador", new { id = idGroup, code = 100 }));
            }
            catch (Exception)
            {
                return(RedirectToAction("Index", new { id = idGroup }));
            }
        }
        /// <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()));
        }
        // GET: IEP
        public ActionResult Index(int code = 0)
        {
            List <MisGrupos> misGrupos = new List <MisGrupos>();
            var idUsuario = AspNetUsers.GetUserId(User.Identity.Name);

            if (!tblMaestroCoinvestigador.Exist(idUsuario))
            {
                return(RedirectToAction("HojaDeVida"));
            }
            ViewBag.Message = dl.ErrorCodes.ErrorCodeToString(code);
            var listaGrupos = db.tblGrupoInvestigacion.Where(g => g.idUsuario.Equals(idUsuario));

            foreach (var item in listaGrupos)
            {
                MisGrupos        m = new MisGrupos();
                InformacionGrupo i = new InformacionGrupo();
                i.Descripcion = "No disponible";
                if (item.tblProblemaInvestigacion.FirstOrDefault() != null)
                {
                    i.Descripcion = item.tblProblemaInvestigacion.First().Descripcion;
                }
                i.Institucion = item.tblInstitucion.Nombre;
                i.Municipio   = item.tblInstitucion.tblMunicipios.NombreMunicipio;
                i.NombreGrupo = item.Nombre;
                i.Pregunta    = "Pregunta no disponible";
                if (item.tblPreguntaInvestigacion.Where(g => g.PreguntaPrincipal).First() != null)
                {
                    i.Pregunta = item.tblPreguntaInvestigacion.Where(g => g.PreguntaPrincipal).First().Pregunta;
                }
                m.Informacion = i;
                m.Avatar      = item.Avatar;
                m.id          = item.id;
                misGrupos.Add(m);
            }

            var invitaciones = db.tblInvitacionGrupo.Where(m => m.idUsuario == idUsuario)
                               .Where(m => m.Aceptada)
                               .Include(m => m.tblGrupoInvestigacion);

            foreach (var item in invitaciones)
            {
                MisGrupos        m = new MisGrupos();
                InformacionGrupo i = new InformacionGrupo();
                i.Descripcion = "No disponible";
                if (item.tblGrupoInvestigacion.tblProblemaInvestigacion.First() != null)
                {
                    i.Descripcion = item.tblGrupoInvestigacion.tblProblemaInvestigacion.First().Descripcion;
                }
                i.Institucion = item.tblGrupoInvestigacion.tblInstitucion.Nombre;
                i.Municipio   = item.tblGrupoInvestigacion.tblInstitucion.tblMunicipios.NombreMunicipio;
                i.NombreGrupo = item.tblGrupoInvestigacion.Nombre;
                i.Pregunta    = "Pregunta no disponible";
                if (item.tblGrupoInvestigacion.tblPreguntaInvestigacion.Where(g => g.PreguntaPrincipal).First() != null)
                {
                    i.Pregunta = item.tblGrupoInvestigacion.tblPreguntaInvestigacion.Where(g => g.PreguntaPrincipal).First().Pregunta;
                }
                m.Informacion = i;
                m.Avatar      = item.tblGrupoInvestigacion.Avatar;
                m.id          = item.tblGrupoInvestigacion.id;
                misGrupos.Add(m);
            }

            return(View(misGrupos));
        }