package com.yidian.shenghuoquan.bmanagercenter.config

import com.yidian.bcommon.bean.LifeAccountItemBean
import com.yidian.bcommon.constant.IntentConstants
import com.yidian.bcommon.constant.XBirdPageConstants
import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.bcommon.http.bean.GetCommonConfigBean
import com.yidian.bcommon.sdk.ClientType
import com.yidian.shenghuoquan.bmanagercenter.constant.Constant
import com.yidian.shenghuoquan.bmanagercenter.ui.center.MerchantAuthManagementActivity

/**
 * author: yinjiacheng
 * date: 7/28/21 8:32 PM
 * description: 管理中心配置
 */
object ManagerCenterConfig {

  /**
   * FunctionId和XPage页面节点映射
   */
  fun getFunctionPageMap(data: List<GetCommonConfigBean.Item>, client: ClientType): HashMap<Int, String>? {
    if (data.isEmpty()) return null
    when (client) {
      ClientType.MERCHANT_B -> {
        return hashMapOf(
          // 我要发布-商品
          data[0].functions[0].functionId to XRouterPathConstants.COMMON_WEB_VIEW_ACTIVITY,
          // 管理服务-人员管理
          data[1].functions[1].functionId to XRouterPathConstants.PERSONAL_MY_STAFF,
          // 其他服务-商品管理
          data[2].functions[0].functionId to XRouterPathConstants.COMMODITY_MANAGEMENT,
          // 其他服务-门店管理
          data[2].functions[2].functionId to XRouterPathConstants.STORE_MANAGEMENT,
          // 其他服务-系统设置
          data[2].functions[3].functionId to XRouterPathConstants.SYSTEM_SETTING,
          // 其他服务-认证管理
          data[2].functions[4].functionId to XRouterPathConstants.AUTH_MANAGEMENT
        )
      }
      ClientType.MERCHANT_C -> {
        return hashMapOf(
          // 我要发布-商品
          data[0].functions[0].functionId to XRouterPathConstants.C_WEB_VIEW,
          // 我要发布-招聘
          data[0].functions[1].functionId to XRouterPathConstants.C_WEB_VIEW,
          // 管理服务-人员管理
          data[1].functions[1].functionId to XRouterPathConstants.PERSONAL_MY_STAFF,
          // 其他服务-商品管理
          data[2].functions[0].functionId to XRouterPathConstants.C_WEB_VIEW,
          // 其他服务-职位管理
          data[2].functions[1].functionId to XRouterPathConstants.C_WEB_VIEW,
          // 其他服务-门店管理
          data[2].functions[2].functionId to XRouterPathConstants.STORE_MANAGEMENT,
          // 其他服务-系统设置
          data[2].functions[3].functionId to XRouterPathConstants.SYSTEM_SETTING,
          // 其他服务-认证管理
          data[2].functions[4].functionId to XRouterPathConstants.AUTH_MANAGEMENT
        )
      }
    }
  }

  /**
   * FunctionId和跳转页面参数映射
   */
  fun getFunctionParamsMap(
    data: GetCommonConfigBean.Data,
    lifeAccount: LifeAccountItemBean.Response?,
    client: ClientType
  ): HashMap<Int, HashMap<String, Any>>? {
    if (data.merchantManagerCenter.items.isEmpty() || lifeAccount == null) return null
    when (client) {
      ClientType.MERCHANT_B -> {
        return hashMapOf(
          // 发布商品传参url
          data.merchantManagerCenter.items[0].functions[0].functionId to hashMapOf(XBirdPageConstants.PAGE_URL to XBirdPageConstants.COMMODITY_PUBLISH_COMMODITY + "?life_account_id=${lifeAccount.life_account_id}"),
          // 系统设置传参TowerPro配置数据
          data.merchantManagerCenter.items[2].functions[3].functionId to hashMapOf(IntentConstants.KEY_EXTRA_COMMON_CONFIG to data),
          // 认证管理传参生活号id和生活号key tag
          data.merchantManagerCenter.items[2].functions[4].functionId to hashMapOf(
            MerchantAuthManagementActivity.EXTRA_LIFE_ACCOUNT_ID to lifeAccount.life_account_id,
            MerchantAuthManagementActivity.EXTRA_LIFE_ACCOUNT_TAG_KEY to lifeAccount.tag.tag_key
          )
        )
      }
      ClientType.MERCHANT_C -> {
        return hashMapOf(
          // 发布商品传参url
          data.merchantManagerCenter.items[0].functions[0].functionId to hashMapOf("url" to data.merchantManagerCenter.items[0].functions[0].linkUrl),
          // 发布招聘传参url
          data.merchantManagerCenter.items[0].functions[1].functionId to hashMapOf("url" to data.merchantManagerCenter.items[0].functions[1].linkUrl),
          // 商品管理传参url
          data.merchantManagerCenter.items[2].functions[0].functionId to hashMapOf("url" to data.merchantManagerCenter.items[2].functions[0].linkUrl),
          // 职位管理传参url
          data.merchantManagerCenter.items[2].functions[1].functionId to hashMapOf("url" to data.merchantManagerCenter.items[2].functions[1].linkUrl),
          // 认证管理传参生活号id和生活号key tag
          data.merchantManagerCenter.items[2].functions[4].functionId to hashMapOf(
            MerchantAuthManagementActivity.EXTRA_LIFE_ACCOUNT_ID to lifeAccount.life_account_id,
            MerchantAuthManagementActivity.EXTRA_LIFE_ACCOUNT_TAG_KEY to lifeAccount.tag.tag_key
          )
        )
      }
    }
  }

  /**
   * 对应生活号权限下的功能集
   * 不在功能集中即为仅展示
   */
  fun getFunctionPermissionMap(data: List<GetCommonConfigBean.Item>, lifeAccountLabel: Int, client: ClientType): ArrayList<Int>? {
    if (data.isEmpty()) return null
    when (client) {
      ClientType.MERCHANT_B -> {
        when (lifeAccountLabel) {
          Constant.LIFE_ACCOUNT_TAG_ENTERPRISE_AUTH -> {
            // 企业认证
            // 所有服务都可用
            return arrayListOf(
              data[0].functions[0].functionId,
              data[0].functions[1].functionId,
              data[1].functions[0].functionId,
              data[1].functions[1].functionId,
              data[2].functions[0].functionId,
              data[2].functions[1].functionId,
              data[2].functions[2].functionId,
              data[2].functions[3].functionId,
              data[2].functions[4].functionId
            )
          }
          Constant.LIFE_ACCOUNT_TAG_COMMON_ENTERPRISE_AUTH -> {
            // 普通企业认证
            // 所有服务都可用
            return arrayListOf(
              data[0].functions[0].functionId,
              data[0].functions[1].functionId,
              data[1].functions[0].functionId,
              data[1].functions[1].functionId,
              data[2].functions[0].functionId,
              data[2].functions[1].functionId,
              data[2].functions[2].functionId,
              data[2].functions[3].functionId,
              data[2].functions[4].functionId
            )
          }
          Constant.LIFE_ACCOUNT_TAG_INDIVIDUAL_BUSINESS_AUTH -> {
            // 个体工商户认证
            // 所有服务都可用
            return arrayListOf(
              data[0].functions[0].functionId,
              data[0].functions[1].functionId,
              data[1].functions[0].functionId,
              data[1].functions[1].functionId,
              data[2].functions[0].functionId,
              data[2].functions[1].functionId,
              data[2].functions[2].functionId,
              data[2].functions[3].functionId,
              data[2].functions[4].functionId
            )
          }
          Constant.LIFE_ACCOUNT_TAG_PERSONAL_AUTH -> {
            // 个人认证
            // 我要发布-招聘 其他服务-职位管理 其他服务-系统设置 其他服务-认证管理
            return arrayListOf(
              data[0].functions[1].functionId,
              data[2].functions[1].functionId,
              data[2].functions[3].functionId,
              data[2].functions[4].functionId
            )
          }
          Constant.LIFE_ACCOUNT_TAG_NOT_AUTH -> {
            // 未认证
            // 我要发布-招聘 其他服务-职位管理 其他服务-系统设置 其他服务-认证管理
            return arrayListOf(
              data[0].functions[1].functionId,
              data[2].functions[1].functionId,
              data[2].functions[3].functionId,
              data[2].functions[4].functionId
            )
          }
          Constant.LIFE_ACCOUNT_TAG_AUDIT_UNDER -> {
            // 审核中
            // 我要发布-招聘 其他服务-职位管理 其他服务-系统设置 其他服务-认证管理
            return arrayListOf(
              data[0].functions[1].functionId,
              data[2].functions[1].functionId,
              data[2].functions[3].functionId,
              data[2].functions[4].functionId
            )
          }
          Constant.LIFE_ACCOUNT_TAG_AUTH_REJECT -> {
            // 认证驳回
            // 我要发布-招聘 其他服务-职位管理 其他服务-系统设置 其他服务-认证管理
            return arrayListOf(
              data[0].functions[1].functionId,
              data[2].functions[1].functionId,
              data[2].functions[3].functionId,
              data[2].functions[4].functionId
            )
          }
        }
      }
      ClientType.MERCHANT_C -> {
        when (lifeAccountLabel) {
          Constant.LIFE_ACCOUNT_TAG_ENTERPRISE_AUTH -> {
            // 企业认证
            // 所有服务都可用
            return arrayListOf(
              data[0].functions[0].functionId,
              data[0].functions[1].functionId,
              data[1].functions[0].functionId,
              data[1].functions[1].functionId,
              data[2].functions[0].functionId,
              data[2].functions[1].functionId,
              data[2].functions[2].functionId,
              data[2].functions[3].functionId,
              data[2].functions[4].functionId
            )
          }
          Constant.LIFE_ACCOUNT_TAG_COMMON_ENTERPRISE_AUTH -> {
            // 普通企业认证
            // 所有服务都可用
            return arrayListOf(
              data[0].functions[0].functionId,
              data[0].functions[1].functionId,
              data[1].functions[0].functionId,
              data[1].functions[1].functionId,
              data[2].functions[0].functionId,
              data[2].functions[1].functionId,
              data[2].functions[2].functionId,
              data[2].functions[3].functionId,
              data[2].functions[4].functionId
            )
          }
          Constant.LIFE_ACCOUNT_TAG_INDIVIDUAL_BUSINESS_AUTH -> {
            // 个体工商户认证
            // 所有服务都可用
            return arrayListOf(
              data[0].functions[0].functionId,
              data[0].functions[1].functionId,
              data[1].functions[0].functionId,
              data[1].functions[1].functionId,
              data[2].functions[0].functionId,
              data[2].functions[1].functionId,
              data[2].functions[2].functionId,
              data[2].functions[3].functionId,
              data[2].functions[4].functionId
            )
          }
          Constant.LIFE_ACCOUNT_TAG_PERSONAL_AUTH -> {
            // 个人认证
            // 我要发布-招聘 其他服务-职位管理 其他服务-认证管理
            return arrayListOf(
              data[0].functions[1].functionId,
              data[2].functions[1].functionId,
              data[2].functions[4].functionId
            )
          }
          Constant.LIFE_ACCOUNT_TAG_NOT_AUTH -> {
            // 未认证
            // 我要发布-招聘 其他服务-职位管理 其他服务-认证管理
            return arrayListOf(
              data[0].functions[1].functionId,
              data[2].functions[1].functionId,
              data[2].functions[4].functionId
            )
          }
          Constant.LIFE_ACCOUNT_TAG_AUDIT_UNDER -> {
            // 审核中
            // 我要发布-招聘 其他服务-职位管理 其他服务-认证管理
            return arrayListOf(
              data[0].functions[1].functionId,
              data[2].functions[1].functionId,
              data[2].functions[4].functionId
            )
          }
          Constant.LIFE_ACCOUNT_TAG_AUTH_REJECT -> {
            // 认证驳回
            // 我要发布-招聘 其他服务-职位管理 其他服务-认证管理
            return arrayListOf(
              data[0].functions[1].functionId,
              data[2].functions[1].functionId,
              data[2].functions[4].functionId
            )
          }
        }
      }
    }
    return null
  }
}
