private void cmdAgregar_Click(object sender, EventArgs e) { //SI EL NOMBRE ES DISTINTO, LO MODIFCO if (unRol.Nombre != txtRol.Text) { Roles.ModificarNombre(txtRol.Text, unRol.Id); } Roles.CambiarEstado(unRol.Id, cbHabilitado.Checked); //LISTA DE FUNCIONALIDADES QUE TIENE ESE ROL List <Funcionalidad> listaQueTiene = Funcionalidades.ObtenerFuncionalidades(unRol.Id); //LISTA DE FUNCIONALIDADES CHEKEADAS List <Funcionalidad> listaDeFunc = new List <Funcionalidad>(); foreach (Funcionalidad unaFunc in grillaFuncionalidades.CheckedItems) { listaDeFunc.Add(unaFunc); } //DOY DE BAJA LAS FUNC QUE YA NO ESTAN foreach (Funcionalidad unaFunc in listaQueTiene) { Funcionalidades.EliminarFuncionalidadPorRol(unRol.Id, unaFunc); } //DOY DE ALTA LAS NUEVAS foreach (Funcionalidad unaFunc in listaDeFunc) { Funcionalidades.AgregarFuncionalidadEnRol(unRol.Id, unaFunc); } MessageBox.Show("Se ha modificado el rol con éxito", "Enhorabuena!", MessageBoxButtons.OK); this.Close(); }