|
|
|
@ -163,7 +163,11 @@ final class GroupStage: ModelObject, Storable { |
|
|
|
Logger.error(error) |
|
|
|
Logger.error(error) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if tournament.groupStagesAreOver(), tournament.groupStageLoserBracketAreOver(), tournament.rounds().isEmpty { |
|
|
|
let groupStagesAreOverAtFirstStep = tournament.groupStagesAreOver(atStep: 0) |
|
|
|
|
|
|
|
let nextStepGroupStages = tournament.groupStages(atStep: 1) |
|
|
|
|
|
|
|
let groupStagesAreOverAtSecondStep = tournament.groupStagesAreOver(atStep: 1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if groupStagesAreOverAtFirstStep, nextStepGroupStages.isEmpty || groupStagesAreOverAtSecondStep == true, tournament.groupStageLoserBracketAreOver(), tournament.rounds().isEmpty { |
|
|
|
tournament.endDate = Date() |
|
|
|
tournament.endDate = Date() |
|
|
|
do { |
|
|
|
do { |
|
|
|
try DataStore.shared.tournaments.addOrUpdate(instance: tournament) |
|
|
|
try DataStore.shared.tournaments.addOrUpdate(instance: tournament) |
|
|
|
@ -365,14 +369,14 @@ final class GroupStage: ModelObject, Storable { |
|
|
|
func teams(_ sortedByScore: Bool = false, scores: [TeamGroupStageScore]? = nil) -> [TeamRegistration] { |
|
|
|
func teams(_ sortedByScore: Bool = false, scores: [TeamGroupStageScore]? = nil) -> [TeamRegistration] { |
|
|
|
if sortedByScore { |
|
|
|
if sortedByScore { |
|
|
|
return unsortedTeams().compactMap({ team in |
|
|
|
return unsortedTeams().compactMap({ team in |
|
|
|
scores?.first(where: { $0.team.id == team.id }) ?? _score(forGroupStagePosition: team.groupStagePosition!) |
|
|
|
scores?.first(where: { $0.team.id == team.id }) ?? _score(forGroupStagePosition: team.groupStagePositionAtStep(step)!) |
|
|
|
}).sorted { (lhs, rhs) in |
|
|
|
}).sorted { (lhs, rhs) in |
|
|
|
let predicates: [TeamScoreAreInIncreasingOrder] = [ |
|
|
|
let predicates: [TeamScoreAreInIncreasingOrder] = [ |
|
|
|
{ $0.wins < $1.wins }, |
|
|
|
{ $0.wins < $1.wins }, |
|
|
|
{ $0.setDifference < $1.setDifference }, |
|
|
|
{ $0.setDifference < $1.setDifference }, |
|
|
|
{ $0.gameDifference < $1.gameDifference}, |
|
|
|
{ $0.gameDifference < $1.gameDifference}, |
|
|
|
{ self._headToHead($0.team, $1.team) }, |
|
|
|
{ self._headToHead($0.team, $1.team) }, |
|
|
|
{ $0.team.groupStagePosition! > $1.team.groupStagePosition! } |
|
|
|
{ [self] in $0.team.groupStagePositionAtStep(self.step)! > $1.team.groupStagePositionAtStep(self.step)! } |
|
|
|
] |
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
for predicate in predicates { |
|
|
|
for predicate in predicates { |
|
|
|
|