* Improve dropdown UX for internal/badges Add a "blank" option to the dropdown to list of badges on internal/badges route. Also add some checks to handle if an admin accidentally tries to award a "blank" badge. * Ensure error is surfaced as flash message
26 lines
743 B
Ruby
26 lines
743 B
Ruby
class Internal::BadgesController < Internal::ApplicationController
|
|
layout "internal"
|
|
|
|
def index
|
|
@badges = Badge.all
|
|
end
|
|
|
|
def award_badges
|
|
raise ArgumentError, "Please choose a badge to award" if permitted_params[:badge].blank?
|
|
|
|
usernames = permitted_params[:usernames].split(/\s*,\s*/)
|
|
message = permitted_params[:message_markdown].presence || "Congrats!"
|
|
BadgeRewarder.award_badges(usernames, permitted_params[:badge], message)
|
|
flash[:success] = "BadgeRewarder task ran!"
|
|
redirect_to internal_badges_url
|
|
rescue ArgumentError => e
|
|
flash[:danger] = e.message
|
|
redirect_to "/internal/badges"
|
|
end
|
|
|
|
private
|
|
|
|
def permitted_params
|
|
params.permit(:usernames, :badge, :message_markdown)
|
|
end
|
|
end
|