package com.lukouguoji.gjc.activity

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import androidx.databinding.ObservableBoolean
import com.alibaba.android.arouter.facade.annotation.Route
import com.lukouguoji.gjc.R
import com.lukouguoji.gjc.databinding.ActivityIntExpOutHandoverBinding
import com.lukouguoji.gjc.viewModel.IntExpOutHandoverViewModel
import com.lukouguoji.module_base.base.BaseBindingActivity
import com.lukouguoji.module_base.common.Constant
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.router.ARouterConstants
import com.lukouguoji.module_base.util.DeviceUtil

/**
 * 国际出港-出库交接页面
 *
 * 布局 id 不区分设备，平板/手机由资源限定符自动选择：
 *   layout-sw600dp/activity_int_exp_out_handover.xml（平板）
 *   layout/activity_int_exp_out_handover.xml（手机）
 */
@Route(path = ARouterConstants.ACTIVITY_URL_INT_EXP_OUT_HANDOVER)
class IntExpOutHandoverActivity :
    BaseBindingActivity<ActivityIntExpOutHandoverBinding, IntExpOutHandoverViewModel>() {

    override fun layoutId() = R.layout.activity_int_exp_out_handover
    override fun viewModelClass() = IntExpOutHandoverViewModel::class.java

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

    override fun initOnCreate(savedInstanceState: Bundle?) {
        setBackArrow(if (DeviceUtil.isPhone()) "出库交接" else "国际出港出库交接")
        binding.viewModel = viewModel
        binding.activity = this

        // 手机版专属数据：默认「待交接」Tab、Tab 角标计数、交接人下拉
        // 平板端不调用，查询链路与请求次数与改造前完全一致
        if (DeviceUtil.isPhone()) {
            viewModel.initPhoneExtras()
        }

        // 绑定分页
        viewModel.pageModel.bindSmartRefreshLayout(binding.srl, binding.rv, viewModel, this)

        // 设置item点击监听
        binding.rv.addOnItemClickListener(viewModel)

        // 监听刷新事件
        FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).observe(this) { viewModel.onItemCheckChanged() }

        FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).observe(this) {
            viewModel.refresh()
        }

        // 初始加载数据
        viewModel.refresh()
    }

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

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

    /**
     * 手机版筛选：重置
     *
     * 只清空弹层内的三个条件（航班日期 / 航班号 / 交接人），不影响 Tab 与顶部搜索框。
     */
    fun resetFilter() {
        viewModel.flightDate.value = ""
        viewModel.flightNo.value = ""
        viewModel.hoId.value = ""
    }

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

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == Constant.RequestCode.ULD && resultCode == Activity.RESULT_OK) {
            viewModel.uldNo.value = data?.getStringExtra(Constant.Result.CODED_CONTENT)
            viewModel.searchClick()
        }
    }
}
