package jnpf.model.certificate.req;

import jnpf.model.common.PageDto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import java.io.Serializable;

/**
 * 证照实例分页查询参数。
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CertificateInstanceQueryReq extends PageDto implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 证照类型文本。
     */
    @Length(max = 50, message = "证照类型长度不能超过50")
    private String type;

    /**
     * 主体类型：1员工，2组织，3门店。
     */
    @Min(value = 1, message = "主体类型范围必须在1到3之间")
    @Max(value = 3, message = "主体类型范围必须在1到3之间")
    private Integer subjectType;

    /**
     * 主体ID。
     */
    @Length(max = 50, message = "主体ID长度不能超过50")
    private String subjectId;

    /**
     * 状态：1为缺失、2过期3临期4正常
     */
    @Min(value = 1, message = "状态范围必须在1到4之间")
    @Max(value = 4, message = "状态范围必须在1到4之间")
    private Integer status;

    /**
     * 到期开始日期（yyyy-MM-dd）。
     */
    @Length(max = 20, message = "到期开始日期长度不能超过20")
    private String expireStart;

    /**
     * 到期结束日期（yyyy-MM-dd）。
     */
    @Length(max = 20, message = "到期结束日期长度不能超过20")
    private String expireEnd;

    /**
     * 距到期最大天数。
     */
    @Min(value = 0, message = "距到期最大天数不能小于0")
    private Integer daysToExpireLte;

    /**
     * 关键字。
     */
    @Length(max = 100, message = "关键字长度不能超过100")
    private String keyword;
}
