package template_switch_info

import (
	"encoding/json"
	"github.com/zeromicro/go-zero/core/logx"
)

type GetTemplateSwitchInfoRsp struct {
	Id               int64      `json:"id"`
	Material         string     `json:"material"`
	SwitchInfo       SwitchInfo `json:"switch_info"`
	CombineIsVisible bool       `json:"combine_is_visible"` //合图总开关是否开启
}
type SwitchInfo struct {
	QRcode  QRcode  `json:"QRcode"`
	Website Website `json:"Website"`
	Address Address `json:"Address"`
	Phone   Phone   `json:"Phone"`
	Slogan  Slogan  `json:"slogan"`
	Logo    Logo    `json:"Logo"`
}
type QRcode struct {
	IfShow       bool   `json:"if_show"`
	UserDisabled bool   `json:"user_disabled"`
	Text         string `json:"text"`
}
type Website struct {
	IfShow       bool   `json:"if_show"`
	UserDisabled bool   `json:"user_disabled"`
	Text         string `json:"text"`
}
type Address struct {
	IfShow       bool   `json:"if_show"`
	UserDisabled bool   `json:"user_disabled"`
	Text         string `json:"text"`
}
type Slogan struct {
	IfShow       bool   `json:"if_show"`
	UserDisabled bool   `json:"user_disabled"`
	Text         string `json:"text"`
}
type Phone struct {
	IfShow       bool   `json:"if_show"`
	UserDisabled bool   `json:"user_disabled"`
	Text         string `json:"text"`
}
type Logo struct {
	Material string `json:"material"`
}

// 模板开关信息简单结构
type TemplateSimpleParseInfo struct {
	MaterialList []MaterialItem `json:"materialList"`
}
type MaterialItem struct {
	Type    string `json:"type"`
	Tag     string `json:"tag"`
	Visible bool   `json:"visible"`
	Text    string `json:"text"`
}

// 获取模板开关信息
func GetTemplateSwitchInfo(templateId int64, templateJsonStr *string, templateMaterialImg string) GetTemplateSwitchInfoRsp {
	returnData := GetTemplateSwitchInfoRsp{
		Id:       templateId,
		Material: templateMaterialImg,
		SwitchInfo: SwitchInfo{
			QRcode: QRcode{
				UserDisabled: true,
			},
			Website: Website{
				UserDisabled: true,
			},
			Address: Address{
				UserDisabled: true,
			},
			Phone: Phone{
				UserDisabled: true,
			},
			Slogan: Slogan{
				UserDisabled: true,
			},
			Logo: Logo{
				Material: "/image/logo/aHnT1_rzubdwax_scale.png",
			},
		},
		CombineIsVisible: false,
	}
	if templateJsonStr == nil || *templateJsonStr == "" {
		return returnData
	}
	var templateJsonInfo TemplateSimpleParseInfo
	if err := json.Unmarshal([]byte(*templateJsonStr), &templateJsonInfo); err != nil {
		logx.Error("解析模板json获取DIY开关设置失败", err)
		return returnData
	}
	for _, v := range templateJsonInfo.MaterialList {
		if v.Type == "combine" {
			returnData.CombineIsVisible = v.Visible
			continue
		}
		switch v.Tag {
		case "Phone": //电话
			returnData.SwitchInfo.Phone.IfShow = v.Visible
			returnData.SwitchInfo.Phone.Text = v.Text
		case "Address": //地址
			returnData.SwitchInfo.Address.IfShow = v.Visible
			returnData.SwitchInfo.Address.Text = v.Text
		case "Website":
			returnData.SwitchInfo.Website.IfShow = v.Visible
			returnData.SwitchInfo.Website.Text = v.Text
		case "QRcode":
			returnData.SwitchInfo.QRcode.IfShow = v.Visible
			returnData.SwitchInfo.QRcode.Text = v.Text
		case "Slogan":
			returnData.SwitchInfo.Slogan.IfShow = v.Visible
			returnData.SwitchInfo.Slogan.Text = v.Text
		}
	}
	return returnData
}