|
|
|
|
@ -14,7 +14,6 @@ class Tournament : ModelObject, Storable { |
|
|
|
|
|
|
|
|
|
var id: String = Store.randomId() |
|
|
|
|
var event: String? |
|
|
|
|
var creator: String? |
|
|
|
|
var name: String? |
|
|
|
|
var startDate: Date |
|
|
|
|
var endDate: Date? |
|
|
|
|
@ -49,9 +48,8 @@ class Tournament : ModelObject, Storable { |
|
|
|
|
@ObservationIgnored |
|
|
|
|
var navigationPath: [Screen] = [] |
|
|
|
|
|
|
|
|
|
internal init(event: String? = nil, creator: String? = nil, name: String? = nil, startDate: Date = Date(), endDate: Date? = nil, creationDate: Date = Date(), isPrivate: Bool = true, groupStageFormat: MatchFormat? = nil, roundFormat: MatchFormat? = nil, loserRoundFormat: MatchFormat? = nil, groupStageSortMode: GroupStageOrderingMode, groupStageCount: Int = 4, rankSourceDate: Date? = nil, dayDuration: Int = 1, teamCount: Int = 24, teamSorting: TeamSortingType? = nil, federalCategory: TournamentCategory, federalLevelCategory: TournamentLevel, federalAgeCategory: FederalTournamentAge, groupStageCourtCount: Int? = nil, seedCount: Int = 8, closedRegistrationDate: Date? = nil, groupStageAdditionalQualified: Int = 0, courtCount: Int = 2, prioritizeClubMembers: Bool = false, qualifiedPerGroupStage: Int = 1, teamsPerGroupStage: Int = 4, entryFee: Double? = nil) { |
|
|
|
|
internal init(event: String? = nil, name: String? = nil, startDate: Date = Date(), endDate: Date? = nil, creationDate: Date = Date(), isPrivate: Bool = true, groupStageFormat: MatchFormat? = nil, roundFormat: MatchFormat? = nil, loserRoundFormat: MatchFormat? = nil, groupStageSortMode: GroupStageOrderingMode, groupStageCount: Int = 4, rankSourceDate: Date? = nil, dayDuration: Int = 1, teamCount: Int = 24, teamSorting: TeamSortingType? = nil, federalCategory: TournamentCategory, federalLevelCategory: TournamentLevel, federalAgeCategory: FederalTournamentAge, groupStageCourtCount: Int? = nil, seedCount: Int = 8, closedRegistrationDate: Date? = nil, groupStageAdditionalQualified: Int = 0, courtCount: Int = 2, prioritizeClubMembers: Bool = false, qualifiedPerGroupStage: Int = 1, teamsPerGroupStage: Int = 4, entryFee: Double? = nil) { |
|
|
|
|
self.event = event |
|
|
|
|
self.creator = creator |
|
|
|
|
self.name = name |
|
|
|
|
self.startDate = startDate |
|
|
|
|
self.endDate = endDate |
|
|
|
|
@ -539,7 +537,7 @@ class Tournament : ModelObject, Storable { |
|
|
|
|
var teamsToImport = [TeamRegistration]() |
|
|
|
|
teams.forEach { team in |
|
|
|
|
if let previousTeam = team.previousTeam { |
|
|
|
|
previousTeam.updatePlayers(team.players) |
|
|
|
|
previousTeam.updatePlayers(team.players, inTournamentCategory: team.tournamentCategory) |
|
|
|
|
teamsToImport.append(previousTeam) |
|
|
|
|
} else { |
|
|
|
|
let newTeam = addTeam(team.players, registrationDate: team.registrationDate) |
|
|
|
|
@ -671,7 +669,7 @@ class Tournament : ModelObject, Storable { |
|
|
|
|
teams.forEach { team in |
|
|
|
|
let players = team.unsortedPlayers() |
|
|
|
|
players.forEach { $0.setWeight(in: self) } |
|
|
|
|
team.setWeight(from: players) |
|
|
|
|
team.setWeight(from: players, inTournamentCategory: tournamentCategory) |
|
|
|
|
try? DataStore.shared.playerRegistrations.addOrUpdate(contentOfs: players) |
|
|
|
|
} |
|
|
|
|
try? DataStore.shared.teamRegistrations.addOrUpdate(contentOfs: teams) |
|
|
|
|
@ -985,8 +983,7 @@ class Tournament : ModelObject, Storable { |
|
|
|
|
|
|
|
|
|
func addTeam(_ players: Set<PlayerRegistration>, registrationDate: Date? = nil) -> TeamRegistration { |
|
|
|
|
let team = TeamRegistration(tournament: id, registrationDate: registrationDate ?? Date()) |
|
|
|
|
team.tournamentCategory = tournamentCategory |
|
|
|
|
team.setWeight(from: Array(players)) |
|
|
|
|
team.setWeight(from: Array(players), inTournamentCategory: tournamentCategory) |
|
|
|
|
players.forEach { player in |
|
|
|
|
player.teamRegistration = team.id |
|
|
|
|
} |
|
|
|
|
@ -1271,7 +1268,6 @@ extension Tournament { |
|
|
|
|
enum CodingKeys: String, CodingKey { |
|
|
|
|
case _id = "id" |
|
|
|
|
case _event = "event" |
|
|
|
|
case _creator = "creator" |
|
|
|
|
case _name = "name" |
|
|
|
|
case _startDate = "startDate" |
|
|
|
|
case _endDate = "endDate" |
|
|
|
|
@ -1364,12 +1360,12 @@ extension Tournament { |
|
|
|
|
let tournamentLevel = TournamentLevel.mostUsed(inTournaments: tournaments) |
|
|
|
|
let tournamentCategory = TournamentCategory.mostUsed(inTournaments: tournaments) |
|
|
|
|
let federalTournamentAge = FederalTournamentAge.mostUsed(inTournaments: tournaments) |
|
|
|
|
|
|
|
|
|
return Tournament(creator: DataStore.shared.user?.id, groupStageSortMode: .snake, rankSourceDate: rankSourceDate, teamSorting: tournamentLevel.defaultTeamSortingType, federalCategory: tournamentCategory, federalLevelCategory: tournamentLevel, federalAgeCategory: federalTournamentAge) |
|
|
|
|
//creator: DataStore.shared.user?.id |
|
|
|
|
return Tournament(groupStageSortMode: .snake, rankSourceDate: rankSourceDate, teamSorting: tournamentLevel.defaultTeamSortingType, federalCategory: tournamentCategory, federalLevelCategory: tournamentLevel, federalAgeCategory: federalTournamentAge) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static func fake() -> Tournament { |
|
|
|
|
return Tournament(event: "Roland Garros", creator: "", name: "Magic P100", startDate: Date(), endDate: Date(), creationDate: Date(), isPrivate: false, groupStageFormat: .nineGames, roundFormat: nil, loserRoundFormat: nil, groupStageSortMode: .snake, groupStageCount: 4, rankSourceDate: nil, dayDuration: 2, teamCount: 24, teamSorting: .rank, federalCategory: .men, federalLevelCategory: .p100, federalAgeCategory: .a45, groupStageCourtCount: nil, seedCount: 8, closedRegistrationDate: nil, groupStageAdditionalQualified: 0, courtCount: 4, prioritizeClubMembers: false, qualifiedPerGroupStage: 2, teamsPerGroupStage: 4, entryFee: nil) |
|
|
|
|
return Tournament(event: "Roland Garros", name: "Magic P100", startDate: Date(), endDate: Date(), creationDate: Date(), isPrivate: false, groupStageFormat: .nineGames, roundFormat: nil, loserRoundFormat: nil, groupStageSortMode: .snake, groupStageCount: 4, rankSourceDate: nil, dayDuration: 2, teamCount: 24, teamSorting: .rank, federalCategory: .men, federalLevelCategory: .p100, federalAgeCategory: .a45, groupStageCourtCount: nil, seedCount: 8, closedRegistrationDate: nil, groupStageAdditionalQualified: 0, courtCount: 4, prioritizeClubMembers: false, qualifiedPerGroupStage: 2, teamsPerGroupStage: 4, entryFee: nil) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|