isItemValueValidStr method

dynamic isItemValueValidStr(
  1. dynamic item,
  2. dynamic value
)

Implementation

isItemValueValidStr(item, value) {
  myLogAll('isItemValueValidStr');
  if (isNull(item)) {
    return '';
  }
  item[gRequired] = item[gRequired] ?? false;
  if (item[gRequired] && isNull(value)) {
    //return getSCurrent(item[gLabel]) + getSCurrent(' $gIsrequired');
    return gRequired;
  }
  item[gType] = item[gType] ?? gText;
  if (item[gType] == gEmail &&
      !isNull(value) &&
      !RegExp(r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+")
          .hasMatch(value)) {
    return getSCurrent('Invalid email');
  }
  //us phone: ^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$
  //       or: ^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$

  //ca:^\([1-9]\d\d\)\d\d\d-\d\d\d\d$ 或  ^\([1-9][0-9][0-9]\)[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$ 或^\([1-9]\d{2}\)\d{3}-\d{4}$
  if (item[gType] == gPhone &&
      !isNull(value) &&
      !RegExp(r"^\([1-9]\d{2}\)\d{3}-\d{4}$").hasMatch(value)) {
    return getSCurrent('Invalid phone');
  }
  if (item[gType] == '$gEmail,$gPhone' &&
      !isNull(value) &&
      !RegExp(r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+")
          .hasMatch(value) &&
      !RegExp(r"^\([1-9]\d{2}\)\d{3}-\d{4}$").hasMatch(value)) {
    return getSCurrent('Invalid email or phone');
  }

  //post code canada: ^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$
  //post code us: ^[0-9]{5}([- /]?[0-9]{4})?$

  //url:((http|ftp|https):\/\/)(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,4})*(\/[a-zA-Z0-9\&%_\.\/-~-]*)?
  if (item[gType] == gUrl &&
      !isNull(value) &&
      !RegExp(r"^((http|ftp|https):\/\/)(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,4})*(\/[a-zA-Z0-9\&%_\.\/-~-]*)?")
          .hasMatch(value)) {
    return getSCurrent('Invalid url');
  }

  if (item[gMinLength] != null &&
      item[gMinLength] != '0' &&
      !isNull(value) &&
      value.toString().length < item[gMinLength]) {
    return getSCurrent(
        "$gMininput{${item[gMinLength]}}{${(isNull(item[gUnit]) ? gCharacter : item[gUnit])}}");
  }
  if (item[gLength] != null &&
      item[gLength] != '0' &&
      !isNull(value) &&
      value.toString().length > item[gLength]) {
    return getSCurrent(
        "$gMaxinput{${item[gLength]}}{${(isNull(item[gUnit]) ? gCharacter : item[gUnit])}}");
  }

  return '';
}