package cn.timer.api.dto.spmk;

import java.util.Date;
import java.util.List;

import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

import cn.hutool.json.JSONObject;
import cn.timer.api.bean.spmk.SpmkInitiatorConfig;
import cn.timer.api.config.exception.ValidationMsg;
import cn.timer.api.config.validation.Insert;
import cn.timer.api.config.validation.Update;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SpmkCustomApprovalDto {

	@ApiModelProperty(value = "编号 编号", example = "101")
	private Integer id;

	@ApiModelProperty(value = "企业组织代码 企业组织代码", example = "101")
	private Integer orgCode;

	@NotNull(message = "审批组id不能为空")
	@ApiModelProperty(value = "审批组id 当前用户ID", example = "101")
	private Integer approvalGId;

	@NotBlank(message = "审批图标不能为空")
	@ApiModelProperty(value = "审批图标地址 ", example = "审批图标地址")
	private String iconUrl;

	@NotBlank(message = "审批名称不能为空")
	@ApiModelProperty(value = "审批名称 ", example = "审批名称")
	private String name;

	@ApiModelProperty(value = "审批说明 ", example = "审批说明")
	private String description;

	@ApiModelProperty(value = "审批开关 0启用 1停用", example = "101")
	private Integer isOpen;

	@ApiModelProperty(value = "排序 排序", example = "101")
	private Integer ranks;

	@ApiModelProperty(value = "审批意见 是否必填 意见 0是 1否", example = "101")
	private Integer isOpinion;

	@ApiModelProperty(value = "更新时间 ", example = "更新时间")
	private Date updateTime;

	@ApiModelProperty(value = "创建时间 ", example = "创建时间")
	private Date createTime;

	@NotNull(message = "assoType为空")
	@DecimalMax(value = "11",message = "assoType 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 10录用")
	@DecimalMin(value = "0",message = "assoType 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 10录用")
	@ApiModelProperty(value = "关联类型 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 10录用", example = "1")
	private Integer assoType;
	
	@NotNull(message = "isAllvisible为空")
	@DecimalMax(value = "2",message = "isAllvisible 只能为 0部分可见 1所有可见 2禁用")
	@DecimalMin(value = "0",message = "isAllvisible 只能为 0部分可见 1所有可见 2禁用")
	@ApiModelProperty(value = "可见范围 0部分可见 1所有可见 2禁用", example = "1")
	private Integer isAllvisible;

	@NotEmpty(message = "froms为空")
	@ApiModelProperty(value = "审批表单 ", example = "审批表单")
	private List<JSONObject> froms;

	@NotNull(message = "router为空")
	@ApiModelProperty(value = "审批流程 ", example = "审批流程")
	private Router router;

	@NotNull(message = "initiatorConfigs为空")
	@ApiModelProperty(value = "可见发起人配置 ", example = "数组类型")
	private List<SpmkInitiatorConfig> initiatorConfigs;

}