package com.trade.service.enterprise.customer.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.trade.common.core.dto.BaseDTO;
import com.trade.common.validate.ValidatorGroup;
import com.trade.service.filestorage.dto.FileAbstractDto;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import java.util.Date;

/**
 * 企业相关人员
 *
 * @author hlb
 * @since 2024-05-29 15:07:43
 */
public class EnterpriseRelatedPersonDto extends BaseDTO {

    /**
     * 主键id
     */
    private Long id;
    /**
     * 企业变更记录ID
     */
    private Long enterpriseChangeRecordId;
    /**
     * 证件签发国家/地区，枚举：country_code
     */
    private String countryCode;
    /**
     * 证件类型，枚举值：personal_cert_type
     */
    private String personalCertType;
    /**
     * 证件号码
     */
    @NotBlank(message = "证件号码不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    @Pattern(regexp = "(\\d{14}[0-9a-zA-Z])|(\\d{17}[0-9a-zA-Z])", message = "证件号码格式不正确", groups = {
            ValidatorGroup.Submit.class
    })
    private String personalCertNo;
    /**
     * 人员名
     */
    @NotBlank(message = "姓名不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private String name;
    /**
     * 人员联系电话
     */
    @NotBlank(message = "手机不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    @Pattern(regexp = "^1[3456789]\\d{9}$", message = "手机号码格式不正确", groups = {
            ValidatorGroup.Submit.class
    })
    private String mobile;
    /**
     * 人员联系邮箱
     */
    @Pattern(regexp = "^([\\S]+@)([\\S]+[\\.])[\\S]+$", message = "邮箱格式不正确", groups = {
            ValidatorGroup.Submit.class
    })
    private String email;
    /**
     * 生日 yyyy-MM-dd
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthday;
    /**
     * 是否被授权人，默认N，不是被授权人，枚举：sys_yes_no
     */
    private String isAuthorizedPerson;
    /**
     * 是否法人（中国），默认N，不是法人，枚举：sys_yes_no
     */
    private String isLegalPerson;
    /**
     * 是否是董事（香港），默认N，不是董事，枚举：sys_yes_no
     */
    private String isDirector;
    /**
     * 是否最终受益人，默认N，不是最终受益人，枚举：sys_yes_no
     */
    private String isBeneficiary;
    /**
     * 是否财务负责人（中国），默认N，不是财务负责人，枚举：sys_yes_no
     */
    private String isFinancePerson;
    /**
     * 是否为实控人，默认N，枚举：sys_yes_no
     */
    private String isControl;
    /**
     * 人员证件地址
     */
    private String address;
    /**
     * 实际居住地址
     */
    private String liveAddress;
    /**
     * 婚姻状况(0-未婚,1-已婚,2-离异,3-丧偶 )，枚举：marriage_status
     */
    private String marriageStatus;
    /**
     * 备注
     */
    private String remark;
    /**
     * 身份证正面文件id
     */
    private FileAbstractDto idCardFront;
    /**
     * 身份证反面文件id
     */
    private FileAbstractDto idCardBack;
    /**
     * 授权委托书id
     */
    private FileAbstractDto authorizationFile;
    /**
     * 授权书签署状态，枚举：sys_sign_status
     */
    private String authorizationFileSigned;
    /**
     * 签署日期
     */
    private Date signDate;
    /**
     * 创建者
     */
    private String createBy;
    /**
     * 更新者
     */
    private String updateBy;
    /**
     * 创建时间 yyyy-MM-dd HH:mm:ss
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date gmtCreate;
    /**
     * 修改时间 yyyy-MM-dd HH:mm:ss
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date gmtModified;

    public Long getId() {
        return id;
    }

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

    public Long getEnterpriseChangeRecordId() {
        return enterpriseChangeRecordId;
    }

    public void setEnterpriseChangeRecordId(Long enterpriseChangeRecordId) {
        this.enterpriseChangeRecordId = enterpriseChangeRecordId;
    }

    public String getCountryCode() {
        return countryCode;
    }

    public void setCountryCode(String countryCode) {
        this.countryCode = countryCode;
    }

    public String getPersonalCertType() {
        return personalCertType;
    }

    public void setPersonalCertType(String personalCertType) {
        this.personalCertType = personalCertType;
    }

    public String getPersonalCertNo() {
        return personalCertNo;
    }

    public void setPersonalCertNo(String personalCertNo) {
        this.personalCertNo = personalCertNo;
    }

    public String getName() {
        return name;
    }

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

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getEmail() {
        return email;
    }

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

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getIsAuthorizedPerson() {
        return isAuthorizedPerson;
    }

    public void setIsAuthorizedPerson(String isAuthorizedPerson) {
        this.isAuthorizedPerson = isAuthorizedPerson;
    }

    public String getIsLegalPerson() {
        return isLegalPerson;
    }

    public void setIsLegalPerson(String isLegalPerson) {
        this.isLegalPerson = isLegalPerson;
    }

    public String getIsDirector() {
        return isDirector;
    }

    public void setIsDirector(String isDirector) {
        this.isDirector = isDirector;
    }

    public String getIsBeneficiary() {
        return isBeneficiary;
    }

    public void setIsBeneficiary(String isBeneficiary) {
        this.isBeneficiary = isBeneficiary;
    }

    public String getIsFinancePerson() {
        return isFinancePerson;
    }

    public void setIsFinancePerson(String isFinancePerson) {
        this.isFinancePerson = isFinancePerson;
    }

    public String getIsControl() {
        return isControl;
    }

    public void setIsControl(String isControl) {
        this.isControl = isControl;
    }

    public String getAddress() {
        return address;
    }

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

    public String getLiveAddress() {
        return liveAddress;
    }

    public void setLiveAddress(String liveAddress) {
        this.liveAddress = liveAddress;
    }

    public String getMarriageStatus() {
        return marriageStatus;
    }

    public void setMarriageStatus(String marriageStatus) {
        this.marriageStatus = marriageStatus;
    }

    public String getRemark() {
        return remark;
    }

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

    public FileAbstractDto getIdCardFront() {
        return idCardFront;
    }

    public void setIdCardFront(FileAbstractDto idCardFront) {
        this.idCardFront = idCardFront;
    }

    public FileAbstractDto getIdCardBack() {
        return idCardBack;
    }

    public void setIdCardBack(FileAbstractDto idCardBack) {
        this.idCardBack = idCardBack;
    }

    public FileAbstractDto getAuthorizationFile() {
        return authorizationFile;
    }

    public void setAuthorizationFile(FileAbstractDto authorizationFile) {
        this.authorizationFile = authorizationFile;
    }

    public String getAuthorizationFileSigned() {
        return authorizationFileSigned;
    }

    public void setAuthorizationFileSigned(String authorizationFileSigned) {
        this.authorizationFileSigned = authorizationFileSigned;
    }

    public Date getSignDate() {
        return signDate;
    }

    public void setSignDate(Date signDate) {
        this.signDate = signDate;
    }

    public String getCreateBy() {
        return createBy;
    }

    public void setCreateBy(String createBy) {
        this.createBy = createBy;
    }

    public String getUpdateBy() {
        return updateBy;
    }

    public void setUpdateBy(String updateBy) {
        this.updateBy = updateBy;
    }

    public Date getGmtCreate() {
        return gmtCreate;
    }

    public void setGmtCreate(Date gmtCreate) {
        this.gmtCreate = gmtCreate;
    }

    public Date getGmtModified() {
        return gmtModified;
    }

    public void setGmtModified(Date gmtModified) {
        this.gmtModified = gmtModified;
    }
}
