Registration status in progress
This commit is contained in:
@@ -145,7 +145,8 @@ object OpenGotha {
|
||||
rating = player.rating,
|
||||
rank = Pairable.parseRank(player.rank),
|
||||
country = player.country,
|
||||
club = player.club
|
||||
club = player.club,
|
||||
final = "FIN" == player.registeringStatus
|
||||
).also {
|
||||
player.participating.toString().forEachIndexed { i,c ->
|
||||
if (c == '0') it.skip.add(i + 1)
|
||||
@@ -215,7 +216,9 @@ object OpenGotha {
|
||||
player.displayRank()
|
||||
}" rating="${
|
||||
player.rating
|
||||
}" ratingOrigin="" registeringStatus="FIN" smmsCorrection="0"/>"""
|
||||
}" ratingOrigin="" registeringStatus="${
|
||||
if (player.final) "FIN" else "PRE"
|
||||
}" smmsCorrection="0"/>"""
|
||||
}
|
||||
}
|
||||
</Players>
|
||||
|
@@ -7,10 +7,10 @@ import java.util.*
|
||||
|
||||
// Pairable
|
||||
|
||||
sealed class Pairable(val id: ID, val name: String, open val rating: Int, open val rank: Int) {
|
||||
sealed class Pairable(val id: ID, val name: String, open val rating: Int, open val rank: Int, val final: Boolean) {
|
||||
companion object {
|
||||
val MIN_RANK: Int = -30 // 30k
|
||||
val MAX_RANK: Int = 8 // 9D
|
||||
const val MIN_RANK: Int = -30 // 30k
|
||||
const val MAX_RANK: Int = 8 // 9D
|
||||
}
|
||||
abstract fun toJson(): Json.Object
|
||||
abstract fun toMutableJson(): Json.MutableObject
|
||||
@@ -26,7 +26,7 @@ sealed class Pairable(val id: ID, val name: String, open val rating: Int, open v
|
||||
}
|
||||
}
|
||||
|
||||
object ByePlayer: Pairable(0, "bye", 0, Int.MIN_VALUE) {
|
||||
object ByePlayer: Pairable(0, "bye", 0, Int.MIN_VALUE, true) {
|
||||
override fun toJson(): Json.Object {
|
||||
throw Error("bye player should never be serialized")
|
||||
}
|
||||
@@ -70,8 +70,9 @@ class Player(
|
||||
rating: Int,
|
||||
rank: Int,
|
||||
override var country: String,
|
||||
override var club: String
|
||||
): Pairable(id, name, rating, rank) {
|
||||
override var club: String,
|
||||
final: Boolean
|
||||
): Pairable(id, name, rating, rank, final) {
|
||||
companion object
|
||||
// used to store external IDs ("FFG" => FFG ID, "EGF" => EGF PIN, "AGA" => AGA ID ...)
|
||||
val externalIds = mutableMapOf<DatabaseId, String>()
|
||||
@@ -82,7 +83,8 @@ class Player(
|
||||
"rating" to rating,
|
||||
"rank" to rank,
|
||||
"country" to country,
|
||||
"club" to club
|
||||
"club" to club,
|
||||
"final" to final
|
||||
).also { json ->
|
||||
if (skip.isNotEmpty()) json["skip"] = Json.Array(skip)
|
||||
externalIds.forEach { (dbid, id) ->
|
||||
@@ -103,7 +105,8 @@ fun Player.Companion.fromJson(json: Json.Object, default: Player? = null) = Play
|
||||
rating = json.getInt("rating") ?: default?.rating ?: badRequest("missing rating"),
|
||||
rank = json.getInt("rank") ?: default?.rank ?: badRequest("missing rank"),
|
||||
country = json.getString("country") ?: default?.country ?: badRequest("missing country"),
|
||||
club = json.getString("club") ?: default?.club ?: badRequest("missing club")
|
||||
club = json.getString("club") ?: default?.club ?: badRequest("missing club"),
|
||||
final = json.getBoolean("final") ?: default?.final ?: true
|
||||
).also { player ->
|
||||
player.skip.clear()
|
||||
json.getArray("skip")?.let {
|
||||
|
@@ -128,7 +128,7 @@ class TeamTournament(
|
||||
override val players = mutableMapOf<ID, Player>()
|
||||
val teams: MutableMap<ID, Team> = _pairables
|
||||
|
||||
inner class Team(id: ID, name: String): Pairable(id, name, 0, 0) {
|
||||
inner class Team(id: ID, name: String, final: Boolean): Pairable(id, name, 0, 0, final) {
|
||||
val playerIds = mutableSetOf<ID>()
|
||||
val teamPlayers: Set<Player> get() = playerIds.mapNotNull { players[id] }.toSet()
|
||||
override val rating: Int get() = if (teamPlayers.isEmpty()) super.rating else (teamPlayers.sumOf { player -> player.rating.toDouble() } / players.size).roundToInt()
|
||||
@@ -146,7 +146,8 @@ class TeamTournament(
|
||||
|
||||
fun teamFromJson(json: Json.Object, default: TeamTournament.Team? = null) = Team(
|
||||
id = json.getInt("id") ?: default?.id ?: Store.nextPlayerId,
|
||||
name = json.getString("name") ?: default?.name ?: badRequest("missing name")
|
||||
name = json.getString("name") ?: default?.name ?: badRequest("missing name"),
|
||||
final = json.getBoolean("final") ?: default?.final ?: badRequest("missing final")
|
||||
).apply {
|
||||
json.getArray("players")?.let { arr ->
|
||||
arr.mapTo(playerIds) {
|
||||
|
Reference in New Issue
Block a user