package goods

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

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

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

// GetGoodsSpecByID 根据ID获取商品规格
func (m *GoodsDAO) GetGoodsSpecByID(specid string) (*model.TdSpec, error) {
	var goodsSpec []model.TdSpec
	err := m.db.Where("status>"+strconv.Itoa(models.STATUS_DEL)).And("spec_id=?", specid).Find(&goodsSpec)
	if err != nil {
		return nil, err
	}
	if len(goodsSpec) > 0 {
		return &goodsSpec[0], nil
	}
	return nil, nil
}

// AddGoodsSpec 新增商品规格
func (m *GoodsDAO) AddGoodsSpec(goodsSpec *model.TdSpec) (*model.TdSpec, error) {
	goodsSpec.SpecId = utils.GetGUID()
	goodsSpec.Status = models.STATUS_NORMAL
	_, err := m.db.Insert(goodsSpec)
	return goodsSpec, err
}

// UpdateGoodsSpec 修改商品规格
func (m *GoodsDAO) UpdateGoodsSpec(goodsSpec model.TdSpec) error {
	var cols = []string{
		"spec_name",
	}
	_, err := m.db.Cols(cols...).Where("spec_id=?", goodsSpec.SpecId).Update(goodsSpec)
	return err
}

// DelGoodsSpec 刪除商品规格
func (m *GoodsDAO) DelGoodsSpec(specid string) error {
	var goodsSpec = model.TdSpec{
		SpecId: specid,
		Status: models.STATUS_DEL,
	}
	var cols = []string{
		"status",
	}
	_, err := m.db.Cols(cols...).Where("spec_id=?", goodsSpec.SpecId).Update(goodsSpec)
	return err
}
