public static void ModificarRolYFuncionalidades(Rol rol) { /* * Lo tengo que hacer transaccionado ya que no quiero que pueda llegar a quedar un rol insertado * sin las funcionalidades asociadas debido a un error */ using (var transaccion = DBManager.Instance().Connection.BeginTransaction(IsolationLevel.Serializable)) { try { Actualizar(rol, transaccion); if (FuncionalidadPersistencia.EliminarPorRol(rol, transaccion) > 0) if (FuncionalidadPersistencia.InsertarPorRol(rol, transaccion) > 0) { //La unica forma que se realice la transaction: borro todas las funcionalidades viejas e inserto las nuevas transaccion.Commit(); } else //Tuvo que haber insertado por lo menos una, sino es un error transaccion.Rollback(); else //Tuvo que haber insertado por lo menos una, sino es un error transaccion.Rollback(); } catch (Exception) { transaccion.Rollback(); throw new Exception("Se produjo un error durante la modificacion del rol"); } } }
public static List<Funcionalidad> ObtenerPorRol(Rol rol) { //Obtengo todas las funcionalidades asociadas a determinado rol var param = new List<SPParameter> { new SPParameter("ID_Rol", rol.ID) }; var sp = new StoreProcedure(DBQueries.Funcionalidad.SPGetFuncionalidadesPorRol, param); //Retorno una lista de Funcionalidad a partir de un ExecuteReader return sp.ExecuteReader<Funcionalidad>(); }
public FrmABMRolAltasModificaciones(Rol rol) { InitializeComponent(); //Si no se le pasa ningún rol por parámetro (NULL) se considera que esta trabajando en modo alta modoModificacion = !(rol == null); if (modoModificacion) RolActual = rol; }
public static int EliminarPorRol(Rol rol, SqlTransaction transaccion) { var param = new List<SPParameter> { new SPParameter("ID_Rol", rol.ID) }; var sp = (transaccion != null) ?new StoreProcedure(DBQueries.Rol.SPEliminarFuncionalidadesPorRol, param,transaccion) : new StoreProcedure(DBQueries.Rol.SPEliminarFuncionalidadesPorRol, param); //Retorno la cantidad de funcionalidades eliminadas a partir de un ExecuteNonQuery return sp.ExecuteNonQuery(transaccion); }
public static int Actualizar(Rol rol, SqlTransaction transaccion) { var param = new List<SPParameter> { new SPParameter("ID_Rol", rol.ID), new SPParameter("Descripcion", rol.Descripcion), new SPParameter("Habilitado", rol.Habilitado) }; var sp = (transaccion != null) ? new StoreProcedure(DBQueries.Rol.SPActualizarRolPorID, param, transaccion) : new StoreProcedure(DBQueries.Rol.SPActualizarRolPorID, param); return sp.ExecuteNonQuery(transaccion); }
public static int InsertarPorRol(Rol rol, SqlTransaction transaccion) { var regsAfectados = 0; foreach (var feature in rol.Funcionalidades) { var param = new List<SPParameter> { new SPParameter("ID_Funcionalidad", feature.ID), new SPParameter("ID_Rol", rol.ID) }; var sp = (transaccion != null) ? new StoreProcedure(DBQueries.Rol.SPInsertarFuncionalidadPorRol, param,transaccion) : new StoreProcedure(DBQueries.Rol.SPInsertarFuncionalidadPorRol, param); regsAfectados += sp.ExecuteNonQuery(transaccion); } //Retorno la cantidad de funcionalidades insertadas a partir de un ExecuteNonQuery return regsAfectados; }
public static void InsertarRolYFucionalidades(Rol rol) { /* * Lo tengo que hacer transaccionado ya que no quiero que pueda llegar a quedar un rol insertado * sin las funcionalidades asociadas debido a un error */ using (var transaccion = DBManager.Instance().Connection.BeginTransaction(IsolationLevel.Serializable)) { try { rol = Insertar(rol, transaccion); FuncionalidadPersistencia.InsertarPorRol(rol, transaccion); transaccion.Commit(); } catch (Exception) { transaccion.Rollback(); throw new Exception("Se produjo un error durante la insercion del rol"); } } }
private static Rol Insertar(Rol rol, SqlTransaction transaccion) { var param = new List<SPParameter> { new SPParameter("Descripcion", rol.Descripcion), new SPParameter("Habilitado", rol.Habilitado) }; var sp = (transaccion != null) ? new StoreProcedure(DBQueries.Rol.SPInsertarRol, param, transaccion) : new StoreProcedure(DBQueries.Rol.SPInsertarRol, param); rol.ID = (int)sp.ExecuteScalar(transaccion); return rol; }
private void BtnGuardar_Click(object sender, EventArgs e) { try { #region Validations var exceptionMessage = string.Empty; if (string.IsNullOrEmpty(TxtRol.Text)) exceptionMessage += "El nombre del rol no puede ser vacío."; if (LstFuncionalidades.CheckedItems.Count == 0) exceptionMessage += Environment.NewLine + "Debe seleccionar por lo menos una funcionalidad."; if (!string.IsNullOrEmpty(exceptionMessage)) throw new Exception(exceptionMessage); #endregion if (!modoModificacion) { //Valido que no exista un rol con la descripcion informada if (RolPersistencia.ObtenerRolPorNombre(TxtRol.Text) != null) throw new Exception("Ya existe un rol con el nombre ingresado."); #region Inserto el rol con sus funcionalidades var rol = new Rol(); rol.Habilitado = !(ChkInhabilitado.Checked); rol.Descripcion = TxtRol.Text; //A partir de los items chequeados, seteo las funcionalidades del objeto a insertar foreach (var checkedItem in LstFuncionalidades.CheckedItems) { var funcionalidad = (Funcionalidad)checkedItem; rol.Funcionalidades.Add(funcionalidad); } var dialogAnswer = MessageBox.Show("Esta seguro que quiere insertar el nuevo rol?", "Atencion", MessageBoxButtons.YesNo); if (dialogAnswer == DialogResult.Yes) { //Impacto en la base RolPersistencia.InsertarRolYFucionalidades(rol); AccionCompleta = true; Close(); } #endregion } else { #region Modifico un rol existente y sus funcionalidades RolActual.Habilitado = !(ChkInhabilitado.Checked); RolActual.Descripcion = TxtRol.Text; RolActual.Funcionalidades = new List<Funcionalidad>(); //A partir de los items chequeados, seteo las funcionalidades del objeto a insertar foreach (var checkedItem in LstFuncionalidades.CheckedItems) { var feature = (Funcionalidad)checkedItem; RolActual.Funcionalidades.Add(feature); } var dialogAnswer = MessageBox.Show(string.Format("Esta seguro que quiere modificar el rol {0}?", RolActual.Descripcion), "Atencion", MessageBoxButtons.YesNo); if (dialogAnswer == DialogResult.Yes) { //Impacto en la base RolPersistencia.ModificarRolYFuncionalidades(RolActual); AccionCompleta = true; Close(); } #endregion } } catch (Exception ex) { MessageBox.Show(ex.Message, "Atención"); } }