package cn.ey.biz.module.system.controller.engagement.business.vo;

import cn.ey.biz.module.system.util.engagement.BusinessFieldConditionCheck;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;

@ApiModel("项目管理 - 商机字段 Request VO")
@Data
public class EngagementBusinessCreateReqVO implements Serializable {
    private static final long serialVersionUID = 1L;

    public interface Save {
    }

    public interface Update {
    }

    @ApiModelProperty(value = "商机字段id")
    @NotNull(message = "商机字段id不能为空", groups = {Update.class})
    private Long id;


    @ApiModelProperty(value = "商机模块")
    @NotBlank(message = "商机模块不能为空", groups = {Save.class, Update.class})
    private String appCode;

    @ApiModelProperty(value = "字段名称")
    @NotBlank(message = "字段名称不能为空", groups = {Save.class, Update.class})
    private String appFieldName;

    @ApiModelProperty(value = "")
    @NotNull(message = "是否必填不能为空", groups = {Save.class, Update.class})
    private Integer isRequire;

    @ApiModelProperty(value = "业务线consulting-core")
    @Valid
    @BusinessFieldConditionCheck(groups = {Save.class, Update.class})
    private List<EngagementBusinessConditionVO> consultingCore;

    @ApiModelProperty(value = "业务线consulting-fso")
    @Valid
    @BusinessFieldConditionCheck(groups = {Save.class, Update.class})
    private List<EngagementBusinessConditionVO> consultingFso;


    @ApiModelProperty(value = "业务线assurance-core")
    @Valid
    @BusinessFieldConditionCheck(groups = {Save.class, Update.class})
    private List<EngagementBusinessConditionVO> assuranceCore;


    @ApiModelProperty(value = "业务线assurance-core")
    @Valid
    @BusinessFieldConditionCheck(groups = {Save.class, Update.class})
    private List<EngagementBusinessConditionVO> assuranceFso;


    @ApiModelProperty(value = "业务线tax-core")
    @Valid
    @BusinessFieldConditionCheck(groups = {Save.class, Update.class})
    private List<EngagementBusinessConditionVO> taxCore;


    @ApiModelProperty(value = "业务线tax-core")
    @Valid
    @BusinessFieldConditionCheck(groups = {Save.class, Update.class})
    private List<EngagementBusinessConditionVO> taxFso;


    @ApiModelProperty(value = "业务线sat-core")
    @Valid
    @BusinessFieldConditionCheck(groups = {Save.class, Update.class})
    private List<EngagementBusinessConditionVO> satCore;


    @ApiModelProperty(value = "业务线sat-core")
    @Valid
    @BusinessFieldConditionCheck(groups = {Save.class, Update.class})
    private List<EngagementBusinessConditionVO> satFso;
}
