package controllers

import (
	"hongze/hongze_mobile_admin/models/response/contract"
	"hongze/hongze_mobile_admin/models/tables/company_contract"
	"hongze/hongze_mobile_admin/models/tables/company_report_permission"
	"hongze/hongze_mobile_admin/services"
	"hongze/hongze_mobile_admin/utils"
)

type ContractCommon struct {
	BaseAuth
}

// @Title 合同详情详情
// @Description 合同详情接口接口
// @Param   CompanyId   query   int  true       "客户ID"
// @Param   CompanyContractId   query   int  true       "合同id"
// @Success 200 {object} company_contract.CompanyContractDetail
// @router /contract/detail [get]
func (this *ContractCommon) ApplyContractDetail() {
	sysUser := this.AdminWx

	companyId, _ := this.GetInt("CompanyId")
	if companyId <= 0 {
		this.FailWithMessage("参数错误", "参数错误,客户id小于等于0")
		return
	}
	companyContractId, _ := this.GetInt("CompanyContractId")

	roleTypeCode := sysUser.RoleTypeCode
	productId := services.GetProductId(roleTypeCode)
	if productId == 0 {
		this.FailWithMessage("当前账户类型异常", "客户类型为:"+roleTypeCode)
		return
	}
	detail, err := company_contract.GetCompanyContractDetail(companyId, productId, companyContractId)
	if err != nil {
		this.FailWithMessage("获取信息失败", "获取信息失败,Err:"+err.Error())
		return
	}
	productId = detail.ProductId
	if productId == 1 {
		for _, v := range utils.PermissionFiccClassifyArr {
			checkList := make([]int, 0)
			plist := new(company_report_permission.PermissionLookList)
			items, err := company_report_permission.GetPermissionLookItems(productId, v)
			if err != nil {
				this.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
				return
			}
			for _, n := range items {
				count, err := company_contract.GetCompanyContractPermissionCheckByContractId(companyId, detail.CompanyContractId, n.ChartPermissionId)
				if err != nil {
					this.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
					return
				}
				if count > 0 {
					checkList = append(checkList, n.ChartPermissionId)
				}
			}
			plist.Items = items
			plist.ClassifyName = v
			plist.CheckList = checkList
			detail.PermissionList = append(detail.PermissionList, plist)
		}
	} else {
		classifyName := "权益"
		checkList := make([]int, 0)
		plist := new(company_report_permission.PermissionLookList)
		items, err := company_report_permission.GetPermissionLookItems(productId, classifyName)
		if err != nil {
			this.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
			return
		}
		for _, n := range items {
			count, err := company_contract.GetCompanyContractPermissionCheckByContractId(companyId, detail.CompanyContractId, n.ChartPermissionId)
			if err != nil {
				this.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
				return
			}
			if count > 0 {
				checkList = append(checkList, n.ChartPermissionId)
			}
		}
		plist.Items = items
		plist.ClassifyName = classifyName
		plist.CheckList = checkList
		detail.PermissionList = append(detail.PermissionList, plist)
	}
	resp := contract.CompanyContractDetailResp{
		detail,
	}
	this.OkDetailed(resp, "获取成功")
}