Così Ops può emettere fattura dalla scheda club senza cercare il profilo solo tra i pagamenti pending. Co-authored-by: Cursor <cursoragent@cursor.com>
52 lines
1.5 KiB
Ruby
52 lines
1.5 KiB
Ruby
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
|