Extend Bewerb DTOs and APIs: add comprehensive properties, mapping functions, and RichterEinsatz support, and align backend and frontend implementations.
This commit is contained in:
+87
@@ -0,0 +1,87 @@
|
||||
package at.mocode.turnier.feature.data.remote
|
||||
|
||||
import io.ktor.client.*
|
||||
import io.ktor.client.call.*
|
||||
import io.ktor.client.request.*
|
||||
import io.ktor.http.*
|
||||
import kotlinx.datetime.LocalDate
|
||||
import kotlinx.datetime.LocalTime
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class RichterEinsatzDto(
|
||||
val funktionaerId: String,
|
||||
val position: String,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class CreateBewerbPayload(
|
||||
// Basis
|
||||
val klasse: String,
|
||||
val hoeheCm: Int? = null,
|
||||
val bezeichnung: String,
|
||||
|
||||
// Text & Details
|
||||
val beschreibung: String? = null,
|
||||
val aufgabe: String? = null,
|
||||
val aufgabenNummer: String? = null,
|
||||
val paraGrade: String? = null,
|
||||
|
||||
// Ort & Funktionäre
|
||||
val austragungsplatzId: String? = null,
|
||||
val richterEinsaetze: List<RichterEinsatzDto> = emptyList(),
|
||||
|
||||
// Zeitplan
|
||||
val geplantesDatum: LocalDate? = null,
|
||||
@SerialName("beginnZeitTyp") val beginnZeitTyp: String? = null, // enum name
|
||||
val beginnZeit: LocalTime? = null,
|
||||
val reitdauerMinuten: Int? = null,
|
||||
val umbauMinuten: Int? = null,
|
||||
val besichtigungMinuten: Int? = null,
|
||||
val stechenGeplant: Boolean = false,
|
||||
|
||||
// Finanzen
|
||||
val startgeldCent: Long? = null,
|
||||
val geldpreisAusbezahlt: Boolean = false,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class BewerbResponse(
|
||||
val id: String,
|
||||
val turnierId: String,
|
||||
val klasse: String,
|
||||
val hoeheCm: Int? = null,
|
||||
val bezeichnung: String,
|
||||
|
||||
// Text & Details
|
||||
val beschreibung: String? = null,
|
||||
val aufgabe: String? = null,
|
||||
val aufgabenNummer: String? = null,
|
||||
val paraGrade: String? = null,
|
||||
|
||||
// Ort & Funktionäre
|
||||
val austragungsplatzId: String? = null,
|
||||
val richterEinsaetze: List<RichterEinsatzDto> = emptyList(),
|
||||
|
||||
// Zeitplan
|
||||
val geplantesDatum: LocalDate? = null,
|
||||
@SerialName("beginnZeitTyp") val beginnZeitTyp: String? = null,
|
||||
val beginnZeit: LocalTime? = null,
|
||||
val reitdauerMinuten: Int? = null,
|
||||
val umbauMinuten: Int? = null,
|
||||
val besichtigungMinuten: Int? = null,
|
||||
val stechenGeplant: Boolean = false,
|
||||
|
||||
// Finanzen
|
||||
val startgeldCent: Long? = null,
|
||||
val geldpreisAusbezahlt: Boolean = false,
|
||||
)
|
||||
|
||||
class BewerbApi(private val apiClient: HttpClient) {
|
||||
suspend fun createBewerb(turnierId: String, payload: CreateBewerbPayload): BewerbResponse =
|
||||
apiClient.post("/turniere/$turnierId/bewerbe") {
|
||||
contentType(ContentType.Application.Json)
|
||||
setBody(payload)
|
||||
}.body()
|
||||
}
|
||||
Reference in New Issue
Block a user