
package com.sikey.wa04.business.domain.entity;

import com.sikey.wa04.common.constants.PatternConstant;

import java.util.regex.Pattern;

public record PhoneNumber(
        /* 号码 */
        String number,
        /* 国际区号 */
        String areaCode
) {

    /**
     * 手机号是否有效的
     *
     * @return 是否有效
     */
    public boolean isValid() {
        if (number == null || areaCode == null) {
            return false;
        }
        // 正则表达式验证
        // 国外手机号校验有问题，暂时注释掉
        // 这个正则表达式不支持国外号码
//        return Pattern.compile(PatternConstant.PHONE_PATTERN)
//                .matcher(number)
//                .matches();
        return true;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof PhoneNumber(String number1, String code)) {
            return code.equals(areaCode) && number1.equals(number);
        }
        return false;
    }

    @Override
    public String toString() {
        return String.format("+%s %s", areaCode, number);
    }
}
