public JsonResult editEstudiantesSeleccionanGrupos(Seleccion Model)
        {
            var current_id          = User.Identity.GetUserId();
            ApplicationDbContext db = new ApplicationDbContext();

            try
            {
                var groupOg = db.Grupo.SingleOrDefault(x => x.Id.Equals(Model.Id));
                if (groupOg == null)
                {
                    return(Json(new { Result = "ERROR", Message = "Grupo no Existente" }));
                }

                UsuariosPertenecenGrupo upg_actual = db.UsuariosPertenecenGrupos.ToList()
                                                     .Where(t => t.UsuarioId == User.Identity.GetUserId())
                                                     .Where(t => t.GrupoId == Model.Id)
                                                     .Select(t => t).FirstOrDefault();

                bool checkIsRegisteredInGroup = (upg_actual == null) ? false : true;
                if (checkIsRegisteredInGroup && (Model.EstadoSeleccion == ((int)SolicitudInscripcion.Desinscripcion).ToString()))
                {
                    Nota nota = db.Nota.Find(db.UsuariosPertenecenGrupos.Where(t => t.GrupoId == upg_actual.GrupoId).FirstOrDefault().NotaId);

                    if (nota != null)
                    {
                        db.Nota.Remove(nota);
                    }

                    db.UsuariosPertenecenGrupos.Remove(upg_actual);
                    db.SaveChanges();
                }
                else if (!checkIsRegisteredInGroup && (Model.EstadoSeleccion == ((int)SolicitudInscripcion.Inscripcion).ToString()))
                {
                    var gruposEstudiante = db.UsuariosPertenecenGrupos.Include(a => a.Grupo.Materia)
                                           .Where(x => x.UsuarioId.Equals(current_id)).ToList();

                    if (gruposEstudiante.Any(x => x.Grupo.Materia.Nombre.Equals(groupOg.Materia.Nombre)))
                    {
                        return(Json(new { Result = "ERROR", Message = "Materia Previamente Inscrita" }));
                    }

                    Nota nota = new Nota()
                    {
                        PrimerParcial = 0, SegundoParcial = 0, ParcialFinal = 0, NotaTotal = 0
                    };
                    db.Nota.Add(nota);
                    db.SaveChanges();
                    db.UsuariosPertenecenGrupos.Add(new UsuariosPertenecenGrupo {
                        GrupoId = Model.Id, UsuarioId = current_id, NotaId = nota.Id
                    });
                    db.SaveChanges();
                }

                return(Json(new { Result = "OK" }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new { Result = "ERROR", Message = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }
        public JsonResult editAdministradoresAsignanProfesores(Seleccion Model)
        {
            //En este contexto Model.EstadoSeleccion posee el id del profesor
            ApplicationDbContext db = new ApplicationDbContext();

            try
            {
                if (Model.EstadoSeleccion == "1")
                {
                    //Buscamos los Usuarios con Rol de Profesor
                    IdentityRole Profesores = db.Roles.Include(t => t.Users).Where(t => t.Id == ((int)Rol.Profesor).ToString()).FirstOrDefault();
                    foreach (var item in Profesores.Users)
                    {
                        UsuariosPertenecenGrupo upg_actual = db.UsuariosPertenecenGrupos.ToList()
                                                             .Where(t => t.UsuarioId == item.UserId)
                                                             .Where(t => t.GrupoId == Model.Id)
                                                             .Select(t => t).FirstOrDefault();

                        if (upg_actual != null)
                        {
                            db.UsuariosPertenecenGrupos.Remove(upg_actual);
                            db.SaveChanges();
                            break;
                        }
                    }
                }
                else
                {
                    bool checkTeacherExistInGroup = (db.UsuariosPertenecenGrupos
                                                     .Where(t => t.UsuarioId == Model.EstadoSeleccion)
                                                     .Where(t => t.GrupoId == Model.Id)
                                                     .FirstOrDefault() == null)? false: true;
                    if (checkTeacherExistInGroup)
                    {
                        try
                        {
                            //Si no se ha modificado, el programa ira al catch
                            db.Entry(new UsuariosPertenecenGrupo {
                                UsuarioId = Model.EstadoSeleccion, GrupoId = Model.Id
                            }).State = EntityState.Modified;
                            db.SaveChanges();
                        }
                        catch (Exception)
                        {
                            //Do nothig
                        }
                    }
                    else if (!checkTeacherExistInGroup)
                    {
                        db.UsuariosPertenecenGrupos.Add(new UsuariosPertenecenGrupo {
                            UsuarioId = Model.EstadoSeleccion, GrupoId = Model.Id
                        });
                        db.SaveChanges();
                    }
                }/**/

                /*db.UsuariosPertenecenGrupos.Add(new UsuariosPertenecenGrupo { UsuarioId = "28c43a6c-41ad-4d0a-8f5c-b60a435ad29c", GrupoId = 17 });
                 * db.SaveChanges();*/
                return(Json(new { Result = "OK" }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new { Result = "ERROR", Message = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }