package sysorg

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

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

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

// NewSysorgDAO New Inst
func NewSysorgDAO(ctx *utils.Context) *SysorgDAO {
	return &SysorgDAO{
		ctx: ctx,
		db:  ctx.DB,
	}
}
func (m *SysorgDAO) GetOrgList(page, pagesize int) ([]model.SysOrg, error) {
	var org []model.SysOrg
	sql := `select * from sys_org where status >` + strconv.Itoa(models.STATUS_DEL)
	sql += ` order by create_date desc limit ` + strconv.Itoa((page-1)*pagesize) + `, ` + strconv.Itoa(pagesize)
	err := m.db.Sql(sql).Find(&org)
	return org, err
}
func (m *SysorgDAO) GetOrgListCount() (int, error) {
	var org []model.SysOrg
	sql := `select * from sys_org where status >` + strconv.Itoa(models.STATUS_DEL)
	err := m.db.Sql(sql).Find(&org)
	return len(org), err
}
func (m *SysorgDAO) AddOrg(org model.SysOrg) (*model.SysOrg, error) {
	org.OrgId = utils.GetGUID()
	org.CreateDate = time.Now()
	org.Status = models.STATUS_NORMAL
	org.AuthStatus = models.AUTH_STATUS_NO
	_, err := m.db.Insert(org)
	return &org, err
}
func (m *SysorgDAO) AuthOrg(org model.SysOrg) error {
	org.AuthStatus = models.AUTH_STATUS_YES
	var cols = []string{
		"auth_status",
		"wechat_id",
		"wechat_name",
	}
	_, err := m.db.Cols(cols...).Where("org_id = ?", org.OrgId).Update(org)
	return err
}
func (m *SysorgDAO) DeleteOrg(orgId string) error {
	var org = model.SysOrg{
		OrgId:  orgId,
		Status: models.STATUS_DEL,
	}
	var cols = []string{
		"status",
	}
	_, err := m.db.Cols(cols...).Where("org_id = ?", org.OrgId).Update(org)
	return err
}

// UnAutoOrg 解绑
func (m *SysorgDAO) UnAutoOrg(confid string) error {
	var org = model.SysOrg{
		WechatId:   "",
		AuthStatus: models.AUTH_STATUS_NO,
	}
	var cols = []string{
		"wechat_id",
		"auth_status",
	}
	_, err := m.db.Cols(cols...).Where("wechat_id = ?", confid).Update(org)
	return err
}