Example #1
0
        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);
                    }
                }
            }
        }
Example #2
0
        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;
            }
        }
Example #4
0
        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");
            }
        }
Example #8
0
 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");
            }
        }