package com.ningdatech.carapi.driver.model.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ningdatech.carapi.common.constant.DriverLicenseTypeEnum;
import com.ningdatech.carapi.common.model.FileBasicInfo;
import com.ningdatech.carapi.driver.constant.TrainingRegistrationTypeEnum;
import com.ningdatech.carapi.driver.model.po.AuditInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author liuxinxin
 * @date 2022/10/9 上午10:51
 */
@Data
@ApiModel("驾驶员信息档案查询详情VO")
public class ResArchivalInfoDetailVO {

    @ApiModelProperty("驾驶员id")
    private Long driverId;

    @ApiModelProperty("驾驶员姓名")
    @NotBlank(message = "驾驶员姓名不能为空")
    private String driverName;

    @ApiModelProperty("性别 0:女 ，1:男 ")
    @NotNull(message = "性别不能为空")
    private Integer gender;

    @ApiModelProperty("身份证号")
    @NotBlank(message = "身份证号不能为空")
    private String idCard;

    @ApiModelProperty("出生年月")
    @NotNull(message = "出生年月不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime birth;

    @ApiModelProperty("籍贯")
    @NotBlank(message = "籍贯不能为空")
    private String nativePlace;

    @ApiModelProperty(value = "免冠照图片文件")
    private FileBasicInfo avatarFile;

    @ApiModelProperty(value = "健康状况")
    private String health;

    @ApiModelProperty("手机号码")
    @NotBlank(message = "手机号码不能为空")
    private String driverPhoneNo;

    @ApiModelProperty("住址")
    @NotBlank(message = "住址不能为空")
    private String driverAddress;

    @ApiModelProperty("驾驶员证号")
    private String driverLicenseNo;

    @ApiModelProperty("驾驶证类型/准驾车型")
    private DriverLicenseTypeEnum driverLicenseType;

    @NotBlank(message = "公司id不能为空")
    @ApiModelProperty("所属服务企业唯一标识id")
    private Long companyId;

    @ApiModelProperty(value = "企业名称")
    private String companyName;

    @ApiModelProperty(value = "企业地址")
    private String companyAddress;

    @ApiModelProperty(value = "企业联系人")
    private String companyContactPerson;

    @ApiModelProperty(value = "企业电话")
    private String companyContactPhone;

    @ApiModelProperty("附件")
    private List<FileBasicInfo> appendixList;

    @ApiModelProperty(value = "初审信息")
    private AuditInfo preliminaryReviewInfo;

    @ApiModelProperty(value = "复审信息")
    private AuditInfo reviewInfo;

    @ApiModelProperty(value = "培训报名类型", allowableValues = "FORENSIC_REGISTRATION 取证报名,REPLACEMENT_REGISTRATION 换证报名,CONTINUING_EDUCATION 继续教育")
    @NotNull(message = "培训报名类型不能为空")
    private TrainingRegistrationTypeEnum trainingRegistrationType;


    @ApiModelProperty("初次领证时间")
    @NotNull(message = "初次领证时间不能为空")
    private LocalDateTime initialLicenseTime;

    @ApiModelProperty("违规违法信息")
    private String illegalAndIllegalInfo;

    @ApiModelProperty("籍贯")
    @NotBlank(message = "籍贯编码")
    private String nativePlaceRegionCode;

    @ApiModelProperty(value = "驾驶员拟驾车型列表", allowableValues = "MIXER 搅拌车,PUMP_TRUCK 泵车,BULK_CEMENT_TRUCK 散装水泥车" +
            ",MORTAR_TRUCK 砂浆车,OTHER 其他")
    private List<String> motorcycleTypeList;

    @ApiModelProperty("意向跳槽企业ID")
    private Long jobChangeCompanyId;

    @ApiModelProperty("意向跳槽企业名称")
    private String jobChangeCompanyName;

    @ApiModelProperty("培训合格证编号")
    private String certificateNo;

    @ApiModelProperty("驾驶员用户ID")
    private Long driverUserId;

}
