/*
 * @description: 项目展示项
 * @Author: CP
 * @Date: 2020-09-23 11:01:47
 * @FilePath: \construction_management\web\viewmodels\project.go
 */
package viewmodels

import (
	"fmt"

	validation "github.com/go-ozzo/ozzo-validation/v3"
)

type Project struct {
	Id               string `form:"id" json:"id"`
	Code             string `form:"code" json:"code"`
	Name             string `form:"name" json:"name"`
	UserId           string `form:"userId" json:"userId"`
	UserAccount      string `form:"userAccount" json:"userAccount"`
	CategoryId       string `form:"categoryId" json:"categoryId"`
	Category         string `form:"category" json:"category"`
	StaffId          string `form:"staffId" json:"staffId"`
	StaffName        string `form:"staffName" json:"staffName"`
	CreateTime       string `form:"createTime" json:"createTime"`
	CreateName       string `form:"createName" json:"createName"`
	CreateCategory   string `form:"createCategory" json:"createCategory"`
	InsideCategoryId string `form:"insideCategoryId" json:"insideCategoryId"`
	InsideCategory   string `form:"insideCategory" json:"insideCategory"`
	Remark           string `form:"remark" json:"remark"`
}
type ProjectInfo struct {
	ProjectName string `from:"project_name" json:"projectName"`
	Code        string `from:"code" json:"code"`
	CreateTime  string `from:"create_time" json:"createTime"`
	Mobile      string `from:"mobile" json:"mobile"`
	Name        string `from:"name" json:"name"`
}
type ProjectPage struct {
	Page int `form:"page" json:"page"`
	Size int `form:"size" json:"size"`
}

func (l ProjectPage) ValidatePage() error {
	return validation.ValidateStruct(&l,
		// 字符的4倍
		validation.Field(&l.Page, validation.Required.Error("当前页不能为空")),
		validation.Field(&l.Size, validation.Required.Error("每页数量不能为空")),
	)
}

func (l Project) ValidateId() error {
	return validation.ValidateStruct(&l,
		// 字符的4倍
		validation.Field(&l.Id, validation.Required.Error("项目ID不能为空")),
	)
}

func (l Project) ValidateAdd() error {
	return validation.ValidateStruct(&l,
		validation.Field(&l.Code, validation.Required.Error("项目编号不能为空")),
		validation.Field(&l.Name, validation.Required.Error("项目名称不能为空")),
		validation.Field(&l.Category, validation.Required.Error("办事处不能为空")),
		validation.Field(&l.CategoryId, validation.Required.Error("办事处ID不能为空")),
		validation.Field(&l.StaffName, validation.Required.Error("负责人不能为空")),
		validation.Field(&l.StaffId, validation.Required.Error("负责人ID不能为空")),
	)
}

func (l Project) ValidateSave() error {
	return validation.ValidateStruct(&l,
		validation.Field(&l.Id, validation.Required.Error("项目ID不能为空")),
		validation.Field(&l.Name, validation.Required.Error("项目名称不能为空")),

		validation.Field(&l.InsideCategoryId, validation.Required.Error("所在办事处ID不能为空")),
		validation.Field(&l.InsideCategory, validation.Required.Error("所在办事处不能为空")),

		validation.Field(&l.Category, validation.Required.Error("负责人办事处不能为空")),
		validation.Field(&l.CategoryId, validation.Required.Error("负责人办事处ID不能为空")),
		validation.Field(&l.StaffName, validation.Required.Error("负责人不能为空")),
		validation.Field(&l.StaffId, validation.Required.Error("负责人ID不能为空")),
	)
}

func (l Project) Validate() error {
	return validation.ValidateStruct(&l,
		// 字符的4倍
		validation.Field(&l.Name, validation.Required.Error("项目名称不能为空"), validation.Length(1, 512).Error("最多 128 个字")),
		validation.Field(&l.Code, validation.Required.Error("项目编号不能为空"), validation.Length(12, 128).Error("不得少于 3 个字")),
	)
}

func (l Project) ValidateName() error {
	fmt.Println(l)
	return validation.ValidateStruct(&l,
		// 字符的4倍
		validation.Field(&l.Name, validation.Required.Error("项目名称不能为空"), validation.Length(1, 512).Error("最多 128 个字")),
	)
}

// EnterpriseId  int    `xorm:"comment('企业id') INT(11)"`
// UserId        int    `xorm:"comment('管理员id(sso用户)') INT(11)"`
// UserAccount   string `xorm:"comment('管理员名字(sso用户名)') VARCHAR(32)"`
// CreateTime    int    `xorm:"comment('创建时间') INT(11)"`
// MaxUser       int    `xorm:"comment('最大创建用户数(删除)') TINYINT(4)"`
// Creator       int64  `xorm:"comment('创建者') BIGINT(20)"`
// Status        int    `xorm:"comment('项目状态') TINYINT(1)"`
// Remark        string `xorm:"comment('备注') VARCHAR(128)"`
// ManagerId     int    `xorm:"comment('销售负责人') INT(11)"`
// ManagerOffice int    `xorm:"comment('负责人办事处') TINYINT(4)"`
// Office        int    `xorm:"comment('办事处id(项目所属)') TINYINT(4)"`
// OfficeShare   string `xorm:"comment('办事处共享（office id列表') VARCHAR(1024)"`
// BillId        string `xorm:"comment('工程量清单id列表') VARCHAR(128)"`
// ChapterId     string `xorm:"comment('项目节清单id列表') VARCHAR(128)"`
// StandardId    int    `xorm:"comment('标准清单id') TINYINT(4)"`
// Valuation     string `xorm:"comment('清单规范id列表(删除)') VARCHAR(128)"`
// QrcodeJson    string `xorm:"comment('项目二维码信息') TEXT"`
// DealpayJson   string `xorm:"TEXT"`
// Custom        int    `xorm:"comment('是否是定制项目') TINYINT(1)"`
// CanApi        int    `xorm:"comment('定制项目接口是否可用') TINYINT(1)"`
// Secret        string `xorm:"comment('定制项目私钥') VARCHAR(255)"`
// PageShow      string `xorm:"comment('前台页面或功能展示与隐藏') VARCHAR(3072)"`
// PagePath      string `xorm:"VARCHAR(11)"`
