package wechatmenu

import (
	"strconv"
	"time"
	"wechat-conf/models"
	"wechat-conf/models/model"
	"wechat-conf/utils"

	"github.com/go-xorm/xorm"
)

// WechatMenuDAO 当前数据库操作对象
type WechatMenuDAO struct {
	ctx *utils.Context
	db  *xorm.Session
}

// NewWechatMenuDAO New Inst
func NewWechatMenuDAO(ctx *utils.Context) *WechatMenuDAO {
	return &WechatMenuDAO{
		ctx: ctx,
		db:  ctx.DB,
	}
}
func (m *WechatMenuDAO) GetWechatMenuByOrgId(orgId string) (*model.TaWechatMenu, error) {
	var menu []model.TaWechatMenu
	sql := `SELECT * FROM ta_wechat_menu where status > ` + strconv.Itoa(models.STATUS_DEL) + `
	and org_id = '` + orgId + `'`
	err := m.db.Sql(sql).Find(&menu)
	if len(menu) > 0 {
		return &menu[0], err
	}
	return nil, err
}
func (m *WechatMenuDAO) AddWechatMenu(menu model.TaWechatMenu) (*model.TaWechatMenu, error) {
	menu.WechatConfigId = utils.GetGUID()
	menu.Status = models.STATUS_NORMAL
	menu.CreateDate = time.Now()
	_, err := m.db.Insert(menu)
	return &menu, err
}
func (m *WechatMenuDAO) UpdateWechatMenu(menu model.TaWechatMenu) error {
	var cols = []string{
		"wechat_config_json",
	}
	_, err := m.db.Cols(cols...).Where("wechat_config_id = ?", menu.WechatConfigId).Update(menu)
	return err
}
func (m *WechatMenuDAO) DeleteWechatMenu(wechatConfigId string) error {
	var menu = model.TaWechatMenu{
		WechatConfigId: wechatConfigId,
		Status:         models.STATUS_DEL,
	}
	var cols = []string{
		"status",
	}
	_, err := m.db.Cols(cols...).Where("wechat_config_id = ?", menu.WechatConfigId).Update(menu)
	return err
}