Files
MatchLiveTv/backend/app/models/team.rb
Emiliano Frascaro f4b7be0f80 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>
2026-05-29 07:23:13 +02:00

62 lines
1.3 KiB
Ruby

class Team < ApplicationRecord
include Brandable
belongs_to :club
has_many :user_teams, dependent: :destroy
has_many :users, through: :user_teams
has_many :matches, dependent: :destroy
has_one :youtube_credential, dependent: :destroy
has_many :recordings, dependent: :destroy
has_many :team_invitations, dependent: :destroy
has_many :roster_members, class_name: "TeamRosterMember", dependent: :destroy
has_one_attached :photo_file
validates :name, presence: true
validate :photo_file_type, if: -> { photo_file.attached? }
def subscription
club.subscription
end
def entitlements
Teams::Entitlements.new(self)
end
def owner
club&.owner
end
def team_photo_url
if photo_file.attached?
Rails.application.routes.url_helpers.rails_blob_path(photo_file, only_path: true)
end
end
def roster_by_category
TeamRosterMember::DISPLAY_ORDER.index_with do |cat|
roster_members.by_category(cat).to_a
end
end
private
def photo_file_type
return if photo_file.content_type.in?(%w[image/png image/jpeg image/webp])
errors.add(:photo_file, "deve essere PNG, JPEG o WebP")
end
def branding_parent
club
end
def default_primary_color
club&.primary_color.presence || super
end
def default_secondary_color
club&.secondary_color.presence || super
end
end