Blocca la seconda diretta sullo stesso utente, registra gli abusi in admin e presenta la copertina come grafica caricata dalla società, con demo Team MLTV. Co-authored-by: Cursor <cursoragent@cursor.com>
75 lines
2.5 KiB
Ruby
75 lines
2.5 KiB
Ruby
module Admin
|
|
class ClubsController < BaseController
|
|
before_action :set_club, only: %i[show grant_comped revoke_comped set_quote revoke_quote]
|
|
|
|
def index
|
|
@clubs = Club.includes(:teams, :billing_quote, subscription: %i[plan admin_comped_by])
|
|
.order(:name)
|
|
end
|
|
|
|
def show
|
|
@subscription = @club.subscription || @club.build_subscription(plan: Plan["free"], status: "active")
|
|
@plans = Plan.ordered.reject { |p| p.slug == "free" }
|
|
@teams = @club.teams.order(:name)
|
|
@quote = @club.active_billing_quote
|
|
@concurrency_violations = StreamConcurrencyViolation.for_club(@club.id).recent.limit(20)
|
|
end
|
|
|
|
def grant_comped
|
|
Billing::AdminCompedSubscription.grant(
|
|
club: @club,
|
|
plan_slug: params.require(:plan_slug),
|
|
reason: params[:reason],
|
|
admin: current_admin_account
|
|
)
|
|
redirect_back_or_club notice: t("admin.flash.comped_granted", plan: Plan[params[:plan_slug]].name, club: @club.name)
|
|
rescue Billing::AdminCompedSubscription::Error, ActiveRecord::RecordInvalid => e
|
|
redirect_back_or_club alert: e.message
|
|
end
|
|
|
|
def revoke_comped
|
|
Billing::AdminCompedSubscription.revoke(club: @club, admin: current_admin_account)
|
|
redirect_back_or_club notice: t("admin.flash.comped_revoked", club: @club.name)
|
|
rescue Billing::AdminCompedSubscription::Error => e
|
|
redirect_back_or_club alert: e.message
|
|
end
|
|
|
|
def set_quote
|
|
quote = Billing::SetClubQuote.upsert(
|
|
club: @club,
|
|
plan_slug: params.require(:plan_slug),
|
|
interval: params[:interval],
|
|
amount_euros: params[:amount_euros],
|
|
note: params[:note],
|
|
admin: current_admin_account
|
|
)
|
|
redirect_back_or_club notice: t(
|
|
"admin.flash.quote_saved",
|
|
club: @club.name,
|
|
plan: quote.plan.name,
|
|
amount: quote.formatted_amount
|
|
)
|
|
rescue Billing::SetClubQuote::Error, ActionController::ParameterMissing => e
|
|
redirect_back_or_club alert: e.message
|
|
end
|
|
|
|
def revoke_quote
|
|
Billing::SetClubQuote.revoke(club: @club, admin: current_admin_account)
|
|
redirect_back_or_club notice: t("admin.flash.quote_revoked", club: @club.name)
|
|
rescue Billing::SetClubQuote::Error => e
|
|
redirect_back_or_club alert: e.message
|
|
end
|
|
|
|
private
|
|
|
|
def set_club
|
|
@club = Club.find(params[:id])
|
|
end
|
|
|
|
def redirect_back_or_club(notice: nil, alert: nil)
|
|
target = params[:return_to].presence || admin_club_path(@club)
|
|
redirect_to target, notice: notice, alert: alert
|
|
end
|
|
end
|
|
end
|