package com.njcn.bpm.pojo.param;

import com.njcn.common.pojo.constant.PatternRegex;
import com.njcn.web.constant.ValidMessage;
import com.njcn.web.pojo.param.BaseParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

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

@Data
public class BpmFormParam implements Serializable {

    /**
     * 表单名
     */
    @ApiModelProperty("表单名称")
    @NotBlank(message = "表单名称不能为空")
    private String name;

    /**
     * 状态
     */
    @ApiModelProperty("表单状态")
//    @NotBlank(message = "表单状态不能为空")
    private Integer status;

    /**
     * 表单的配置
     */
    @ApiModelProperty("表单的配置-JSON 字符串")
    @NotBlank(message = "表单的配置不能为空")
    private String conf;

    /**
     * 表单项的数组
     *
     */
    @ApiModelProperty("表单项的数组-JSON 字符串的数组")
//    @NotBlank(message = "表单项的数组不能为空")
    private List<String> fields;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String remark;

    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private Integer sort = 100;


    /**
     * 更新操作实体
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    public static class BpmFormUpdateParam extends BpmFormParam {

        /**
         * 表Id
         */
        @ApiModelProperty("id")
        @NotBlank(message = ValidMessage.ID_NOT_BLANK)
        @Pattern(regexp = PatternRegex.SYSTEM_ID, message = ValidMessage.ID_FORMAT_ERROR)
        private String id;

    }


    /**
     * 分页查询实体
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    public static class BpmFormQueryParam extends BaseParam {

        /**
         * 表单名称
         */
        @ApiModelProperty("表单名称")
        private String name;

    }

}
