package com.lukouguoji.aerologic.page.uld.list

import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.databinding.ObservableBoolean
import com.alibaba.android.arouter.facade.annotation.Route
import com.lukouguoji.aerologic.R
import com.lukouguoji.aerologic.databinding.ActivityUldListBinding
import com.lukouguoji.module_base.base.BaseBindingActivity
import com.lukouguoji.module_base.common.ConstantEvent
import com.lukouguoji.module_base.impl.FlowBus
import com.lukouguoji.module_base.impl.observe
import com.lukouguoji.module_base.ktx.addOnItemClickListener
import com.lukouguoji.module_base.ktx.getLifecycleOwner
import com.lukouguoji.module_base.ktx.showToast
import com.lukouguoji.module_base.model.ConfirmDialogModel
import com.lukouguoji.module_base.router.ARouterConstants

/**
 * ULD管理列表页。
 *
 * 布局 id 不区分设备，平板/手机由资源限定符自动选择：
 *   layout-sw600dp/activity_uld_list.xml（平板） / layout/activity_uld_list.xml（手机）
 */
@Route(path = ARouterConstants.ACTIVITY_URL_ULD_LIST)
class UldListActivity : BaseBindingActivity<ActivityUldListBinding, UldListViewModel>() {

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

    override fun viewModelClass(): Class<UldListViewModel> {
        return UldListViewModel::class.java
    }

    /** 手机版筛选弹层显隐（仅 UI 状态，不涉及业务逻辑） */
    val filterPanelVisible = ObservableBoolean(false)

    override fun initOnCreate(savedInstanceState: Bundle?) {
        setBackArrow("ULD管理")
        binding.viewModel = viewModel
        binding.activity = this
        viewModel.pageModel.bindSmartRefreshLayout(
            binding.srl,
            binding.rv,
            viewModel,
            getLifecycleOwner()
        )
        binding.rv.addOnItemClickListener(viewModel)

        // 手机版卡片勾选变化 → 刷新全选与已选统计（平板 item 无勾选框，不会触发）
        FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) {
            viewModel.onItemCheckChanged()
        }
    }

    override fun onResume() {
        super.onResume()
        viewModel.refresh()
    }

    // ==================== 手机版专用交互（纯 UI，复用既有 ViewModel 字段） ====================

    /** 手机版筛选弹层显隐切换 */
    fun toggleFilterPanel() {
        filterPanelVisible.set(!filterPanelVisible.get())
    }

    /**
     * 手机版筛选：重置
     *
     * 只清空弹层内的四个条件（入库时间 / 进港航班号 / 所属航司 / 来源），不影响顶部搜索框。
     */
    fun resetFilter() {
        viewModel.checkInDateFilter.value = ""
        viewModel.ifNoFilter.value = ""
        viewModel.uldSuffix.value = ""
        viewModel.sourceFilter.value = ""
    }

    /** 手机版筛选：确认 */
    fun confirmFilter() {
        filterPanelVisible.set(false)
        viewModel.refresh()
    }

    /** 手机版批量删除（二次确认后逐条调用单条删除接口） */
    fun showDeleteConfirmDialog() {
        val selected = viewModel.getSelectedItems()
        if (selected.isEmpty()) {
            showToast("请选择要删除的ULD")
            return
        }
        ConfirmDialogModel(
            message = "确定要删除选中的 ${selected.size} 条ULD记录吗？",
            title = "删除确认"
        ) {
            viewModel.deleteSelected()
        }.show()
    }

    companion object {
        @JvmStatic
        fun start(context: Context) {
            context.startActivity(Intent(context, UldListActivity::class.java))
        }
    }
}
