# frozen_string_literal: true

class Admin::UsersController < Admin::ApplicationController
  def index
    @pagy, @users = pagy(
      User.order(admin: :desc, articles_count: :desc),
      items: 20
    )
  end

  def toggle_admin
    @user = User.find(params[:id])
    @user.toggle!(:admin)
    @user.reload
    if @user.admin?
      message = "你获得了Admin权限"
      audit! :grant_admin, @user
    else
      message = "你被移除了Admin权限"
      audit! :revoke_admin, @user
    end
    inbox = @user.inboxes.create(from_user: current_user, to_user: @user, box_type: "Admin", message: message)
    InboxMailer.with(user: @user, inbox: inbox).notify.deliver_later
    redirect_to admin_users_path
  end

  def toggle_writer
    @user = User.find(params[:id])
    @user.toggle!(:is_writer)
    @user.reload
    if @user.is_writer?
      message = "你获得了Writer权限"
      audit! :grant_writer, @user
    else
      message = "你被移除了Writer权限"
      audit! :revoke_writer, @user
    end
    inbox = @user.inboxes.create(from_user: current_user, to_user: @user, box_type: "Admin", message: message)
    InboxMailer.with(user: @user, inbox: inbox).notify.deliver_later
    redirect_to admin_users_path
  end

  def toggle_reviewer
    @user = User.find(params[:id])
    @user.toggle!(:is_reviewer)
    @user.reload
    if @user.is_reviewer?
      message = "你获得了Reviewer权限"
      audit! :grant_reviewer, @user
    else
      message = "你被移除了Reviewer权限"
      audit! :revoke_reviewer, @user
    end
    inbox = @user.inboxes.create(from_user: current_user, to_user: @user, box_type: "Admin", message: message)
    InboxMailer.with(user: @user, inbox: inbox).notify.deliver_later
    redirect_to admin_users_path
  end
end
