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;
import java.util.Collection;
import java.util.List;

/**
 * 健康证管理分页查询参数。
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CertificateHealthManageQueryReq extends PageDto implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 权限模块ID（用于员工数据权限过滤）。
     */
    @Length(max = 50, message = "权限模块ID长度不能超过50")
    private String moduleId;

    /**
     * 所属组织ID。
     */
    private List<String> orgIds;

    /**
     * 后端查询时使用
     */
    private Collection<String> userIds;

    @Length(max = 50, message = "岗位ID长度不能超过50")
    private String positionId;

    /**
     * 关键字（姓名/手机号）。
     */
    @Length(max = 100, message = "关键字长度不能超过100")
    private String keyword;

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

    /**
     * 员工状态编码。
     */
    @Length(max = 20, message = "员工状态长度不能超过20")
    private String workerStatus;

    /**
     * 员工状态集合，后端使用，前端无需处理
     */
    private Collection<String> workerStatusCollection;

    @Length(max = 20, message = "发证开始日期长度不能超过20")
    private String issueStart;

    @Length(max = 20, message = "发证结束日期长度不能超过20")
    private String issueEnd;

    @Length(max = 20, message = "到期开始日期长度不能超过20")
    private String expireStart;

    @Length(max = 20, message = "到期结束日期长度不能超过20")
    private String expireEnd;
}
