class Club < ApplicationRecord include Brandable include Coverable include ClubBillingProfile has_many :club_memberships, dependent: :destroy has_many :users, through: :club_memberships has_many :teams, dependent: :destroy has_many :tournaments, dependent: :restrict_with_error 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