package com.trade.service.tradingplatform.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.trade.common.core.dto.BaseI18nDto;
import com.trade.common.validate.ValidatorGroup;

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

/**
 * 贸易平台
 *
 * @author hlb
 * @since 2024-06-05 17:00:03
 */
public class TradingPlatformDto extends BaseI18nDto {

    /**
     * ID
     */
    private Long id;
    /**
     * 贸易平台名称
     */
    @NotBlank(message = "平台名称不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private String platformName;
    /**
     * 贸易平台编码
     */
    private String platformCode;
    /**
     * 所属地区，枚举类型district_code
     */
    @NotBlank(message = "所属地区不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private String districtCode;
    /**
     * 成立时间 yyyy-MM-dd
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @NotNull(message = "成立时间不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private Date establishDate;
    /**
     * 证件编号
     */
    @NotBlank(message = "证件编号不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private String certNo;
    /**
     * 法人代表
     */
    @NotBlank(message = "法人代表不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private String legalName;
    /**
     * 法人代表证件号
     */
    private String legalCertNo;

    /**
     * 法人代表手机
     */
    private String legalMobile;
    /**
     * 法人代表邮箱
     */
    private String legalEmail;
    /**
     * 注册地址
     */
    @NotBlank(message = "注册地址不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private String registerAddress;
    /**
     * 经营地址
     */
    @NotBlank(message = "经营地址不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private String businessAddress;
    /**
     * 联系人姓名
     */
    @NotBlank(message = "联系人姓名不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private String contactName;
    /**
     * 联系邮箱
     */
    @NotBlank(message = "联系邮箱不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private String contactEmail;
    /**
     * 联系电话
     */
    @NotBlank(message = "联系电话不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private String contactMobile;
    /**
     * 海关企业代码
     */
    @NotBlank(message = "海关企业代码不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private String customsEnterpriseCode;
    /**
     * 税号
     */
    @NotBlank(message = "税号不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private String taxNum;
    /**
     * 开户银行
     */
    @NotBlank(message = "开户银行不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private String bankName;
    /**
     * 银行卡号
     */
    @NotBlank(message = "银行卡号不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private String bankNum;
    /**
     * 是否拥有中信保保单，枚举：sys_yes_no
     */
    @NotBlank(message = "是否拥有中信保保单不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private String hasSinosureInsurance;
    /**
     * 备注信息
     */
    private String remark;
    /**
     * 保险信息
     */
    private TradingPlatformInsuranceDto insurance;
    /**
     * 资质信息
     */
    @NotNull(message = "资质信息不能为空", groups = {
            ValidatorGroup.Submit.class
    })
    private TradingPlatformQualificationDto qualification;
    /**
     * 创建者
     */
    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;
    /**
     * 主管税务机关，枚举：tax_authority_area
     */
    private String taxAuthorityArea;
    /**
     * 是否为草稿，ture为草稿，false为正式
     */
    private Boolean draft;
    /**
     * 出口退税办理人（小图管理员用户ID）
     */
    private Long xtAdminUserId;

    public Long getId() {
        return id;
    }

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

    public String getPlatformName() {
        return platformName;
    }

    public void setPlatformName(String platformName) {
        this.platformName = platformName;
    }

    public String getPlatformCode() {
        return platformCode;
    }

    public void setPlatformCode(String platformCode) {
        this.platformCode = platformCode;
    }

    public String getDistrictCode() {
        return districtCode;
    }

    public void setDistrictCode(String districtCode) {
        this.districtCode = districtCode;
    }

    public Date getEstablishDate() {
        return establishDate;
    }

    public void setEstablishDate(Date establishDate) {
        this.establishDate = establishDate;
    }

    public String getCertNo() {
        return certNo;
    }

    public void setCertNo(String certNo) {
        this.certNo = certNo;
    }

    public String getLegalName() {
        return legalName;
    }

    public void setLegalName(String legalName) {
        this.legalName = legalName;
    }

    public String getLegalCertNo() {
        return legalCertNo;
    }

    public void setLegalCertNo(String legalCertNo) {
        this.legalCertNo = legalCertNo;
    }

    public String getLegalMobile() {
        return legalMobile;
    }

    public void setLegalMobile(String legalMobile) {
        this.legalMobile = legalMobile;
    }

    public String getLegalEmail() {
        return legalEmail;
    }

    public void setLegalEmail(String legalEmail) {
        this.legalEmail = legalEmail;
    }

    public String getRegisterAddress() {
        return registerAddress;
    }

    public void setRegisterAddress(String registerAddress) {
        this.registerAddress = registerAddress;
    }

    public String getBusinessAddress() {
        return businessAddress;
    }

    public void setBusinessAddress(String businessAddress) {
        this.businessAddress = businessAddress;
    }

    public String getContactName() {
        return contactName;
    }

    public void setContactName(String contactName) {
        this.contactName = contactName;
    }

    public String getContactEmail() {
        return contactEmail;
    }

    public void setContactEmail(String contactEmail) {
        this.contactEmail = contactEmail;
    }

    public String getContactMobile() {
        return contactMobile;
    }

    public void setContactMobile(String contactMobile) {
        this.contactMobile = contactMobile;
    }

    public String getCustomsEnterpriseCode() {
        return customsEnterpriseCode;
    }

    public void setCustomsEnterpriseCode(String customsEnterpriseCode) {
        this.customsEnterpriseCode = customsEnterpriseCode;
    }

    public String getTaxNum() {
        return taxNum;
    }

    public void setTaxNum(String taxNum) {
        this.taxNum = taxNum;
    }

    public String getBankName() {
        return bankName;
    }

    public void setBankName(String bankName) {
        this.bankName = bankName;
    }

    public String getBankNum() {
        return bankNum;
    }

    public void setBankNum(String bankNum) {
        this.bankNum = bankNum;
    }

    public String getHasSinosureInsurance() {
        return hasSinosureInsurance;
    }

    public void setHasSinosureInsurance(String hasSinosureInsurance) {
        this.hasSinosureInsurance = hasSinosureInsurance;
    }

    public String getRemark() {
        return remark;
    }

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

    public TradingPlatformInsuranceDto getInsurance() {
        return insurance;
    }

    public void setInsurance(TradingPlatformInsuranceDto insurance) {
        this.insurance = insurance;
    }

    public TradingPlatformQualificationDto getQualification() {
        return qualification;
    }

    public void setQualification(TradingPlatformQualificationDto qualification) {
        this.qualification = qualification;
    }

    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;
    }

    public String getTaxAuthorityArea() {
        return taxAuthorityArea;
    }

    public void setTaxAuthorityArea(String taxAuthorityArea) {
        this.taxAuthorityArea = taxAuthorityArea;
    }

    public Boolean getDraft() {
        return draft;
    }

    public void setDraft(Boolean draft) {
        this.draft = draft;
    }

    public Long getXtAdminUserId() {
        return xtAdminUserId;
    }

    public void setXtAdminUserId(Long xtAdminUserId) {
        this.xtAdminUserId = xtAdminUserId;
    }

    public String getPlatformNameEn() {
        return getI18nValue("platformName", "en");
    }

    public String getRegisterAddressEn() {
        return getI18nValue("registerAddress", "en");
    }

    public String getBusinessAddressEn() {
        return getI18nValue("businessAddress", "en");
    }

    public String getContactNameEn() {
        return getI18nValue("contactName", "en");
    }
}
