package com.lukouguoji.gjc.dialog

import android.content.Context
import androidx.lifecycle.MutableLiveData
import com.lukouguoji.gjc.R
import com.lukouguoji.gjc.databinding.DialogIntExpArriveResetBinding
import com.lukouguoji.module_base.base.BaseDialogModel
import com.lukouguoji.module_base.ktx.verifyNullOrEmpty
import com.lukouguoji.module_base.util.DeviceUtil
import dev.utils.app.info.KeyValue

/**
 * 国际出港运抵 - 状态重置对话框
 *
 * 布局按资源限定符自动切换：手机 layout/（底部弹层）、平板 layout-sw600dp/（居中弹框），
 * 弹出位置随形态选择 BOTTOM/CENTER。
 */
class IntExpArriveResetDialogModel(
    private val callback: (IntExpArriveResetDialogModel) -> Unit
) : BaseDialogModel<DialogIntExpArriveResetBinding>(
    if (DeviceUtil.isPhone()) DIALOG_TYPE_BOTTOM else DIALOG_TYPE_CENTER
) {

    // 重置状态列表
    val resetStatusList = MutableLiveData<List<KeyValue>>()

    // 选中的重置状态（存储的是value）
    val selectedResetStatus = MutableLiveData("")

    // 重置状态code (传给后端的restStatus参数)
    var resetStatusCode: String? = null

    override fun layoutId(): Int {
        return R.layout.dialog_int_exp_arrive_reset
    }

    override fun onDialogCreated(context: Context) {
        binding.model = this
        initResetStatusList()

        // 监听选择变化，更新resetStatusCode
        selectedResetStatus.observeForever { value ->
            resetStatusCode = when (value) {
                "01" -> "01"  // 正常
                "02" -> null  // 未申报
                else -> null
            }
        }
    }

    /**
     * 初始化重置状态列表
     */
    private fun initResetStatusList() {
        val list = listOf(
            KeyValue("正常", "01"),
            KeyValue("未申报", "02")
        )
        resetStatusList.value = list
    }

    /**
     * 保存按钮点击
     */
    fun onSaveClick() {
        if (selectedResetStatus.value.verifyNullOrEmpty("请选择重置状态")) {
            return
        }
        dismiss()
        callback(this)
    }
}
