package com.qmth.sop.business.bean.params;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.qmth.sop.common.annotation.EditKey;
import com.qmth.sop.common.enums.EducationEnum;
import com.qmth.sop.common.enums.GenderEnum;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.Range;

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

/**
 * @Description: 人员档案编辑参数
 * @Author: CaoZixuan
 * @Date: 2023-08-14
 */
public class UserArchivesParam {
    @ApiModelProperty(value = "档案id")
    @JsonSerialize(using = ToStringSerializer.class)
    @EditKey
    private Long id;

    @ApiModelProperty(value = "编号")
    private String code;

    @ApiModelProperty(value = "姓名")
    @NotNull(message = "请输入人员姓名")
    @NotBlank(message = "请输入人员姓名")
    private String name;

    @ApiModelProperty(value = "国家")
    private String country;

    @ApiModelProperty(value = "省份")
    @NotNull(message = "请输入常驻地区")
    @NotBlank(message = "请输入常驻地区")
    private String province;

    @ApiModelProperty(value = "城市")
    @NotNull(message = "请输入常驻地区")
    @NotBlank(message = "请输入常驻地区")
    private String city;

    @ApiModelProperty(value = "县区")
    private String area;

    @ApiModelProperty(value = "地址")
    private String address;

    @ApiModelProperty(value = "身份证号")
    @NotNull(message = "请输入身份证号")
    @NotBlank(message = "请输入身份证号")
    private String identity;

    @ApiModelProperty(value = "性别，MAN：男，WOMAN：女")
    @NotNull(message = "请输入性别")
    private GenderEnum gender;

    @ApiModelProperty(value = "学历")
    private EducationEnum education;

    @ApiModelProperty(value = "手机号")
    @NotNull(message = "请输入手机号")
    @NotBlank(message = "请输入手机号")
    private String mobileNumber;

    @ApiModelProperty(value = "邮箱")
    @NotNull(message = "请输入电子邮箱")
    @NotBlank(message = "请输入电子邮箱")
    private String email;

    @ApiModelProperty(value = "底照保存地址")
    @NotNull(message = "请输入照片地址")
    @NotBlank(message = "请输入照片地址")
    private String basePhotoPath;

    @ApiModelProperty(value = "供应商id")
    @JsonSerialize(using = ToStringSerializer.class)
    @NotNull(message = "请选择供应商")
    @Range(min = 1L, message = "请选择供应商")
    private Long supplierId;

    @ApiModelProperty(value = "入档时间")
    @NotNull(message = "请选择入档时间")
    @Range(min = 1L, message = "请选择入档时间")
    private Long archivesTime;

    @ApiModelProperty(value = "认证角色集合")
    @JsonSerialize(using = ToStringSerializer.class)
    @NotEmpty(message = "请选择认证角色")
    private Long[] roleIds;

    @ApiModelProperty(value = "认证时间")
    private Long authenticationTime;

    @ApiModelProperty(value = "认证成绩")
    private Double authenticationScore;

    @ApiModelProperty(value = "认证有效时间")
    private Long authenticationValidTime;

    @ApiModelProperty(value = "备注")
    private String remark;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getIdentity() {
        return identity;
    }

    public void setIdentity(String identity) {
        this.identity = identity;
    }

    public GenderEnum getGender() {
        return gender;
    }

    public void setGender(GenderEnum gender) {
        this.gender = gender;
    }

    public EducationEnum getEducation() {
        return education;
    }

    public void setEducation(EducationEnum education) {
        this.education = education;
    }

    public String getMobileNumber() {
        return mobileNumber;
    }

    public void setMobileNumber(String mobileNumber) {
        this.mobileNumber = mobileNumber;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getBasePhotoPath() {
        return basePhotoPath;
    }

    public void setBasePhotoPath(String basePhotoPath) {
        this.basePhotoPath = basePhotoPath;
    }

    public Long getSupplierId() {
        return supplierId;
    }

    public void setSupplierId(Long supplierId) {
        this.supplierId = supplierId;
    }

    public Long getArchivesTime() {
        return archivesTime;
    }

    public void setArchivesTime(Long archivesTime) {
        this.archivesTime = archivesTime;
    }

    public Long[] getRoleIds() {
        return roleIds;
    }

    public void setRoleIds(Long[] roleIds) {
        this.roleIds = roleIds;
    }

    public Long getAuthenticationTime() {
        return authenticationTime;
    }

    public void setAuthenticationTime(Long authenticationTime) {
        this.authenticationTime = authenticationTime;
    }

    public Double getAuthenticationScore() {
        return authenticationScore;
    }

    public void setAuthenticationScore(Double authenticationScore) {
        this.authenticationScore = authenticationScore;
    }

    public Long getAuthenticationValidTime() {
        return authenticationValidTime;
    }

    public void setAuthenticationValidTime(Long authenticationValidTime) {
        this.authenticationValidTime = authenticationValidTime;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }
}
