package com.jeequan.jeepay.core.model.applyment;

import com.jeequan.jeepay.core.entity.MchApplyment;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

@Data
public class SftpayApplymentInfo extends ApplymentBasicInfo {

    public final static String IDENTIFICATION_TYPE_MAINLAND_IDCARD = "IDENTIFICATION_TYPE_MAINLAND_IDCARD"; // 中国大陆居民-身份证
    public final static String IDENTIFICATION_TYPE_OVERSEA_PASSPORT = "IDENTIFICATION_TYPE_OVERSEA_PASSPORT"; // 其他国家或地区居民-护照
    public final static String IDENTIFICATION_TYPE_HONGKONG = "IDENTIFICATION_TYPE_HONGKONG"; // 中国香港居民–来往内地通行证
    public final static String IDENTIFICATION_TYPE_MACAO = "IDENTIFICATION_TYPE_MACAO"; // 中国澳门居民–来往内地通行证
    public final static String IDENTIFICATION_TYPE_TAIWAN = "IDENTIFICATION_TYPE_TAIWAN"; // 中国台湾居民–来往大陆通行证

    /** 超级管理员类型 */
    protected String contactType;

    /** 超级管理员身份证件号码 */
    protected String contactIdNumber;

    /** 超管身份证人像面照片 */
    protected String contactIdDocCopy;

    /** 超管身份证国徽面照片 */
    protected String contactIdDocCopyBack;

    /** 超管身份证起始有效期 */
    protected String contactIdDocPeriodBegin;

    /** 超管身份证结束有效期 */
    protected String contactIdDocPeriodEnd;

    /** 业务办理授权函 */
    protected String businessAuthorizationLetter;

    /** 店铺名称 */
    protected String storeName;

    /** 店铺链接 */
    protected String storeUrl;

    /** 店铺二维码 */
    protected String storeQrCode;

    /** 小程序appId */
    protected String miniProgramSubAppid;

    /** 页面展示用开户行，实际传值使用父类的开户行名称 */
    protected String accountBankNameShow;

    /** 是否需要传入分支  */
    protected String needBankBranch;

    /** 银行别名编码，请求银行分支时使用  */
    protected String bankAliasCode;

    /** 入驻结算规则ID  */
    protected Integer settlementId;

    /** 所属行业   */
    protected String qualificationType;

    /** 是否需要上传特殊资质   */
    protected Boolean isNeedQualification;

    /** 特殊资质   */
    protected String qualifications;

    /** 法人是否为受益人   */
    protected Boolean owner;


    /** 主体类型转换：标准格式 ---》 接口自定义格式 **/
    public String convertMerchantType(Byte merchantType){

        if(merchantType == null){
            return null;
        }

        if(merchantType == MchApplyment.MERCHANT_TYPE_PERSONAL){
            return "2401";
        }else if(merchantType == MchApplyment.MERCHANT_TYPE_PERSONAL_SELLER){
            return "2500";
        }else if(merchantType == MchApplyment.MERCHANT_TYPE_INDIVIDUAL){
            return "4";
        }else if(merchantType == MchApplyment.MERCHANT_TYPE_ENTERPRISE){
            return "2";
        }
        return null;
    }

    /** 结算账号类型转换：标准格式 ---》 接口自定义格式 **/
    public String convertSettAccountType(String settAccountType){

        if(StringUtils.isEmpty(settAccountType)){
            return null;
        }

        if(settAccountType.equals(MchApplyment.SETT_ACCOUNT_TYPE_CORPORATE)){
            return "74";
        }else if(settAccountType.equals(MchApplyment.SETT_ACCOUNT_TYPE_PERSONAL)){
            return "75";
        }
        return null;
    }


    @Override
    public String bankBranchNo() {
        return null;
    }
}
