package dao

import (
	"github.com/druidcaesa/gotool"
	"ulink-admin/frame"
	"ulink-admin/modules/system/models/model"
	"ulink-admin/modules/system/models/req"
	"ulink-admin/pkg/base"
	"ulink-admin/pkg/page"
)

type TestDao struct {
	base.BaseDao
}

// Page 查询测试管理分页数据
func (this TestDao) Page(query *req.TestQuery, list interface{}) int64 {
	session := this.GetSession().Table(model.Test{}.TableName())

	if query.Id > 0 {
		session.And("id = ?", query.Id)
	}
	if !gotool.StrUtils.HasEmpty(query.Label) {
		session.And("label = ?", query.Label)
	}
	if !gotool.StrUtils.HasEmpty(query.Image) {
		session.And("image = ?", query.Image)
	}
	if query.IsDel > 0 {
		session.And("is_del = ?", query.IsDel)
	}
	if !gotool.StrUtils.HasEmpty(query.CreateBy) {
		session.And("create_by = ?", query.CreateBy)
	}
	if !gotool.StrUtils.HasEmpty(query.UpdateBy) {
		session.And("update_by = ?", query.UpdateBy)
	}
	if !gotool.StrUtils.HasEmpty(query.BeginTime) {
		session.And("date_format(u.create_time,'%y%m%d') >= date_format(?,'%y%m%d')", query.BeginTime)
	}
	if !gotool.StrUtils.HasEmpty(query.EndTime) {
		session.And("date_format(u.create_time,'%y%m%d') <= date_format(?,'%y%m%d')", query.EndTime)
	}
	total, err := session.Limit(query.PageSize, page.StartSize(query.PageNum, query.PageSize)).FindAndCount(list)
	if err != nil {
		frame.Throw(frame.SQL_CODE, "数据查询错误"+err.Error())
	}
	return total
}

// List 查询测试管理分页数据
func (this TestDao) List(query *req.TestQuery, list interface{}) {
	session := this.GetSession().Table(model.Test{}.TableName())

	if query.Id > 0 {
		session.And("id = ?", query.Id)
	}
	if !gotool.StrUtils.HasEmpty(query.Label) {
		session.And("label = ?", query.Label)
	}
	if !gotool.StrUtils.HasEmpty(query.Image) {
		session.And("image = ?", query.Image)
	}
	if query.IsDel > 0 {
		session.And("is_del = ?", query.IsDel)
	}
	if !gotool.StrUtils.HasEmpty(query.CreateBy) {
		session.And("create_by = ?", query.CreateBy)
	}
	if !gotool.StrUtils.HasEmpty(query.UpdateBy) {
		session.And("update_by = ?", query.UpdateBy)
	}
	if !gotool.StrUtils.HasEmpty(query.BeginTime) {
		session.And("date_format(u.create_time,'%y%m%d') >= date_format(?,'%y%m%d')", query.BeginTime)
	}
	if !gotool.StrUtils.HasEmpty(query.EndTime) {
		session.And("date_format(u.create_time,'%y%m%d') <= date_format(?,'%y%m%d')", query.EndTime)
	}
	err := session.Find(list)
	if err != nil {
		frame.Throw(frame.SQL_CODE, "数据查询错误"+err.Error())
	}
}