private void addFunction_Click(object sender, EventArgs e) { if (!newRol) { Funcionalidades modificacion = new Funcionalidades((int)unRol.Cells["idRol"].Value); modificacion.FormClosed += new System.Windows.Forms.FormClosedEventHandler(FuncionalidadesCerrada); modificacion.Show(); } else { System.Windows.Forms.MessageBox.Show("Debe Guardar Primero el Rol antes de asignar Funcionalidad"); } }
} // FIN insertar() // Vamos a actualizar un rol existente (nombreRol existe en la BD) public static bool actualizar(string nombreRolAnterior, string nombreRol, Dictionary <string, bool> funcionalidades) { // 1. Primero insertamos el nombre del rol (si no existe) string queryActualizarRol = "UPDATE LOS_BARONES_DE_LA_CERVEZA.Roles " + "SET nombre_rol = @nombre_rol " + "WHERE nombre_rol = @nombre_rol_anterior"; List <Parametro> parametros = new List <Parametro>(); Parametro paramNombreRol = new Parametro("@nombre_rol", SqlDbType.NVarChar, nombreRol, 100); parametros.Add(paramNombreRol); Parametro paramNombreRolAnterior = new Parametro("@nombre_rol_anterior", SqlDbType.NVarChar, nombreRolAnterior, 100); parametros.Add(paramNombreRolAnterior); Query actualizarRol = new Query(queryActualizarRol, parametros); int cantidadFilasInsertadas = actualizarRol.ejecutarNonQuery(); // filas insertadas puede ser 0 o 1 // 2. Ahora insertamos/actualizamos las funcionalidades del rol foreach (KeyValuePair <string, bool> funcionalidad in funcionalidades) { if (funcionalidad.Value.Equals(true)) { // Si se seleccionó la funcionalidad actual la insertamos Funcionalidades.insertar(nombreRol, funcionalidad.Key); } else { // Si la funcionalidad actual NO está marcada, entonces debemos eliminarla (si antes de editar lo estaba) Funcionalidades.eliminar(nombreRol, funcionalidad.Key); } } // Fin foreach // Si llegamos a este punto significa que el nuevo rol y sus funcionalidades se insertaron/modificaron correctamente return(true); } // FIN actualizar()
private void btnCrearRol_Click(object sender, EventArgs e) { // 1. Primero obtenemos el nombre del nuevo rol que el usuario ingreso string nombreRol = txtbxNombreRol.Text; // 2. Validamos que haya NO se haya ingresado un nombre vacío if (NombreRol.campoNombreVacío(nombreRol).Equals(true)) { MensajeBox.error("Debe ingresar un nombre para el rol."); return; } // 3. Si se está modificando el Rol_Cliente, validamos que NO se esté modificando el nombre del rol if (rolAEditar.Equals(DEF.ROL_CLIENTE) && !nombreRol.Equals(DEF.ROL_CLIENTE)) { MensajeBox.info("No se puede cambiar el nombre del rol Cliente"); return; } // 3. Validamos que el nombre del rol esté disponible if (nombreRol != rolAEditar) { if (NombreRol.estaDisponible(nombreRol).Equals(false)) { MensajeBox.error("El nombre elegido para el rol ya se encuentra en uso. Por favor, ingrese uno diferente."); return; } } // Si nombreRol != rolAEditar significa que estamos en modo edición y el usuario // cambió el nombre del rol. // 4. Capturamos los checkbox de funcionalidades seleccionados Dictionary <string, bool> funcionalidades = Funcionalidades.seleccionadas(chbxAbmCruceros.Checked, chbxAbmPuertos.Checked, chbxAbmRecorridos.Checked, chbxAbmRol.Checked, chbxComprarReservarViaje.Checked, chbxGenerarViaje.Checked, chbxListadosEstadisticos.Checked, chbxPagoReserva.Checked); // 5. Validamos que el usuario haya seleccionado al menos una funcionalidad if (Funcionalidades.alMenosUna(funcionalidades).Equals(false)) { // El usuario NO selecciono ninguna funcionalidad MensajeBox.error("Debe seleccionar al menos una funcionalidad."); return; } // 6. En este punto ya podemos insertar o actualizar el nuevo rol en la BD if (modo.Equals("EDICION")) { /*** INICIO MODO EDICIÓN ***/ // rolAEditar tiene el valor del nombre de rol anterior y nombreRol el nuevo bool rolActualizado = Rol.actualizar(rolAEditar, nombreRol, funcionalidades); if (rolActualizado.Equals(true)) { MensajeBox.info("El rol se actualizó correctamente."); rolAEditar = nombreRol; // El rol anterior ahora es el nuevo rol return; } else { MensajeBox.error("El rol no se pudo actualizar."); return; } } /*** FIN MODO EDICIÓN ***/ // Si no estamos en modo edición es que vamos a insertar un rol nuevo bool rolInsertado = Rol.insertar(nombreRol, funcionalidades); if (rolInsertado.Equals(true)) { // El rol se inserto correctamente MensajeBox.info("El nuevo rol se creo correctamente."); return; } else { // El rol NO se pudo insertar MensajeBox.error("El nuevo rol no se pudo crear. Intente nuevamente."); return; } } // FIN btnCrearRol_Click()