package model

import (
	pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
)

type DataWarningItems struct {
	Id        int64                 `json:"id"`
	UserId    int64                 `json:"userId"`
	WarningId int64                 `json:"warningId"`
	GroupId   int32                 `json:"groupId"`
	FieldName string                `json:"fieldName"`
	FieldDesc string                `json:"fieldDesc"`
	Operator  string                `json:"operator"`
	Value     string                `json:"value"`
	IsShow    pasturePb.IsShow_Kind `json:"isShow"`
	CreatedAt int64                 `json:"createdAt"`
	UpdatedAt int64                 `json:"updatedAt"`
}

func (d *DataWarningItems) TableName() string {
	return "data_warning_items"
}

func NewDataWarningItems(userId int64, dataWarning *DataWarning, req *pasturePb.WarningDataSet) *DataWarningItems {
	return &DataWarningItems{
		UserId:    userId,
		WarningId: dataWarning.Id,
		GroupId:   req.GroupId,
		FieldName: req.FieldName,
		FieldDesc: req.FieldDesc,
		Operator:  req.Operator,
		Value:     req.Value,
		IsShow:    req.IsShow,
	}
}

type DataWarningItemsSlice []*DataWarningItems

func (d DataWarningItemsSlice) ToPB(dataWarning []*DataWarning) []*pasturePb.WarningDataSet {
	res := make([]*pasturePb.WarningDataSet, len(d))
	for i, v := range d {
		name, kind := "", ""
		for _, w := range dataWarning {
			if w.Id == v.WarningId {
				name = w.Name
				kind = w.Kind
			}
		}
		res[i] = &pasturePb.WarningDataSet{
			Id:        int32(v.Id),
			WarningId: int32(v.WarningId),
			GroupId:   v.GroupId,
			Name:      name,
			Kind:      kind,
			FieldDesc: v.FieldDesc,
			FieldName: v.FieldName,
			Operator:  v.Operator,
			Value:     v.Value,
			IsShow:    v.IsShow,
		}
	}
	return res
}