package com.ruoyi.hezhi.domain.dto;

import com.ruoyi.common.annotation.Excel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

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

/**
 * 考试报名对象 tb_exam_registration
 *
 * @author ruoyi
 * @date 2024-11-05
 */
@Getter
@Setter
@ToString
public class ExamRegistrationDTO implements Serializable {
    private static final long serialVersionUID = 1L;

    /** 考试报名 */
    public interface examRegistration{}

    /** 考试报名主键ID */
    private Long examRegistrationId;

    /** 用户ID */
    @NotNull(message = "请先登录", groups = {examRegistration.class})
    private Long memberUserId;

    /** 考试ID */
//    @NotNull(message = "缺少考试ID", groups = {examRegistration.class})
    private Long examId;

    /** 姓名 */
    @NotBlank(message = "缺少姓名", groups = {examRegistration.class})
    private String name;

    /** 性别（0-男，1-女，2-未知） */
    @NotNull(message = "缺少性别", groups = {examRegistration.class})
    private Integer sex;

    /** 曾用名 */
    private String formerName;

    /** 民族 */
    @NotBlank(message = "缺少民族", groups = {examRegistration.class})
    private String nation;

    /** 身份证号 */
    @NotBlank(message = "缺少身份证号", groups = {examRegistration.class})
    private String identityCard;

    /** 出生日期 */
    @NotBlank(message = "缺少出生日期", groups = {examRegistration.class})
    private String birthday;

    /** 生源类型 */
    @NotBlank(message = "缺少生源类型", groups = {examRegistration.class})
    private String sourceType;

    /** 籍贯 */
   /* @NotBlank(message = "缺少籍贯", groups = {examRegistration.class})
    private String nativePlace;*/

    /** 籍贯 */
    @NotEmpty(message = "缺少籍贯", groups = {examRegistration.class})
    private List<String> nativePlace;

    /** 政治面貌 */
    @NotBlank(message = "缺少政治面貌", groups = {examRegistration.class})
    private String politicalStatus;

    /** 学历（0-无，1-小学，2-初中，3-高中，4-中专，5-专科，6-本科，7-研究生） */
    @NotBlank(message = "缺少学历", groups = {examRegistration.class})
    private String education;

    /** 专业 */
    @NotBlank(message = "缺少专业", groups = {examRegistration.class})
    private String major;

    /** 所在学校（毕业学校） */
    @NotBlank(message = "缺少所在学校（毕业学校）", groups = {examRegistration.class})
    private String graduationSchool;

    /** 入学年份（毕业年份） */
    @NotBlank(message = "缺少入学年份（毕业年份）", groups = {examRegistration.class})
    private String entranceYear;

    /** 联系方式 */
    @NotBlank(message = "缺少联系方式", groups = {examRegistration.class})
    private String contactInformation;

    /** 省ID */
//    @NotNull(message = "缺少省ID", groups = {examRegistration.class})
    private Long provinceId;

    /** 市ID */
//    @NotNull(message = "缺少市ID", groups = {examRegistration.class})
    private Long cityId;

    /** 区（县）ID */
//    @NotNull(message = "缺少区（县）ID ", groups = {examRegistration.class})
    private Long areaId;

    /** 省名 */
    private String provinceName;

    /** 市名 */
    private String cityName;

    /** 区名 */
    private String areaName;

    /** 详细地址 */
    @NotBlank(message = "缺少详细地址", groups = {examRegistration.class})
    private String address;

    /** 邮编 */
    private String zipCode;

    /** 联系电话 */
    @NotBlank(message = "缺少联系电话", groups = {examRegistration.class})
    private String contactPhone;

    /** 电子邮箱 */
    private String email;

    /** 蓝底证件照 */
    @NotBlank(message = "缺少蓝底证件照", groups = {examRegistration.class})
    private String idPhoto;

    /** 身份证国徽面（正面） */
    @NotBlank(message = "缺少身份证国徽面（正面）", groups = {examRegistration.class})
    private String identityCardBadge;

    /** 身份证人像面（反面） */
    @NotBlank(message = "缺少身份证人像面（反面）", groups = {examRegistration.class})
    private String identityCardPortrait;

    /** 毕业证书（多个用英文逗号隔开） */
    // @NotBlank(message = "缺少毕业证书", groups = {examRegistration.class})
    private String graduationCertificate;

    /** 机构名称 */
    @NotBlank(message = "缺少机构名称", groups = {examRegistration.class})
    private String agencyName;

    /** 职业ID */
    private Long careerId;

    /** 职业名称 */
    @NotBlank(message = "缺少职业名称", groups = {examRegistration.class})
    private String careerName;

    /** 考试等级 */
    @NotBlank(message = "缺少考试等级", groups = {examRegistration.class})
    private String examLevel;

    /** 报名批次 */
    @NotBlank(message = "缺少报名批次", groups = {examRegistration.class})
    private String registrationBatch;

    /** 学习中心ID */
    @NotNull(message = "缺少学习中心ID", groups = {examRegistration.class})
    private Long studyCenterId;

    /** 学习中心 */
    @NotBlank(message = "缺少学习中心", groups = {examRegistration.class})
    private String studyCenter;

    /** 机构代码 */
    @NotBlank(message = "缺少机构代码", groups = {examRegistration.class})
    private String agencyCode;

    /** 是否自查申请资料完整性（0-否，1-是） */
    @NotNull(message = "缺少自查申请资料完整性", groups = {examRegistration.class})
    private Integer isInspect;

    /** 签字照 */
    // @NotBlank(message = "缺少签字照", groups = {examRegistration.class})
    private String signPhoto;

    /** 报名表 */
    @Excel(name = "报名表")
    private String registrationForm;

    /** 准考证 */
    @Excel(name = "准考证")
    private String admissionTicket;

    /** 成绩单 */
    @Excel(name = "成绩单")
    private String transcript;

    /** 证书 */
    @Excel(name = "证书")
    private String certificate;

    /** 证书邮寄状态（0-未上传地址，1-待发货，1-已发货） */
    @Excel(name = "证书邮寄状态", readConverterExp = "0=-未上传地址，1-待发货，1-已发货")
    private Integer certificateStatus;

    /** 填写地址时间 */
    @Excel(name = "填写地址时间")
    private String writeAt;

    /** 发货时间 */
    @Excel(name = "发货时间")
    private String consignAt;

    /** 确认收货时间 */
    @Excel(name = "确认收货时间")
    private String enterAt;

    /** 快递公司代号 */
    @Excel(name = "快递公司代号")
    private String shippingMark;

    /** 物流名称 */
    @Excel(name = "物流名称")
    private String shippingName;

    /** 物流单号 */
    @Excel(name = "物流单号")
    private String shippingCode;

    /** 机构ID */
    private Long agencyId;

    /** 课程D */
    private Long courseId;



}
