private void DgvRol_CellClick(object sender, DataGridViewCellEventArgs e) { //Funciona solo cuando el usuario hace click en una fila (no en la cabecera) if (e.RowIndex == -1) { return; } //Obtengo el rol correspondiente a la fila seleccionada a partir del ID (primer columna de la fila) var selectedRole = _roles.Find(role => role.Descripcion == (string)DgvRol.Rows[e.RowIndex].Cells[0].Value); if (selectedRole != null) { //Cargo la lista de funcionalidades del rol LstFuncionalidades.DataSource = selectedRole.Funcionalidades; //El usuario tocó el botón de modificar if (e.ColumnIndex == 2) { var insertUpdateVisibility = new FrmABMInsertUpdateRol(selectedRole); insertUpdateVisibility.ShowDialog(); //Si modificó satisfactoriamante el rol, actualizo la grilla if (insertUpdateVisibility.CompleteAction) { RefreshSources(null); } } else if (e.ColumnIndex == 3) { //El usuario tocó el botón de eliminar //El rol seleccionado ya se encuentra eliminado (baja lógica) if (!selectedRole.Activo) { MessageBox.Show("No se puede eliminar la funcionalidad ya que ya se encuentra desactivada", "Atencion"); return; } //Esta tratando de eliminar el rol con el que esta logueado (no lo permito) if (selectedRole.ID == SessionManager.CurrentRol.ID) { MessageBox.Show("No se puede eliminar el rol ya que es el rol con el que actualmente se encuentra logueado", "Atencion"); return; } var dialogAnswer = MessageBox.Show(string.Format("Esta seguro que quiere desactivar el rol {0}?", selectedRole.Descripcion), "Atención", MessageBoxButtons.YesNo); if (dialogAnswer == DialogResult.Yes) { //Defino que ya no este más activo el rol e impacto en la base de datos selectedRole.Activo = false; RolPersistance.Update(selectedRole, null); //Vuelvo a cargar la lista de roles RefreshSources(null); } } } }
private void LblBuscar_Click(object sender, EventArgs e) { try { #region Validations var exceptionMessage = string.Empty; if (TypesHelper.IsEmpty(TxtDescripcion.Text)) { exceptionMessage = "No se puede realizar la busqueda ya que no se informó ningún filtro"; } if (!TypesHelper.IsEmpty(exceptionMessage)) { throw new Exception(exceptionMessage); } #endregion List <Rol> roles = null; if (ChkExacta.Checked) { //Se va a realizar una busqueda exacta (=) var rol = RolPersistance.GetByName(TxtDescripcion.Text); if (rol != null) { roles = _roles = new List <Rol> { rol } } ; } else { //Se va a realizar una busqueda inexacta (LIKE) roles = _roles = RolPersistance.GetByNameLike(TxtDescripcion.Text); } if (roles == null || roles.Count == 0) { throw new Exception("No se encontraron roles según los filtros informados."); } //Recargo los valores de la grilla a partir de los resultados obtenidos en la busqueda RefreshSources(roles); } catch (Exception ex) { MessageBox.Show(ex.Message, "Atención"); } }
private void FrmRegistroUsuario_Load(object sender, EventArgs e) { //Cargo el combo de roles y le seteo la opción default CboRoles.DisplayMember = "Descripcion"; CboRoles.ValueMember = "ID_Rol"; CboRoles.DataSource = RolPersistance.GetAllNotAdmin(); if (_abmEmpresa) { CboRoles.SelectedIndex = 1; CboRoles.Enabled = false; } else if (_abmCliente) { CboRoles.SelectedIndex = 0; CboRoles.Enabled = false; } }
private void RefreshSources(List <Rol> roles) { //Borro lo que esta actualmente en la grilla ClearDataGridView(); var rolesDictionary = new Dictionary <int, Rol>(); #region Get the dictionary of visibilities //El datasource debe ser todos los registros de roles almacenados en la base de datos if (roles == null) { CleanFiltersUI(); _roles = RolPersistance.GetAll(); LstFuncionalidades.DataSource = _roles[0].Funcionalidades; //Convierto todos los roles a un diccionario con entradas de la forma: (ID, Objeto) rolesDictionary = _roles.ToDictionary(a => a.ID, a => a); } else { //El datasource debe ser una lista de roles obtenidas por parametro LstFuncionalidades.DataSource = roles[0].Funcionalidades; //Convierto la lista de roles a un diccionario con entradas de la forma: (ID, Objeto) rolesDictionary = roles.ToDictionary(a => a.ID, a => a); } #endregion //Creo un bind para luego setearselo directamente a la DataGridView var bind = rolesDictionary.Values.Select(a => new { Descripcion = a.Descripcion, Activo = a.Activo }); DgvRol.DataSource = bind.ToList(); //Agrego los botones a cada fila para poder modificar/borrar cada rol AddButtonsColumns(); LstFuncionalidades.DisplayMember = "Descripcion"; LstFuncionalidades.ValueMember = "ID"; }
private void LblGrabar_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 (insertMode) { //Valido que no exista un rol con la descripcion informada if (RolPersistance.GetByName(TxtRol.Text) != null) { throw new Exception("Ya existe un rol con el nombre ingresado."); } #region Inserto el rol con sus funcionalidades var role = new Rol(); role.Activo = ChkActivo.Checked; role.Descripcion = TxtRol.Text; //A partir de los items chequeados, seteo las funcionalidades del objeto a insertar foreach (var checkedItem in LstFuncionalidades.CheckedItems) { var feature = (Funcionalidad)checkedItem; role.Funcionalidades.Add(feature); } var dialogAnswer = MessageBox.Show("Esta seguro que quiere insertar el nuevo rol?", "Atencion", MessageBoxButtons.YesNo); if (dialogAnswer == DialogResult.Yes) { //Impacto en la base RolPersistance.InsertRoleAndFeatures(role); CompleteAction = true; Close(); } #endregion } else { #region Modifico un rol existente y sus funcionalidades CurrentRole.Activo = ChkActivo.Checked; CurrentRole.Descripcion = TxtRol.Text; CurrentRole.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; CurrentRole.Funcionalidades.Add(feature); } var dialogAnswer = MessageBox.Show(string.Format("Esta seguro que quiere modificar el rol {0}?", CurrentRole.Descripcion), "Atencion", MessageBoxButtons.YesNo); if (dialogAnswer == DialogResult.Yes) { //Impacto en la base RolPersistance.UpdateRoleAndFeatures(CurrentRole); CompleteAction = true; Close(); } #endregion } } catch (Exception ex) { MessageBox.Show(ex.Message, "Atención"); } }
private void LblGrabar_Click(object sender, EventArgs e) { try { #region Validaciones var exceptionMessage = string.Empty; if (string.IsNullOrEmpty(TxtNombre.Text)) { exceptionMessage += "El nombre del cliente no puede ser vacío.\n"; } if (string.IsNullOrEmpty(TxtApellido.Text)) { exceptionMessage += "El apellido del cliente no puede ser vacío.\n"; } if (string.IsNullOrEmpty(CboTipoDocumento.Text)) { exceptionMessage += "El tipo de documento del cliente no puede ser vacío.\n"; } if (string.IsNullOrEmpty(TxtDocumento.Text)) { exceptionMessage += "El número de documento del cliente no puede ser vacío.\n"; } else { int nroDoc; if (!int.TryParse(TxtDocumento.Text, out nroDoc)) { exceptionMessage += "El número de documento del cliente no es válido.\n"; } } if (string.IsNullOrEmpty(TxtMail.Text)) { exceptionMessage += "El mail del cliente no puede ser vacío.\n"; } if (string.IsNullOrEmpty(TxtTelefono.Text)) { exceptionMessage += "El teléfono del cliente no puede ser vacío.\n"; } if (string.IsNullOrEmpty(TxtDireccion.Text)) { exceptionMessage += "La dirección del cliente no puede ser vacío.\n"; } if (string.IsNullOrEmpty(TxtCodigoPostal.Text)) { exceptionMessage += "El código postal del cliente no puede ser vacío.\n"; } if (string.IsNullOrEmpty(TxtCuil.Text)) { exceptionMessage += "El CUIL del cliente no puede ser vacío.\n"; } else { if (!TypesHelper.IsCUITValid(TxtCuil.Text)) { exceptionMessage += Environment.NewLine + "El CUIL no es válido.\n"; } } if (!string.IsNullOrEmpty(exceptionMessage)) { throw new Exception(exceptionMessage); } #endregion if (insertMode) { //Valido que no se dupliquen los telefonos ni documentos if (ClientePersistance.GetByPhone(TxtTelefono.Text, this.currentTransaction) != null) { throw new Exception("Ya existe un cliente con el teléfono ingresado."); } if (ClientePersistance.GetByDocument((int)CboTipoDocumento.SelectedValue, Int32.Parse(TxtDocumento.Text), this.currentTransaction) != null) { throw new Exception("Ya existe un cliente con el tipo y número de documento ingresados."); } #region Inserto el nuevo cliente var client = new Cliente(); client.IdUsuario = SessionManager.CurrentUser.ID; client.Nombre = TxtNombre.Text; client.Apellido = TxtApellido.Text; client.TipoDocumento = (int)CboTipoDocumento.SelectedValue; client.NroDocumento = Int32.Parse(TxtDocumento.Text); client.Mail = TxtMail.Text; client.Telefono = TxtTelefono.Text; client.Direccion = TxtDireccion.Text; client.CodigoPostal = TxtCodigoPostal.Text; client.CUIL = TxtCuil.Text; client.FechaNacimiento = DtpFechaNacimiento.Value; var dialogAnswer = MessageBox.Show("¿Está seguro que quiere insertar el nuevo cliente?", "Atencion", MessageBoxButtons.YesNo); if (dialogAnswer == DialogResult.Yes) { //Si es el administrador el que hace el Alta, se genera un usuario con password temporal if (insertDefaultUser) { var user = new Usuario(); user.Username = client.NroDocumento.ToString(); user.Password = SHA256Helper.Encode("temporal"); var userIngresado = UsuarioPersistance.InsertUserTemporal(user, this.currentTransaction); client.IdUsuario = userIngresado.ID; ClientePersistance.InsertClient(client, this.currentTransaction); this.currentTransaction.Commit(); var rol = RolPersistance.GetByName("Cliente"); RolPersistance.InsertUserRole(userIngresado, rol, null); } else { ClientePersistance.InsertClient(client, this.currentTransaction); this.currentTransaction.Commit(); } MessageBox.Show("El Cliente ha sido ingresado con éxito.", "Atención!"); this.Hide(); if (!_abmCliente) { var frmHome = new FrmHome(); frmHome.ShowDialog(); } } #endregion } else { if (TxtTelefono.Text != CurrentCliente.Telefono) { if (ClientePersistance.GetByPhone(TxtTelefono.Text, this.currentTransaction) != null) { throw new Exception("Ya existe un cliente con el teléfono ingresado."); } } var client = new Cliente(); client.IdUsuario = CurrentCliente.IdUsuario; client.Nombre = TxtNombre.Text; client.Apellido = TxtApellido.Text; client.TipoDocumento = (int)CboTipoDocumento.SelectedValue; client.NroDocumento = Convert.ToInt32(TxtDocumento.Text); client.Mail = TxtMail.Text; client.Telefono = TxtTelefono.Text; client.Direccion = TxtDireccion.Text; client.CodigoPostal = TxtCodigoPostal.Text; client.CUIL = TxtCuil.Text; client.FechaNacimiento = DtpFechaNacimiento.Value; var dialogAnswer = MessageBox.Show("¿Está seguro que quiere modificar el cliente?", "Atención", MessageBoxButtons.YesNo); if (dialogAnswer == DialogResult.Yes) { ClientePersistance.UpdateClient(client); CompleteAction = true; this.Hide(); } } } catch (Exception ex) { MessageBox.Show(ex.Message, "Atención"); } }
private void LblGrabar_Click(object sender, EventArgs e) { try { #region Validations var exceptionMessage = string.Empty; if (string.IsNullOrEmpty(TxtRazonSocial.Text)) { exceptionMessage += "La razón social de la empresa no puede ser vacío.\n"; } if (string.IsNullOrEmpty(TxtMail.Text)) { exceptionMessage += "El mail de la empresa no puede ser vacío.\n"; } if (string.IsNullOrEmpty(TxtTelefono.Text)) { exceptionMessage += "El telefono de la empresa no puede ser vacío.\n"; } if (string.IsNullOrEmpty(TxtDireccion.Text)) { exceptionMessage += "La dirección de la empresa no puede ser vacío.\n"; } if (string.IsNullOrEmpty(TxtCodigoPostal.Text)) { exceptionMessage += "El código postal de la empresa no puede ser vacío.\n"; } if (string.IsNullOrEmpty(TxtCiudad.Text)) { exceptionMessage += "La ciudad de la empresa no puede ser vacío.\n"; } if (string.IsNullOrEmpty(TxtCuit.Text)) { exceptionMessage += "El CUIT de la empresa no puede ser vacío.\n"; } if (string.IsNullOrEmpty(TxtNombreContacto.Text)) { exceptionMessage += "El nombre de contacto de la empresa no puede ser vacío.\n"; } if (!string.IsNullOrEmpty(exceptionMessage)) { throw new Exception(exceptionMessage); } #endregion if (insertMode) { if (EmpresaPersistance.GetByBusinessName(TxtRazonSocial.Text, this.currentTransaction) != null) { throw new Exception("Ya existe una empresa con la razón social ingresada."); } if (EmpresaPersistance.GetByCUIT(TxtCuit.Text, this.currentTransaction) != null) { throw new Exception("Ya existe una empresa con el CUIT ingresado."); } #region Inserto la nueva empresa var company = new Empresa(); company.IdUsuario = SessionManager.CurrentUser.ID; company.RazonSocial = TxtRazonSocial.Text; company.Mail = TxtMail.Text; company.Telefono = TxtTelefono.Text; company.Direccion = TxtDireccion.Text; company.CodigoPostal = TxtCodigoPostal.Text; company.Ciudad = TxtCiudad.Text; company.CUIT = TxtCuit.Text; company.NombreContacto = TxtNombreContacto.Text; company.FechaCreacion = DtpFechaCreacion.Value; var dialogAnswer = MessageBox.Show("Esta seguro que quiere insertar la nueva empresa?", "Atencion", MessageBoxButtons.YesNo); if (dialogAnswer == DialogResult.Yes) { //Si es el administrador el que hace el Alta, se genera un usuario con password temporal if (insertDefaultUser) { var user = new Usuario(); user.Username = company.CUIT; user.Password = SHA256Helper.Encode("temporal"); var userIngresado = UsuarioPersistance.InsertUserTemporal(user, this.currentTransaction); company.IdUsuario = userIngresado.ID; EmpresaPersistance.InsertCompany(company, this.currentTransaction); this.currentTransaction.Commit(); var rol = RolPersistance.GetByName("Empresa"); RolPersistance.InsertUserRole(userIngresado, rol, null); } else { EmpresaPersistance.InsertCompany(company, this.currentTransaction); this.currentTransaction.Commit(); } MessageBox.Show("La Empresa ha sido ingresada con éxito.", "Atención!"); this.Hide(); if (!_abmEmpresa) { var frmHome = new FrmHome(); frmHome.ShowDialog(); } } #endregion } else { var company = new Empresa(); company.IdUsuario = CurrentEmpresa.IdUsuario; company.RazonSocial = TxtRazonSocial.Text; company.Mail = TxtMail.Text; company.Telefono = TxtTelefono.Text; company.Direccion = TxtDireccion.Text; company.CodigoPostal = TxtCodigoPostal.Text; company.Ciudad = TxtCiudad.Text; company.CUIT = TxtCuit.Text; company.NombreContacto = TxtNombreContacto.Text; company.FechaCreacion = DtpFechaCreacion.Value; var dialogAnswer = MessageBox.Show("Esta seguro que quiere modificar la empresa?", "Atencion", MessageBoxButtons.YesNo); if (dialogAnswer == DialogResult.Yes) { EmpresaPersistance.UpdateCompany(company); CompleteAction = true; this.Hide(); } } } catch (Exception ex) { MessageBox.Show(ex.Message, "Atención"); } }
public RolLogic() { funcionalidadLogic = new FuncionalidadLogic(); persistance = new RolPersistance(); }
private void LblGrabar_Click(object sender, EventArgs e) { try { #region Validaciones var exceptionMessage = string.Empty; if (string.IsNullOrEmpty(TxtUsuario.Text)) { throw new Exception("El usuario no puede ser vacío."); } if (string.IsNullOrEmpty(TxtContrasena.Text)) { throw new Exception("La contraseña no puede ser vacía."); } if (UsuarioPersistance.GetByUsername(TxtUsuario.Text) != null) { exceptionMessage += Environment.NewLine + "Ya existe un usuario con el nombre ingresado."; } if (!string.IsNullOrEmpty(exceptionMessage)) { throw new Exception(exceptionMessage); } #endregion #region Inserto el nuevo usuario var user = new Usuario(); user.Username = TxtUsuario.Text; user.Password = SHA256Helper.Encode(TxtContrasena.Text); var dialogAnswer = MessageBox.Show("Esta seguro que quiere insertar el nuevo usuario?", "Atencion", MessageBoxButtons.YesNo); if (dialogAnswer == DialogResult.Yes) { using (var transaction = DataBaseManager.Instance().Connection.BeginTransaction(IsolationLevel.Serializable)) { if (_abmEmpresa || _abmCliente) { user = UsuarioPersistance.InsertUserTemporal(user, transaction); } else { user = UsuarioPersistance.InsertUser(user, transaction); } Rol selectedRol = (Rol)CboRoles.SelectedItem; RolPersistance.InsertUserRole(user, selectedRol, transaction); if (!_abmEmpresa && !_abmCliente) { //Cargo los datos en sesion SessionManager.CurrentUser = user; SessionManager.CurrentRol = selectedRol; SessionManager.CurrentRol.Funcionalidades = FuncionalidadPersistance.GetByRole(SessionManager.CurrentRol, transaction); } switch (selectedRol.Descripcion) { case "Cliente": this.Hide(); var frmABMInsertUpdateCliente = new FrmABMInsertUpdateCliente(transaction, _abmCliente, user); frmABMInsertUpdateCliente.ShowDialog(); break; case "Empresa": this.Hide(); var frmABMInsertUpdateEmpresa = new FrmABMInsertUpdateEmpresa(transaction, _abmEmpresa, user); frmABMInsertUpdateEmpresa.ShowDialog(); break; default: transaction.Commit(); this.Hide(); var frmHome = new FrmHome(); frmHome.ShowDialog(); break; } } } #endregion } catch (Exception ex) { MessageBox.Show(ex.Message, "Atención"); } }