module Admin::UsersHelper

  # Provide checkbox to activate/deactivate user
  def admin_user_activation_link(user)
    if user.active? && user.is_registration_completed?
      if user.is_manually_deactivated?
        link_to activate_admin_user_path(user), method: :patch, remote: true, data: {confirm: "Do you want to activate user - \"#{user.name}\"?"} do
          check_box_tag 'activate', true, false
        end
      else
        link_to deactivate_admin_user_path(user), method: :patch, remote: true, data: {confirm: "Do you want to deactivate user - \"#{user.name}\"."} do
          check_box_tag 'deactivate', true, true
        end
      end
    else
      '-'
    end
  end

  # Provides checkbox to mark user as admin/non-admin
  def admin_user_admin_link(user)
    if user.active? && user.is_registration_completed?
      if user.admin?
        link_to unmark_admin_admin_user_path(user), method: :patch, remote: true, data: {confirm: "Do you want to revoke admin privileges of user - \"#{user.full_name}\"?"} do
          check_box_tag 'unmark_admin', true, true
        end
      else
        link_to mark_admin_admin_user_path(user), method: :patch, remote: true, data: {confirm: "Do you want to add admin privileges for user - \"#{user.full_name}\"?"} do
          check_box_tag 'mark_admin', true, false
        end
      end
    else
      '-'
    end
  end

  # To upload user image
  def admin_user_image_upload_form(user)
    controller = Admin::UsersController.new
    controller.request = request
    controller.render_to_string(partial: 'admin/users/upload_image_form', locals: {user: user}).to_s.html_safe
  end

  # Link to get activity log of the user
  def user_activity_link(user)
    link_to "Activity", user_activity_admin_user_path(user), method: :get
  end

  # Link to get user details
  def user_details_link(user)
    link_to "#{user.full_name}", admin_user_path(user), method: :get
  end

  # Link to view user transactions
  def view_user_transactions_link(user)
    link_to "View User Transactions", user_transactions_admin_user_path(user), method: :get
  end

  def user_impersonate_link(user)
    link_to "Impersonate User", impersonate_admin_user_path(user), method: :get
  end

end
