package sys_config_dict

import (
	"context"
	"kami/internal/consts"
	"kami/internal/dao"
	"kami/internal/model/do"
	"kami/internal/model/entity"
	"kami/internal/service"
	"kami/utility/config"
)

func init() {
	service.RegisterSysConfigDict(New())
}

func New() *sSysConfigDict {
	return &sSysConfigDict{}
}

type sSysConfigDict struct{}

// GetIsStealAppleCard 判断是否偷取苹果卡
func (d *sSysConfigDict) GetIsStealAppleCard(ctx context.Context) (isSteal bool) {
	isSteal = false
	data := &entity.V1SysConfigDict{}
	_ = dao.V1SysConfigDict.Ctx(ctx).DB(config.GetDatabaseV1()).
		Where(dao.V1SysConfigDict.Columns().Key, consts.SysConfigDictTypeIsStealAppleCard).Scan(&data)
	if data.Value == "1" {
		isSteal = true
	}
	return
}

// SetIsStealAppleCard 设置是否偷取苹果卡
func (d *sSysConfigDict) SetIsStealAppleCard(ctx context.Context, isSteal bool) (err error) {
	isStealStr := "0"
	if isSteal {
		isStealStr = "1"
	}
	_, err = dao.V1SysConfigDict.Ctx(ctx).DB(config.GetDatabaseV1()).
		Where(dao.V1SysConfigDict.Columns().Key, consts.SysConfigDictTypeIsStealAppleCard).Save(do.V1SysConfigDict{
		Key:   consts.SysConfigDictTypeIsStealAppleCard,
		Name:  "苹果偷卡设置",
		Value: isStealStr,
	})
	return
}

// GetMerchantStealRuleStatus 判断是否偷取苹果卡
func (d *sSysConfigDict) GetMerchantStealRuleStatus(ctx context.Context) (isSteal bool) {
	isSteal = false
	data := &entity.V1SysConfigDict{}
	_ = dao.V1SysConfigDict.Ctx(ctx).DB(config.GetDatabaseV1()).
		Where(dao.V1SysConfigDict.Columns().Key, consts.SysConfigDictTypeStealRuleStatus).Scan(&data)
	if data.Value == "1" {
		isSteal = true
	}
	return
}

// SetMerchantStealRuleStatus 设置是否偷卡
func (d *sSysConfigDict) SetMerchantStealRuleStatus(ctx context.Context, isSteal bool) (err error) {
	isStealStr := "0"
	if isSteal {
		isStealStr = "1"
	}
	_, err = dao.V1SysConfigDict.Ctx(ctx).DB(config.GetDatabaseV1()).
		Where(dao.V1SysConfigDict.Columns().Key, consts.SysConfigDictTypeStealRuleStatus).Save(do.V1SysConfigDict{
		Key:   consts.SysConfigDictTypeStealRuleStatus,
		Name:  "商户偷卡设置",
		Value: isStealStr,
	})
	return
}

// GetIsStealMerchantCard 判断当前是否偷取商户卡
func (d *sSysConfigDict) GetIsStealMerchantCard(ctx context.Context) (isSteal bool) {
	isSteal = false
	data := &entity.V1SysConfigDict{}
	_ = dao.V1SysConfigDict.Ctx(ctx).DB(config.GetDatabaseV1()).
		Where(dao.V1SysConfigDict.Columns().Key, consts.SysConfigDictTypeIsStealAppleCard).Scan(&data)
	if data.Value == "1" {
		isSteal = true
	}
	return
}

// SetIsStealMerchantCard 设置是否偷取苹果卡
func (d *sSysConfigDict) SetIsStealMerchantCard(ctx context.Context, isSteal bool) (err error) {
	isStealStr := "0"
	if isSteal {
		isStealStr = "1"
	}
	_, err = dao.V1SysConfigDict.Ctx(ctx).DB(config.GetDatabaseV1()).
		Where(dao.V1SysConfigDict.Columns().Key, consts.SysConfigDictTypeIsStealAppleCard).Save(do.V1SysConfigDict{
		Key:   consts.SysConfigDictTypeIsStealAppleCard,
		Name:  "商户偷卡设置",
		Value: isStealStr,
	})
	return
}
