Skip to content
This repository has been archived by the owner on Feb 10, 2025. It is now read-only.

勝ち点採点方法を追加 #92

Merged
merged 1 commit into from
Oct 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/main/kotlin/net/sportsday/models/Games.kt
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,9 @@ enum class CalculationType(val type: String) {

@SerialName("diff_score")
DIFF_SCORE("diff_score"),

@SerialName("win_score")
WIN_SCORE("win_score"),
}

@Serializable
Expand Down
95 changes: 59 additions & 36 deletions src/main/kotlin/net/sportsday/services/GamesService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -452,48 +452,71 @@ object GamesService {
var lastResult: LeagueTeamResult? = null
var lastRank = 0
// sort by score. but if score is same, sort by goal diff
val sortedLeagueTeamResults = leagueTeamResults.values
.sortedWith(
compareByDescending<LeagueTeamResult> { it.score }
.apply {
if (game.calculationType == CalculationType.DIFF_SCORE) {
thenByDescending { it.goalDiff }
} else if (game.calculationType == CalculationType.TOTAL_SCORE) {
thenByDescending { it.goal }
}
},
)
.map { leagueTeamResult ->
if (lastResult == null) {
leagueTeamResult.rank = 1
} else {
// if score is same, rank is same
if (game.calculationType == CalculationType.TOTAL_SCORE) {
if (
lastResult!!.score == leagueTeamResult.score &&
lastResult!!.goal == leagueTeamResult.goal
) {
leagueTeamResult.rank = lastRank
val sortedLeagueTeamResults =
if (game.calculationType == CalculationType.DIFF_SCORE || game.calculationType == CalculationType.TOTAL_SCORE) {
leagueTeamResults.values
.sortedWith(
compareByDescending<LeagueTeamResult> { it.score }
.apply {
if (game.calculationType == CalculationType.DIFF_SCORE) {
thenByDescending { it.goalDiff }
} else if (game.calculationType == CalculationType.TOTAL_SCORE) {
thenByDescending { it.goal }
}
},
)
.map { leagueTeamResult ->
if (lastResult == null) {
leagueTeamResult.rank = 1
} else {
leagueTeamResult.rank = lastRank + 1
// if score is same, rank is same
if (game.calculationType == CalculationType.TOTAL_SCORE) {
if (
lastResult!!.score == leagueTeamResult.score &&
lastResult!!.goal == leagueTeamResult.goal
) {
leagueTeamResult.rank = lastRank
} else {
leagueTeamResult.rank = lastRank + 1
}
} else {
if (
lastResult!!.score == leagueTeamResult.score &&
lastResult!!.goalDiff == leagueTeamResult.goalDiff
) {
leagueTeamResult.rank = lastRank
} else {
leagueTeamResult.rank = lastRank + 1
}
}
}
} else {
if (
lastResult!!.score == leagueTeamResult.score &&
lastResult!!.goalDiff == leagueTeamResult.goalDiff
) {
leagueTeamResult.rank = lastRank

// last result
lastResult = leagueTeamResult
lastRank = leagueTeamResult.rank

leagueTeamResult
}
} else {
leagueTeamResults.values
.sortedWith(compareByDescending { it.score })
.map { leagueTeamResult ->
if (lastResult == null) {
leagueTeamResult.rank = 1
} else {
leagueTeamResult.rank = lastRank + 1
if (lastResult!!.score == leagueTeamResult.score) {
leagueTeamResult.rank = lastRank
} else {
leagueTeamResult.rank = lastRank + 1
}
}
}
}

// last result
lastResult = leagueTeamResult
lastRank = leagueTeamResult.rank
// last result
lastResult = leagueTeamResult
lastRank = leagueTeamResult.rank

leagueTeamResult
leagueTeamResult
}
}

// create league result
Expand Down
Loading