package goods

import (
	"spaceofcheng/services/models"
	"spaceofcheng/services/models/model"
	"spaceofcheng/services/utils"
	"strconv"
	"strings"
	"time"
)

// GetGoodsTypeCount 获取商品类型总数
func (m *GoodsDAO) GetGoodsTypeCount(caseids string) (int, error) {
	var goodstype []model.TdGoodsType
	err := m.db.Where("status>" + strconv.Itoa(models.STATUS_DEL)).And("case_id in ('" + strings.Replace(caseids, ",", "','", -1) + "')").Find(&goodstype)
	return len(goodstype), err
}

// GetGoodsType 根据案场获取商品类型
func (m *GoodsDAO) GetGoodsType(caseids string, page int, pageSize int) ([]model.TdGoodsType, error) {
	var goodstype []model.TdGoodsType
	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("case_id in ('"+strings.Replace(caseids, ",", "','", -1)+"')").Limit(pageSize, (page-1)*pageSize).Desc("create_date").Find(&goodstype)
	return goodstype, err
}

// GetGoodsTypeByID 根据ID获取商品类型
func (m *GoodsDAO) GetGoodsTypeByID(typeid string) (*model.TdGoodsType, error) {
	var goodstype []model.TdGoodsType
	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("type_id=?", typeid).Find(&goodstype)
	if err != nil {
		return nil, err
	}
	if len(goodstype) > 0 {
		return &goodstype[0], nil
	}
	return nil, nil
}

// AddGoodsType 新增商品类型
func (m *GoodsDAO) AddGoodsType(goodsType *model.TdGoodsType) (*model.TdGoodsType, error) {
	goodsType.TypeId = utils.GetGUID()
	goodsType.CreateDate = time.Now()
	goodsType.Status = models.STATUS_NORMAL
	user := m.ctx.Get("user").(model.SysUser)
	goodsType.CreateUser = user.UserId
	_, err := m.db.Insert(goodsType)
	return goodsType, err
}

// UpdateGoodsType 修改商品类型
func (m *GoodsDAO) UpdateGoodsType(goodsType *model.TdGoodsType) error {
	var cols = []string{
		"type_name",
		"case_id",
	}
	_, err := m.db.Cols(cols...).Where("type_id=?", goodsType.TypeId).Update(goodsType)
	return err
}

// DelGoodsType 刪除商品类型
func (m *GoodsDAO) DelGoodsType(typeid string) error {
	var goodsType = model.TdGoodsType{
		TypeId: typeid,
		Status: models.STATUS_DEL,
	}
	var cols = []string{
		"status",
	}
	_, err := m.db.Cols(cols...).Where("type_id=?", typeid).Update(goodsType)
	return err
}
