isDataWhereMatchOne method

dynamic isDataWhereMatchOne(
  1. dynamic dataRow,
  2. String where
)

Implementation

isDataWhereMatchOne(dataRow, String where) {
  myLogAll('isDataWhereMatchOne');
  where = getTableWhereValue(where, '=', false);
  if (where.contains('>=')) {
    List whereS = where.split('>=');

    return toNumeric(expressValue(dataRow, removeBracket(whereS[0]))) >=
        toNumeric(whereS[1]);
  }
  if (where.contains('<=')) {
    List whereS = where.split('<=');
    return toNumeric(expressValue(dataRow, removeBracket(whereS[0]))) <=
        toNumeric(whereS[1]);
  }
  if (where.contains('!=')) {
    List whereS = where.split('!=');
    var aValue = expressValue(dataRow, removeBracket(whereS[0])) ?? '';
    return (aValue != whereS[1]) && ("'$aValue'" != whereS[1]);
  }
  if (where.contains('=')) {
    List whereS = where.split('=');
    var aValue = expressValue(dataRow, removeBracket(whereS[0])) ?? '';
    return (aValue == whereS[1] || "'$aValue'" == whereS[1]);
  }
  if (where.contains('>')) {
    List whereS = where.split('>');
    //print('================= ${expressValue(dataRow, removeBracket(whereS[0]))}');
    //print('================= ${whereS[1]}');
    dynamic d0 = toNumeric(expressValue(dataRow, removeBracket(whereS[0])));
    dynamic d1 = toNumeric(whereS[1]);
    return d0 > d1;
  }
  if (where.contains('<')) {
    List whereS = where.split('<');
    return toNumeric(expressValue(dataRow, removeBracket(whereS[0]))) <
        toNumeric(whereS[1]);
  }
  if (where.contains(' between ')) {
    List whereS = where.split(' between '); // (balance-hold) between [0,100)
    String left = '>=';
    String right = '<=';
    String whereS1 = whereS[1].toString();
    if (whereS1.startsWith('(')) {
      left = '>';
    }
    whereS1 = whereS1.substring(1);
    if (whereS1.endsWith(')')) {
      right = '<';
    }
    whereS1 = whereS1.substring(0, whereS1.length - 1);
    List whereS1A = whereS1.split(',');

    if (!isDataWhereMatchOne(dataRow, '${whereS[0]}$left${whereS1A[0]}')) {
      return false;
    }
    if (!isDataWhereMatchOne(dataRow, '${whereS[0]}$right${whereS1A[1]}')) {
      return false;
    }

    return true;
  }
}