Billing Stripe, link regia mobile e staff solo trasmissione.

Aggiunge fatturazione club, pagina regia condivisibile senza account, roster squadre e rimuove la modalità controller dall'app (v1.1.0).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-29 07:23:13 +02:00
parent 4083bc5dee
commit f4b7be0f80
156 changed files with 5033 additions and 2033 deletions

View File

@@ -48,11 +48,15 @@ module Teams
end
def staff_count
staff_count_for("transmission") + staff_count_for("regia")
staff_count_for("transmission")
end
def staff_count_for(kind)
members_count_for(kind) + pending_invitations_count_for(kind)
def staff_count_for(_kind = "transmission")
staff_coverage.covered_count
end
def staff_assigned_for(_kind = "transmission")
staff_coverage.assigned_count
end
def members_count
@@ -149,29 +153,19 @@ module Teams
def assert_can_invite!(staff_kind: "transmission")
return unless active?
kind = staff_kind.to_s
unless TeamInvitation::STAFF_KINDS.include?(kind)
raise EntitlementError.new("Ruolo staff non valido", code: "invalid_staff_kind")
end
limit = staff_limit_for(kind)
limit = max_staff_transmission
return if limit.nil?
used = staff_count_for(kind)
used = staff_assigned_for
return if used < limit
label = kind == "regia" ? "regia" : "trasmissione"
raise EntitlementError.new(
"Limite staff #{label} raggiunto (#{limit} all'anno). Passa a un piano superiore.",
"Limite responsabili trasmissione raggiunto (#{limit} all'anno). Passa a un piano superiore.",
code: "staff_limit_reached",
billing_url: billing_url
)
end
def staff_limit_for(kind)
kind == "regia" ? max_staff_regia : max_staff_transmission
end
def assert_can_connect_youtube!
unless premium_full?
raise EntitlementError.new(
@@ -216,10 +210,8 @@ module Teams
staff_manage_url: staff_manage_url,
max_staff: max_staff,
max_staff_transmission: max_staff_transmission,
max_staff_regia: max_staff_regia,
staff_used: staff_count,
staff_transmission_used: staff_count_for("transmission"),
staff_regia_used: staff_count_for("regia"),
concurrent_streams_used: concurrent_streams_used,
concurrent_streams_limit: concurrent_streams_limit,
recordings_enabled: can_access_recordings?,
@@ -230,6 +222,10 @@ module Teams
}
end
def staff_coverage
@staff_coverage ||= StaffCoverage.new(@team)
end
private
def ensure_free_subscription!