Files
MatchLiveTv/backend/app/models/club.rb
T
eminuxandCursor e436f5ece4 Aggiunge pagamento con bonifico e importo concordato per società.
Il piano si attiva solo dopo la conferma admin; Stripe resta a listino se non c'è un prezzo commerciale.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 23:20:43 +02:00

43 lines
1.3 KiB
Ruby

class Club < ApplicationRecord
include Brandable
include ClubBillingProfile
has_many :club_memberships, dependent: :destroy
has_many :users, through: :club_memberships
has_many :teams, dependent: :destroy
has_one :youtube_credential, dependent: :destroy
has_one :subscription, dependent: :destroy
has_one :billing_quote, -> { where(active: true) }, class_name: "Billing::ClubQuote", inverse_of: :club
has_many :billing_quotes, class_name: "Billing::ClubQuote", dependent: :destroy, inverse_of: :club
has_many :billing_payments, class_name: "Billing::Payment", dependent: :destroy
has_many :billing_invoices, class_name: "Billing::Invoice", dependent: :destroy
has_many :billing_transfer_orders, class_name: "Billing::TransferOrder", dependent: :destroy
validates :name, presence: true
validates :sport, presence: true
validates :primary_color, presence: true
validates :secondary_color, presence: true
def owner
club_memberships.find_by(role: "owner")&.user
end
def owned_by?(user)
club_memberships.exists?(user: user, role: "owner")
end
def active_billing_quote
billing_quote
end
def pending_transfer_order
billing_transfer_orders.awaiting_payment.first
end
private
def branding_parent
nil
end
end