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 memberships = club_memberships membership = if memberships.loaded? memberships.detect { |m| m.role == "owner" } else memberships.find_by(role: "owner") end membership&.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