Ejemplo n.º 1
0
        private void btnIngresar_Click(object sender, EventArgs e)
        {
            if (txtUsuario.Text == "")
            {
                lblError.Text = "Ingrese usuario";
            }
            else if (txtContrasena.Text == "")
            {
                lblError.Text = "Ingrese contraseña";
            }
            else
            {
                GestorDB gestor = new GestorDB();
                int      result;
                try
                {
                    gestor.conectar();
                    gestor.generarStoredProcedure("autenticar_usuario");
                    gestor.parametroPorValor("@usuario", txtUsuario.Text);
                    gestor.parametroPorValor("@contrasenna", txtContrasena.Text);
                    gestor.parametroPorReferencia("@id", SqlDbType.Int);
                    result = gestor.ejecutarStoredProcedure();
                    gestor.desconectar();
                }
                catch (Exception)
                {
                    result = -1;
                }

                if (result == 0)
                {
                    lblError.Text = "El usuario es inválido";
                }
                else
                {
                    if (result == 1)
                    {
                        lblError.Text = "La contraseña es inválida";
                    }
                    else if (result == 2 || result == 3)
                    {
                        int userID = Convert.ToInt32(gestor.obtenerValor("@id"));

                        gestor.conectar();
                        string query = "SELECT COUNT(*) AS cant_roles " +
                                       "FROM PEAKY_BLINDERS.roles_por_usuario RU " +
                                       "JOIN PEAKY_BLINDERS.roles R ON RU.id_rol = R.id_rol " +
                                       "WHERE R.habilitado = 1 AND RU.id_usuario = '" + userID.ToString() + "'";
                        gestor.consulta(query);

                        SqlDataReader lector             = gestor.obtenerRegistros();
                        int           cantRolesAsignados = 0;
                        if (lector.Read())
                        {
                            cantRolesAsignados = Convert.ToInt32(lector["cant_roles"]);
                        }

                        gestor.desconectar();

                        switch (cantRolesAsignados)
                        {
                        case 0:
                            lblError.Text = "Usuario sin roles habilitados asignados";
                            break;

                        case 1:
                            gestor.conectar();
                            string query2 = "SELECT RU.id_rol " +
                                            "FROM PEAKY_BLINDERS.roles_por_usuario RU " +
                                            "JOIN PEAKY_BLINDERS.roles R ON RU.id_rol = R.id_rol " +
                                            "WHERE R.habilitado = 1 AND RU.id_usuario = '" + userID + "'";
                            gestor.consulta(query2);
                            SqlDataReader lector2 = gestor.obtenerRegistros();
                            if (lector2.Read())
                            {
                                int  rolID = Convert.ToInt32(lector2["id_rol"].ToString());
                                Form formDestino;

                                if (result == 2)
                                {
                                    formDestino = new FormMenuPrincipal(userID, rolID);
                                }
                                else
                                {
                                    formDestino = new FormNuevaContrasena(userID, rolID, true);
                                }

                                this.Hide();
                                formDestino.Show();
                            }
                            break;

                        default:
                            FormElegirRol formElegirRol;

                            if (result == 2)
                            {
                                formElegirRol = new FormElegirRol(userID, false);
                            }
                            else
                            {
                                formElegirRol = new FormElegirRol(userID, true);
                            }

                            this.Hide();
                            formElegirRol.Show();
                            break;
                        }
                    }
                    else if (result == 4)
                    {
                        lblError.Text = "La contraseña es inválida";
                        MessageBox.Show("Su cuenta ha sido inhabilitada por realizar 3 intentos incorrectos, comúniquese con un administrador", "ALERTA");
                    }
                    else if (result == 5)
                    {
                        lblError.Text = "El usuario se encuentra inhabilitado";
                    }
                    else
                    {
                        lblError.Text = "Error de conexión a la base de datos";
                    }
                }
            }
            lblError.Visible = true;
        }