# app/policies/application_policy.rb
class ApplicationPolicy
  attr_reader :user, :record

  def initialize(user, record)
    @user   = user
    @record = record
  end

  def index?   = user.pode_consolidar? || user.admin?
  def show?    = user.pode_consolidar? || user.admin?
  def create?  = user.pode_consolidar? || user.admin?
  def new?     = create?
  def update?  = user.pode_consolidar? || user.admin?
  def edit?    = update?
  def destroy? = user.admin?

  # Régua padrão de TODAS as policies: pergunta ao perfil de acesso do usuário
  # (User#pode?), não ao papel dele. As chaves estão em Permissao::TODAS.
  def pode?(chave)
    user.pode?(chave)
  end

  # Helpers de papel — LEGADO. Continuam aqui porque `admin?` ainda distingue
  # tipo de conta em pontos que não são permissão (ex.: escopo de listagem).
  # Regra nova não deve usá-los: use `pode?`.
  def admin?
    user.admin?
  end

  def admin_ou_gerente?
    user.admin? || user.gerente?
  end

  class Scope
    def initialize(user, scope)
      @user  = user
      @scope = scope
    end

    def resolve
      @scope.all
    end

    private

    attr_reader :user, :scope
  end
end
