private void aceptar_Click(object sender, EventArgs e)
        {
            if (tbUsername.Text == "")
            {
                MessageBox.Show(@"Ingrese un usuario.");
                return;
            }

            _username = tbUsername.Text;
            Boolean existeUsuario = this.db.Consultar("SELECT Id, Username, Password, Cant_Login_Fallidos FROM [CAMPUS_ANALYTICA].[Usuario] WHERE Username = '******' AND Cant_Login_Fallidos < 3 AND Estado = 'A'");

            if (!existeUsuario)
            {
                MessageBox.Show(@"El usuario no existe en la base de datos o está bloqueado.");
                tbPassword.Text = "";
                tbUsername.Text = "";
                tbUsername.Focus();

                return;
            }

            if (tbPassword.Text == "")
            {
                MessageBox.Show(@"Ingrese el password.");
                return;
            }

            _hashPass = this.Hash(tbPassword.Text.Trim());
            _password = tbPassword.Text.Trim();

            _consulta = this.db.Consultar("SELECT Id, Username, Password, Cant_Login_Fallidos FROM [CAMPUS_ANALYTICA].[Usuario] WHERE Username = '******' AND Cant_Login_Fallidos < 3 AND Estado = 'A'");
            if (!_consulta)
            {
                MessageBox.Show(@"Usuario no existe o está bloqueado.");
                return;
            }

            this.db.Leer();
            String dbUsername         = this.db.ObtenerValor("Username");
            String dbPassword         = this.db.ObtenerValor("Password");
            int    dbUsuarioId        = Int32.Parse(this.db.ObtenerValor("Id"));
            int    dbIntentosFallidos = Int32.Parse(this.db.ObtenerValor("Cant_Login_Fallidos"));

            if (_password == "123")
            {
                MessageBox.Show("Debe cambiar la contraseña");
                PalcoNet.Registro_de_Usuario.AltaUsuario cambioPass = new Registro_de_Usuario.AltaUsuario(db, dbUsuarioId);
                DialogResult res = cambioPass.ShowDialog();
            }
            if ((_password == dbPassword) || (_hashPass == dbPassword)) // Pregunta por el password (para usuarios migrados) o por el hash (nuevos usuarios)
            {
                if (dbIntentosFallidos > 0)                             // Si ingresó correctamente su password, y si tenía intentos fallidos, los resetea
                {
                    this.db.Ejecutar("UPDATE [CAMPUS_ANALYTICA].[Usuario] SET Cant_Login_Fallidos = 0 WHERE Username = '******'");
                }

                // Revisa si el usuario tiene más de un Rol
                _consulta = this.db.Consultar("SELECT COUNT(*) 'Cantidad' FROM [CAMPUS_ANALYTICA].[Usuario_Rol] WHERE Usuario_Id = " + dbUsuarioId);
                this.db.Leer();
                Int32 cantidadRoles = Int32.Parse(this.db.ObtenerValor("Cantidad"));

                if (cantidadRoles == 0)
                {
                    MessageBox.Show(@"El usuario no tiene roles asignados.");
                    return;
                }

                if (cantidadRoles > 1)
                {
                    MessageBox.Show(@"El usuario tiene más de un rol asignado, por favor seleccione uno.");
                    PalcoNet.Login.SelRol f = new PalcoNet.Login.SelRol(this.db, this._username);
                    f.pasarRol += new SelRol.delegar(GuardarRolAsignado); // Asignar evento guardarRolAsignado al tipo SelRol.delegar para obtener el valor del otro form
                    DialogResult res = f.ShowDialog();                    // Comunicación entre formularios
                    if (res == DialogResult.OK)                           // Cuando vuelve del otro Form
                    {
                        GuardarRolAsignado(RolSeleccionado);
                    }
                }
                else
                {
                    Boolean existeR = this.db.Consultar("SELECT Rol_Id FROM [CAMPUS_ANALYTICA].[Usuario_Rol] WHERE Usuario_Id = " + dbUsuarioId);
                    if (existeR)
                    {
                        this.db.Leer();
                        GuardarRolAsignado(Decimal.Parse(this.db.ObtenerValor("Rol_Id")));
                    }
                }


                this.db.Ejecutar("INSERT [dbo].[Logins] ([User],[FechaHora],[LoginCorrecto],[NroLoginFallido]) VALUES (" + dbUsuarioId + ", GETDATE(), 'A', 0)");

                // ABRO EL MENU
                MenuPrincipal menu = new MenuPrincipal(db, _username);
                menu.FormClosed += new FormClosedEventHandler(menu.CierraMenu);
                menu.Ingreso(_username, RolSeleccionado); // Ingresa al menu principal
                menu.Show();                              //Se despliega el menu principal
                this.Hide();                              //Ocultar login
            }
            else
            {
                MessageBox.Show(@"El password ingresado es incorrecto.");
                this.db.Ejecutar("UPDATE [CAMPUS_ANALYTICA].[Usuario] SET Cant_Login_Fallidos = Cant_Login_Fallidos + 1 WHERE Id = '" + dbUsuarioId + "'");
                if (dbIntentosFallidos == 2)
                {
                    this.db.Ejecutar("UPDATE [CAMPUS_ANALYTICA].[Usuario] SET Estado = 'B' WHERE Id = " + dbUsuarioId);
                    MessageBox.Show(@"El usuario se ha inhabilitado debido a que se superó la cantidad de intentos fallidos.");
                }
                dbIntentosFallidos = dbIntentosFallidos + 1;
                this.db.Ejecutar("INSERT [dbo].[Logins] ([User],[FechaHora],[LoginCorrecto],[NroLoginFallido]) VALUES (" + dbUsuarioId + ", GETDATE(), 'B', " + dbIntentosFallidos + ")");
            }
        }
 public void nuevoUsuario(Decimal cliId)
 {
     PalcoNet.Registro_de_Usuario.AltaUsuario nuevoUsuario = new Registro_de_Usuario.AltaUsuario(this.db, 2, cliId);
     DialogResult res = nuevoUsuario.ShowDialog();
 }
 private void altaUsuario_Click(object sender, EventArgs e)
 {
     PalcoNet.Registro_de_Usuario.AltaUsuario nuevoUsr = new Registro_de_Usuario.AltaUsuario(db);
     DialogResult res = nuevoUsr.ShowDialog();
 }