package ru.durakscore.app

import java.util.UUID

object MainScoreRepository {

    fun correctScore(
        playerId: String,
        playerName: String,
        newValue: Int,
        changedByUid: String,
        changedByName: String,
        onSuccess: () -> Unit,
        onError: (String) -> Unit
    ) {

        if (
            newValue <
            0
        ) {

            onError(
                "Счёт не может быть отрицательным"
            )

            return
        }

        val user =
            DurakAuthSession.current()

        if (
            user ==
            null
        ) {

            onError(
                "Пользователь не авторизован"
            )

            return
        }

        /*
         * Актёра сервер определяет сам по session token.
         * playerName / changedByUid / changedByName оставлены
         * в сигнатуре, чтобы не ломать существующий UI-код.
         */
        val requestId =
            UUID
                .randomUUID()
                .toString()

        DurakServerApi
            .correctMainScore(
                user =
                    user,
                playerId =
                    playerId,
                newValue =
                    newValue,
                requestId =
                    requestId,
                onSuccess = {

                    onSuccess()
                },
                onError =
                    onError
            )
    }
}
