public List <estudiantes> seleccionarEstudiantesPorGrupo(grupos g)
        {
            if (g == null)
            {
                return(seleccionarEstudiantesADO());
            }

            List <estudiantes> listaEstudiantes = new List <estudiantes>();

            // Si algo sale mal, se lo notificaremos al usuario.
            try
            {
                CBTis123_Entities db = Vinculo_DB.generarContexto();
                g = db.grupos.Single(g1 => g1.idGrupo == g.idGrupo);

                List <grupos_estudiantes> listaGE = g.grupos_estudiantes.ToList();

                foreach (grupos_estudiantes ge in listaGE)
                {
                    listaEstudiantes.Add(ge.estudiantes);
                }
            }
            catch (MySqlException e)
            {
                ControladorVisual.mostrarMensaje(ControladorExcepciones.crearResultadoOperacionMySqlException(e));
            }
            catch (Exception e)
            {
                ControladorVisual.mostrarMensaje(ControladorExcepciones.crearResultadoOperacionException(e));
            }


            return(listaEstudiantes);
        }
Пример #2
0
        private grupos pMontaObjGrupo()
        {
            grupos objGrupo = new grupos();

            objGrupo.descricao = txtDescricao.Text;
            return(objGrupo);
        }
Пример #3
0
 // GET: grupos/Edit/5
 public ActionResult Edit(int?id)
 {
     if (Session["usuario"] != null)
     {
         usuario usuarioSesion = (usuario)HttpContext.Session["usuario"];
         if (usuarioSesion.roles.FirstOrDefault().rol.Equals(Constantes.ADMINISTRADOR))
         {
             if (id == null)
             {
                 return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
             }
             grupos grupos = db.grupos.Find(id);
             if (grupos == null)
             {
                 return(HttpNotFound());
             }
             List <int> disabled = new List <int>();
             foreach (permiso permisoTemp in grupos.permisos)
             {
                 disabled.Add(permisoTemp.id);
             }
             ViewBag.ListaPermisos = new SelectList(db.permisos, "id", "descripcion", null, null, disabled);
             return(View(grupos));
         }
         else
         {
             return(RedirectToAction("../"));
         }
     }
     return(RedirectToAction("../Account/Login/ReturnUrl=grupos"));
 }
Пример #4
0
        private void btnDelete_Click(object sender, EventArgs e)
        {
            //Valida se foi informado um codigo
            if (txtCodigo.Text == string.Empty)
            {
                MessageBox.Show("Selecione um grupo.");
                return;
            }
            int    codigo    = Convert.ToInt32(txtCodigo.Text);
            string descricao = txtDescricao.Text;
            //Consulta grupo por ID
            grupos objGrupos = GrupoController.BuscaGrupoPorID(codigo);

            //Valida se grupo existe
            if (objGrupos == null)
            {
                MessageBox.Show("O grupo não está cadastrado.");
                return;
            }
            //Exclui o grupo
            GrupoController.ExcluirGrupo(Convert.ToInt32(txtCodigo.Text.ToString()));
            MessageBox.Show("Grupo excluído com sucesso.");
            //Repopula grid
            btnClear_Click(sender, e);
        }
        public FrmModificarGrupo(grupos grupo, semestres semestreDefault)
        {
            InitializeComponent();

            this.grupo           = grupo;
            this.semestreDefault = semestreDefault;
        }
Пример #6
0
 public ActionResult Edit([Bind(Include = "id,grupo")] grupos grupos, ICollection <int> listaPermisos, ICollection <int> quitarPermisos)
 {
     if (ModelState.IsValid)
     {
         db.Entry(grupos).State = EntityState.Modified;
         if (quitarPermisos != null)
         {
             foreach (int permisoTemporal in quitarPermisos)
             {
                 permiso permisoObj = db.permisos.Find(permisoTemporal);
                 db.permisos.Find(permisoObj.id).grupos.Remove(grupos);
             }
         }
         if (listaPermisos != null)
         {
             foreach (int permisoTemporal in listaPermisos)
             {
                 permiso permisoObj = db.permisos.Find(permisoTemporal);
                 grupos.permisos.Add(permisoObj);
             }
         }
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(grupos));
 }
Пример #7
0
        public async Task <IActionResult> Edit(int id, [Bind("idGrupo,grupo,descricao,ativo")] grupos grupos)
        {
            if (id != grupos.idGrupo)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(grupos);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!gruposExists(grupos.idGrupo))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(grupos));
        }
Пример #8
0
 // GET: grupos/Details/5
 public ActionResult Details(int?id)
 {
     if (Session["usuario"] != null)
     {
         usuario usuarioSesion = (usuario)HttpContext.Session["usuario"];
         if (usuarioSesion.roles.FirstOrDefault().rol.Equals(Constantes.ADMINISTRADOR))
         {
             if (id == null)
             {
                 return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
             }
             grupos grupos = db.grupos.Find(id);
             if (grupos == null)
             {
                 return(HttpNotFound());
             }
             return(View(grupos));
         }
         else
         {
             return(RedirectToAction("../"));
         }
     }
     return(RedirectToAction("../Account/Login/ReturnUrl=grupos"));
 }
 public void iniciarGrupos(grupos grupos)
 {
     vistaGrupoObj = grupos;
     rellenarTabla();
     vistaGrupoObj.btn_eliminar.Click     += new EventHandler(btn_Delete);
     vistaGrupoObj.txt_buscar.TextChanged += new EventHandler(buscando);
     ControlCamposVacios.soloLetrasTxtBox(vistaGrupoObj.txt_buscar);
 }
Пример #10
0
        public ActionResult DeleteConfirmed(int id)
        {
            grupos grupos = db.grupos.Find(id);

            db.grupos.Remove(grupos);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Пример #11
0
        // Métodos de inicialización
        public FrmImportarEstudiantes(grupos grupo)
        {
            InitializeComponent();

            this.grupo = grupo;

            ultimoCambioBusqueda = false;
        }
Пример #12
0
        //Exclui o grupo
        public static void ExcluirGrupo(int id)
        {
            //Consulta e retorna grupo
            grupos grupo = ContextoSingleton.Instancia.grupos.Find(id);

            //Deleta registro da tabela
            ContextoSingleton.Instancia.Entry(grupo).State = EntityState.Deleted;
            //Salva alteração na tabela
            ContextoSingleton.Instancia.SaveChanges();
        }
Пример #13
0
        // Métodos de inicialización
        public FrmImportarCalificacionesM(IList <catedras> catedras, grupos grupo)
        {
            InitializeComponent();

            this.catedras = catedras;
            this.calificacionesCatedras = new IList <calificaciones_semestrales> [this.catedras.Count];
            this.radiosCatedras         = new RadioButton[this.catedras.Count];

            this.grupo = grupo;
        }
Пример #14
0
        public async Task <IActionResult> Create([Bind("idGrupo,grupo,descricao,ativo")] grupos grupos)
        {
            if (ModelState.IsValid)
            {
                _context.Add(grupos);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(grupos));
        }
Пример #15
0
        public ActionResult AdministrarCurso(int?id, string nombre, string nombreDoc, int?unidad, int?nivel, int?tipo)
        {
            if (Session["usuario"] != null)
            {
                usuario usuarioSesion = (usuario)HttpContext.Session["usuario"];
                if (usuarioSesion.roles.FirstOrDefault().rol.Equals(Constantes.PROFESOR_PREMIUM))
                {
                    grupos grupo = db.grupos.Find(id);
                    if (grupo == null)
                    {
                        return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                    }
                    if (nombre == null)
                    {
                        nombre = "";
                    }

                    grupo.usuarios = grupo.usuarios.Where(u => u.id != usuarioSesion.id &&
                                                          (u.nombre.Contains(nombre) || u.apellidos.Contains(nombre) || u.username.Contains(nombre))).ToList();

                    if (unidad != null)
                    {
                        grupo.curso.documentos_curso = grupo.curso.documentos_curso.Where(dc => dc.documento.unidad == unidad).ToList();
                    }

                    if (nivel != null)
                    {
                        grupo.curso.documentos_curso = grupo.curso.documentos_curso.Where(dc => dc.documento.niveles.Contains(db.niveles.Find(unidad))).ToList();
                    }

                    if (tipo != null)
                    {
                        grupo.curso.documentos_curso = grupo.curso.documentos_curso.Where(dc => dc.documento.tipo_documento.id == tipo).ToList();
                    }

                    if (nombreDoc != null && nombreDoc != "")
                    {
                        grupo.curso.documentos_curso = grupo.curso.documentos_curso.Where(dc => dc.documento.titulo.Contains(nombreDoc) ||
                                                                                          dc.documento.descripcion_corta.Contains(nombreDoc) || (dc.documento.descripcion_detallada != null && dc.documento.descripcion_detallada.Contains(nombreDoc))).ToList();
                    }

                    ViewBag.unidades = db.unidades;
                    ViewBag.niveles  = db.niveles;
                    ViewBag.tipos    = db.tipo_documento;
                    return(View(grupo));
                }
                else
                {
                    return(RedirectToAction("../"));
                }
            }
            return(RedirectToAction("../Account/Login/ReturnUrl=cursos"));
        }
Пример #16
0
        //Altera o grupo
        public static void AlterarGrupo(int id, grupos novoGrupo)
        {
            grupos grupo = ContextoSingleton.Instancia.grupos.Find(id);

            if (grupo != null)
            {
                grupo.descricao = novoGrupo.descricao;
            }

            ContextoSingleton.Instancia.Entry(grupo).State = EntityState.Modified;
            ContextoSingleton.Instancia.SaveChanges();
        }
Пример #17
0
 public Form1()
 {
     InitializeComponent();
     button_materias.BackColor = Color.Black;
     button_materias.FlatAppearance.MouseOverBackColor = Color.Black;
     doc = new docentes();
     mat = new materias();
     grp = new grupos();
     hr  = new horario();
     bajarNivel(mat);
     bajarNivel(doc);
     bajarNivel(grp);
     bajarNivel(hr);
 }
Пример #18
0
        public void cargarCatedras(object sender, EventArgs e)
        {
            grupos grupo = grupoSeleccionado;

            if (grupo != null)
            {
                List <catedras> listaCatedras = ControladorAcreditacion.seleccionarCatedras(grupo);

                comboAsignatura.DataSource = listaCatedras;
            }
            else
            {
                comboAsignatura.DataSource = null;
                cmdImportar.Enabled        = false;
                configurarDGVCalificaciones(null);
            }
        }
Пример #19
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            grupos objGrupo = null;
            //Passa o codigo para uma variavel
            int codigo = 0;

            //Valida se foi informada descrição
            if (txtDescricao.Text == string.Empty)
            {
                MessageBox.Show("Informe a descrição do grupo.");
                return;
            }
            //Valida se esta editando
            if (txtCodigo.Text != string.Empty)
            {
                //passa valor para variavel
                codigo = int.Parse(txtCodigo.Text);
                //Consulta grupo pelo id
                objGrupo = GrupoController.BuscaGrupoPorID(codigo);
            }
            //Se grupo não existir ele grava
            if (objGrupo == null)
            {
                //Mota objeto de grupo para salvar
                objGrupo = pMontaObjGrupo();
                //Salva grupo
                GrupoController.SalvarGrupo(objGrupo);
                //mostra mensagem para o usuario
                MessageBox.Show("Grupo gravado com sucesso.");
            }
            else
            {
                //Mota objeto de grupo para salvar
                objGrupo = pMontaObjGrupo();
                //Altera grupo
                GrupoController.AlterarGrupo(codigo, objGrupo);
                //mostra mensagem para o usuario
                MessageBox.Show("Grupo alterado com sucesso.");
            }
            //Limpa os campos
            btnClear_Click(sender, e);
            //Coloca o foco na descrição
            txtDescricao.Focus();
        }
        public List <catedras> seleccionarCatedrasPorGrupo(grupos g)
        {
            List <catedras> listaCatedras = new List <catedras>();

            try
            {
                CBTis123_Entities db = Vinculo_DB.generarContexto();

                listaCatedras = db.catedras.Where(c => c.idGrupo == g.idGrupo).ToList();
            }
            catch (MySqlException e)
            {
                ControladorVisual.mostrarMensaje(ControladorExcepciones.crearResultadoOperacionMySqlException(e));
            }
            catch (Exception e)
            {
                ControladorVisual.mostrarMensaje(ControladorExcepciones.crearResultadoOperacionException(e));
            }

            return(listaCatedras);
        }
Пример #21
0
 //Leave
 private void txtCodigo_Leave(object sender, EventArgs e)
 {
     try
     {
         int codigo = Convert.ToInt32(txtCodigo.Text);
         //Busca grupo por id
         grupos objGrupo = GrupoController.BuscaGrupoPorID(codigo);
         //Valida se encontrou algum registro
         if (objGrupo == null)
         {
             MessageBox.Show("Grupo não está cadastrado.");
             txtCodigo.Focus();
             return;
         }
         //Preenche campos
         txtDescricao.Text = objGrupo.descricao;
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
        // Métodos misceláneos
        public static void inicializarCatedras(grupos grupo)
        {
            // Código necesario para los métodos que
            // utilicen la base de datos
            CBTis123_Entities dbContext = Vinculo_DB.generarContexto();

            try
            {
                List <catedras> listaCatedras = dbContext.catedras.Where(
                    c =>
                    c.idGrupo == grupo.idGrupo
                    ).ToList();

                if (listaCatedras.Count == 0)
                {
                    Grupo g1 = ControladorSingleton.controladorGrupos.seleccionarGrupo(grupo.idGrupo);

                    ControladorSingleton.controladorGrupos.
                    registrarCatedras(
                        ControladorSingleton.controladorGrupos.
                        crearListaCatedrasGrupo(g1));

                    dbContext     = Vinculo_DB.generarContexto();
                    listaCatedras = dbContext.catedras.Where(
                        c =>
                        c.idGrupo == grupo.idGrupo
                        ).ToList();

                    foreach (catedras c in listaCatedras)
                    {
                        inicializarCalificaciones(c);
                    }
                }
            }
            catch (Exception e)
            {
                ControladorVisual.mostrarMensaje(ControladorExcepciones.crearResultadoOperacionException(e));
            }
        }
        public static List <catedras> seleccionarCatedras(grupos g)
        {
            // Código necesario para los métodos que
            // utilicen la base de datos
            CBTis123_Entities dbContext = Vinculo_DB.generarContexto();

            List <catedras> listaCatedras = new List <catedras>();

            try
            {
                inicializarCatedras(g);
                listaCatedras = dbContext.catedras.Where(
                    c =>
                    c.idGrupo == g.idGrupo
                    ).ToList();
            }
            catch (Exception e)
            {
                ControladorVisual.mostrarMensaje(ControladorExcepciones.crearResultadoOperacionException(e));
            }

            return(listaCatedras);
        }
Пример #24
0
        public ActionResult Create([Bind(Include = "id,grupo, permisos")] grupos grupos, ICollection <int> permiso, int profesores, int cursos, int CantidadUsuarios)
        {
            if (ModelState.IsValid)
            {
                foreach (int permisoSeleccionado in permiso)
                {
                    permiso permisoobj = db.permisos.Find(permisoSeleccionado);
                    grupos.permisos.Add(permisoobj);
                }
                usuario usuario = db.usuarios.Find(profesores);
                grupos.usuarios.Add(usuario);
                curso curso = db.cursos.Find(cursos);
                curso.usuarios.Add(usuario);
                grupos.curso = curso;
                List <string> destinatarios = new List <string>();
                destinatarios.Add(usuario.correo);
                if (usuario.correo_2 != null || usuario.correo_2 != "")
                {
                    destinatarios.Add(usuario.correo_2);
                }
                if (CantidadUsuarios > 0)
                {
                    StringBuilder sb = new StringBuilder();
                    for (int i = 1; i <= CantidadUsuarios; i++)
                    {
                        usuario estudiante = new usuario();
                        estudiante.apellidos = Guid.NewGuid().ToString().Substring(0, 2);
                        estudiante.nombre    = Guid.NewGuid().ToString().Substring(0, 3);
                        estudiante.correo    = Guid.NewGuid().ToString().Substring(0, 3);
                        estudiante.telefono  = 0;
                        estudiante.username  = Guid.NewGuid().ToString().Substring(0, 10);
                        while (db.usuarios.Where(u => u.username.Equals(estudiante.username)).Count() > 0)
                        {
                            estudiante.username = Guid.NewGuid().ToString().Substring(0, 10);
                        }
                        estudiante.password = Guid.NewGuid().ToString().Substring(0, 10);
                        sb.AppendLine("Username = "******" Password = "******"Recursos", "logo-peq.png")));
                    celImagen.Border = 0;

                    PdfPCell celTitulo = new PdfPCell(new Phrase("Plataforma de Contenidos Digitales" +
                                                                 "\n" + DateTime.Today.ToShortDateString().ToString() +
                                                                 "\nReporte de usuarios generados",
                                                                 new Font(Font.FontFamily.HELVETICA, 16, Font.BOLD)));
                    celTitulo.HorizontalAlignment = Element.ALIGN_CENTER;
                    celTitulo.Colspan             = 4;
                    celTitulo.Border = 0;

                    table.AddCell(celImagen);
                    table.AddCell(celTitulo);
                    MemoryStream s = new MemoryStream();

                    Document  pdfDoc    = new Document(PageSize.A4, 25, 10, 25, 10);
                    PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDoc, s);
                    pdfDoc.Open();
                    pdfDoc.AddTitle("Reporte de usuarios generados");
                    pdfDoc.Add(table);
                    Paragraph Text = new Paragraph("\n\n" + sb.ToString());
                    pdfDoc.Add(Text);
                    pdfWriter.CloseStream = false;
                    pdfDoc.Close();
                    s = new MemoryStream(s.ToArray());
                    Utilitarios.EnviarCorreoAdjunto(destinatarios, "Datos de usuarios generados: ",
                                                    "Adjunto encontrarás un documento PDF con los datos de acceso para los usuarios generados el dia " + DateTime.Today, s);
                    s.Close();
                    //Utilitarios.EnviarCorreo(destinatarios, "Datos de usuarios del grupo: " + grupos.grupo, sb.ToString());
                }
                db.grupos.Add(grupos);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(grupos));
        }
Пример #25
0
        public void Initializer(IApplicationBuilder app)
        {
            using (var serviceScope = app.ApplicationServices.GetService <IServiceScopeFactory>().CreateScope())
            {
                var context = serviceScope.ServiceProvider.GetRequiredService <ApplicationDbContext>();
                context.Database.Migrate();
            }

            var qtdGrupos      = _context.grupos.AsQueryable().Count();
            var qtdCategorias  = _context.Categoria.AsQueryable().Count();
            var qtdPrioridades = _context.Prioridades.AsQueryable().Count();
            var qtdPerfil      = _context.Roles.AsQueryable().Count();
            var usuarioAdm     = _context.Users.Any(x => x.UserName == "*****@*****.**");


            if (qtdPerfil == 0)
            {
                //cria perfil padrão, admin
                var perfilAdmin = new Perfil {
                    Name = PerfilDefault.PERFIL_DEFAULT, DH_Criacao = DateTime.Now, Ativo = true, NormalizedName = PerfilDefault.PERFIL_DEFAULT.Normalize()
                };
                _context.Add(perfilAdmin);
                _context.SaveChangesAsync();

                //cria perfil de usuarios do sistema
                var perfilUsuario = new Perfil {
                    Name = PerfilDefault.PERFIL_USUARIO, DH_Criacao = DateTime.Now, Ativo = true, NormalizedName = PerfilDefault.PERFIL_USUARIO.Normalize()
                };
                _context.Add(perfilUsuario);
                _context.SaveChangesAsync();

                //cria perfil de funcionarios
                var perfilFuncionario = new Perfil {
                    Name = PerfilDefault.PERFIL_FUNCIONARIO, DH_Criacao = DateTime.Now, Ativo = true, NormalizedName = PerfilDefault.PERFIL_FUNCIONARIO.Normalize()
                };
                _context.Add(perfilFuncionario);
                var resultado = _context.SaveChangesAsync().Result;
            }

            if (qtdGrupos == 0)
            {
                var listaGrupos = new List <grupos>();
                var grupoAdmin  = new grupos()
                {
                    grupo     = "Administradores",
                    descricao = "Grupo destinado a adiministradores do sistema",
                    ativo     = true
                };
                listaGrupos.Add(grupoAdmin);

                var grupoPrimeiro = new grupos()
                {
                    grupo     = "Atendentes de 1º nivel",
                    descricao = "Grupo destinado a atendentes de primeiro nivel",
                    ativo     = true
                };
                listaGrupos.Add(grupoPrimeiro);

                var grupoSegundo = new grupos()
                {
                    grupo     = "Atendentes de 2º nivel",
                    descricao = "Grupo destinado a atendentes de segundo nivel",
                    ativo     = true
                };
                listaGrupos.Add(grupoSegundo);

                _context.grupos.AddRange(listaGrupos);
                _context.SaveChangesAsync();
            }

            if (qtdCategorias == 0)
            {
                var listaCategorias = new List <categorias>();

                var catSuporteH = new categorias()
                {
                    ativo     = true,
                    categoria = "Suporte - Hardware",
                    descricao = "Suporte para hardwares diversos"
                };
                listaCategorias.Add(catSuporteH);


                var catSuporteS = new categorias()
                {
                    ativo     = true,
                    categoria = "Suporte - Software",
                    descricao = "Suporte para softwares diversos"
                };
                listaCategorias.Add(catSuporteS);

                var catSuporteT = new categorias()
                {
                    ativo     = true,
                    categoria = "Suporte - Telecom",
                    descricao = "Suporte para Telecom"
                };
                listaCategorias.Add(catSuporteT);

                _context.Categoria.AddRange(listaCategorias);
                _context.SaveChangesAsync();
            }

            if (qtdPrioridades == 0)
            {
                var listaPrioridades = new List <prioridades>();

                var prioridadeA = new prioridades()
                {
                    ativo      = true,
                    descricao  = "Prioridade alta",
                    prioridade = "Alta"
                };
                listaPrioridades.Add(prioridadeA);

                var prioridadeM = new prioridades()
                {
                    ativo      = true,
                    descricao  = "Prioridade Media",
                    prioridade = "Media"
                };
                listaPrioridades.Add(prioridadeM);


                var prioridadeB = new prioridades()
                {
                    ativo      = true,
                    descricao  = "Prioridade Baixa",
                    prioridade = "Baixa"
                };
                listaPrioridades.Add(prioridadeB);

                _context.Prioridades.AddRange(listaPrioridades);
                _context.SaveChangesAsync();
            }

            if (!usuarioAdm)
            {
                CreateUser();
            }
        }
Пример #26
0
        //Lista por ID
        public static grupos BuscaGrupoPorID(int id)
        {
            grupos grupo = ContextoSingleton.Instancia.grupos.Find(id);

            return(grupo);
        }
Пример #27
0
 public static ResultadoOperacion actualizarGrupos_Estudiantes(List <estudiantes> listaEstudiantes, grupos g)
 {
     return(actualizarGrupos_Estudiantes(ControladorSingleton.controladorEstudiantes.convertirLista(listaEstudiantes), new Grupo()
     {
         idGrupo = g.idGrupo
     }));
 }
Пример #28
0
 //Salva o grupo
 public static void SalvarGrupo(grupos grupo)
 {
     ContextoSingleton.Instancia.grupos.Add(grupo);
     ContextoSingleton.Instancia.SaveChanges();
 }
Пример #29
0
        // Métodos de inicialización
        public FrmAsignacionDeDocentes(grupos grupo)
        {
            InitializeComponent();

            this.grupo = grupo;
        }
Пример #30
0
        // INSERTS
        public static ResultadoOperacion insertarEstudiantes(IList <estudiantes> listaEstudiantes, grupos g)
        {
            ResultadoOperacion innerRO = null;
            CBTis123_Entities  db      = Vinculo_DB.generarContexto();
            int insertadas             = 0;

            try
            {
                // Primero vemos cuáles ya tiene el grupo...
                IList <grupos_estudiantes> listaActuales = db.grupos_estudiantes.Where(ge => ge.idGrupo == g.idGrupo).ToList();

                // Iteramos sobre los estudiantes que nos pasaron
                foreach (estudiantes e in listaEstudiantes)
                {
                    // Si no existe en el grupo, lo agregamos...
                    grupos_estudiantes ge = listaActuales.FirstOrDefault(ge1 => ge1.idEstudiante == e.idEstudiante);

                    if (ge == null)
                    {
                        grupos_estudiantes geNuevo = new grupos_estudiantes();

                        geNuevo.idEstudiante = e.idEstudiante;
                        geNuevo.idGrupo      = g.idGrupo;

                        db.grupos_estudiantes.Add(geNuevo);
                    }
                }

                // Guardamos cambios
                insertadas = db.SaveChanges();
            }
            catch (Exception e)
            {
                innerRO = ControladorExcepciones.crearResultadoOperacionException(e);
            }

            return
                (insertadas > 0 ?
                 new ResultadoOperacion(
                     EstadoOperacion.Correcto,
                     "Estudiantes del grupo modificados")
                :
                 new ResultadoOperacion(
                     EstadoOperacion.ErrorAplicacion,
                     "Estudiantes del grupo no modificados",
                     null,
                     innerRO));
        }