package model

import model2 "cold-delivery/common/model"

const (
	IceRaftStatusNormal  = "2"
	IceRaftStatusDisable = "1"
)

// 冰排
type IceRaft struct {
	model2.Model
	Code            string            `json:"code" gorm:"size:128"`                                 // 商品名称
	Status          string            `json:"status" gorm:"size:4;not null;default:'2';comment:状态"` // 1-停用 2-正常
	IceRaftRecordId int               `json:"iceRaftRecordId" gorm:"size:128"`                      // 最新入库记录
	IceRaftRecord   IceRaftRecordOmit `json:"iceRaftRecord" gorm:"->;foreignkey:IceRaftRecordId;references:Id"`
	model2.ControlBy
	model2.ModelTime
	model2.DeptBy
}
type IceRaftOmit struct {
	Id   int    `json:"id,omitempty"`   // 主键编码
	Code string `json:"code,omitempty"` // 商品名称
}

func (IceRaft) TableName() string {
	return "ice_raft"
}
func (IceRaftOmit) TableName() string {
	return "ice_raft"
}

const (
	IceRaftRecordStatusFreezing = "1" // 冷冻中
	IceRaftRecordStatusWaitUse  = "2" // 待使用
	IceRaftRecordStatusUsing    = "3" // 使用中
	IceRaftRecordStatusFinish   = "4" // 已结束

)

func GetIceRaftRecordStatus(s string) string {
	switch s {
	case "":
		return "未入库"
	case IceRaftRecordStatusFreezing:
		return "冷冻中"
	case IceRaftRecordStatusWaitUse:
		return "待使用"
	case IceRaftRecordStatusUsing:
		return "使用中"
	case IceRaftRecordStatusFinish:
		return "已结束"
	}
	return ""
}

// 冰排记录
type IceRaftRecord struct {
	model2.Model
	IceRaftId      int           `json:"iceRaftId" gorm:"size:128;comment:冰排id"`
	Status         string        `json:"status" gorm:"size:4;not null;default:'2';comment:状态"` // 0未入库 1-冷冻中 2-待使用 3-使用中 4已结束
	InStorageTime  model2.Time   `json:"inStorageTime"  gorm:"size:128;comment:入库时间"`          // 入库时间
	OutStorageTime model2.Time   `json:"outStorageTime"  gorm:"size:128;comment:出库时间"`         // 出库时间
	IceLockerId    int           `json:"iceLockerId" gorm:"size:128;comment:冷冻柜id"`            // 冷冻柜id
	CoolerBoxId    int           `json:"coolerBoxId" gorm:"size:128;comment:保温箱id"`            // 保温箱id
	FreezeClaim    float32       `json:"freezeClaim" gorm:"type:decimal(10,2);comment:冷冻要求"`   // 冷冻要求 单位小时
	FreezeDuration int           `json:"freezeDuration" gorm:"size:128;comment:冷冻时长"`          // 冷冻时长 单位分钟
	IceLocker      IceLockerOmit `json:"iceLocker" gorm:"->"`
	CoolerBox      CoolerBoxOmit `json:"coolerBox" gorm:"->"`
	model2.ControlBy
	model2.ModelTime
	model2.DeptBy
}

type IceRaftRecordOmit struct {
	Id             int           `json:"id,omitempty"`             // 主键编码
	IceRaftId      int           `json:"iceRaftId,omitempty"`      // 冰排id
	Status         string        `json:"status"`                   // 1-停用 2-正常
	InStorageTime  model2.Time   `json:"inStorageTime,omitempty"`  // 入库时间
	OutStorageTime model2.Time   `json:"outStorageTime,omitempty"` // 出库时间
	IceLockerId    int           `json:"iceLockerId,omitempty"`    // 冷冻柜id
	CoolerBoxId    int           `json:"coolerBoxId,omitempty"`    // 保温箱id
	FreezeClaim    float32       `json:"freezeClaim"`              // 冷冻要求 单位小时
	FreezeDuration int           `json:"freezeDuration"`           // 冷冻时长 单位分钟
	IceLocker      IceLockerOmit `json:"iceLocker" gorm:"->"`
	CoolerBox      CoolerBoxOmit `json:"coolerBox" gorm:"->"`
}

func (IceRaftRecord) TableName() string {
	return "ice_raft_record"
}
func (IceRaftRecordOmit) TableName() string {
	return "ice_raft_record"
}
