Better dialogs
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 45s

This commit is contained in:
Torsten Schulz (local)
2026-06-09 09:54:53 +02:00
parent 16465fafc8
commit 2fa7f9b537
21 changed files with 559 additions and 115 deletions

View File

@@ -9,6 +9,7 @@ import de.tsschulz.tt_tagebuch.shared.api.models.MemberSetBody
import de.tsschulz.tt_tagebuch.shared.api.models.MemberTransferRunBody
import io.ktor.client.call.body
import io.ktor.client.request.forms.formData
import io.ktor.client.request.delete
import io.ktor.client.request.get
import io.ktor.client.request.parameter
import io.ktor.client.request.post
@@ -18,8 +19,16 @@ import io.ktor.http.Headers
import io.ktor.http.HttpHeaders
import io.ktor.http.contentType
import io.ktor.client.request.forms.MultiPartFormDataContent
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonObject
@Serializable
data class MemberNoteMutationBody(
val clubId: Int,
val memberId: Int? = null,
val content: String? = null,
)
class MembersApi(
private val client: AuthedHttpClient,
) {
@@ -58,6 +67,32 @@ class MembersApi(
return client.http.post("/api/clubmembers/quick-update-member-form/$clubId/$memberId").body()
}
suspend fun quickDeactivateMember(clubId: Int, memberId: Int): MemberQuickMutationResponse {
return client.http.post("/api/clubmembers/quick-deactivate/$clubId/$memberId").body()
}
suspend fun requestClickTtRegistration(clubId: Int, memberId: Int): MemberQuickMutationResponse {
return client.http.post("/api/clubmembers/clicktt-registration/$clubId/$memberId").body()
}
suspend fun listMemberNotes(clubId: Int, memberId: Int): List<de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberNoteDto> {
return client.http.get("/api/member-notes/$memberId") {
parameter("clubId", clubId)
}.body()
}
suspend fun addMemberNote(clubId: Int, memberId: Int, content: String): List<de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberNoteDto> {
return client.http.post("/api/member-notes") {
setBody(MemberNoteMutationBody(clubId = clubId, memberId = memberId, content = content))
}.body()
}
suspend fun deleteMemberNote(clubId: Int, noteId: Int): List<de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberNoteDto> {
return client.http.delete("/api/member-notes/$noteId") {
setBody(MemberNoteMutationBody(clubId = clubId))
}.body()
}
suspend fun transferMembers(clubId: Int, body: MemberTransferRunBody): JsonObject {
return client.http.post("/api/clubmembers/transfer/$clubId") {
setBody(body)

View File

@@ -21,6 +21,7 @@ data class Member(
val testMembership: Boolean? = null,
val picsInInternetAllowed: Boolean? = null,
val memberFormHandedOver: Boolean? = null,
val clickTtApplicationSubmitted: Boolean? = null,
val adultReleaseApproved: Boolean? = null,
val adultReserveApproved: Boolean? = null,
val lastTraining: String? = null,

View File

@@ -77,6 +77,21 @@ class MembersManager(
suspend fun quickUpdateMemberFormHandedOver(clubId: Int, memberId: Int): MemberQuickMutationResponse =
membersApi.quickUpdateMemberFormHandedOver(clubId, memberId)
suspend fun quickDeactivateMember(clubId: Int, memberId: Int): MemberQuickMutationResponse =
membersApi.quickDeactivateMember(clubId, memberId)
suspend fun requestClickTtRegistration(clubId: Int, memberId: Int): MemberQuickMutationResponse =
membersApi.requestClickTtRegistration(clubId, memberId)
suspend fun listMemberNotes(clubId: Int, memberId: Int): List<de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberNoteDto> =
membersApi.listMemberNotes(clubId, memberId)
suspend fun addMemberNote(clubId: Int, memberId: Int, content: String): List<de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberNoteDto> =
membersApi.addMemberNote(clubId, memberId, content)
suspend fun deleteMemberNote(clubId: Int, noteId: Int): List<de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberNoteDto> =
membersApi.deleteMemberNote(clubId, noteId)
suspend fun transferMembers(clubId: Int, body: MemberTransferRunBody): JsonObject =
membersApi.transferMembers(clubId, body)