/**
  * @param $operator
  * @param $left_found
  * @param $left
  * @param $right
  *
  * @return bool
  * @throws InternalServerErrorException
  */
 public static function compareByOperator($operator, $left_found, $left, $right)
 {
     switch ($operator) {
         case DbFilterOperators::EQ:
             return $left == $right;
         case DbFilterOperators::NE:
             return $left != $right;
         case DbFilterOperators::GT:
             return $left > $right;
         case DbFilterOperators::LT:
             return $left < $right;
         case DbFilterOperators::GE:
             return $left >= $right;
         case DbFilterOperators::LE:
             return $left <= $right;
         case DbFilterOperators::STARTS_WITH:
             return static::startsWith($left, $right);
         case DbFilterOperators::ENDS_WITH:
             return static::endswith($left, $right);
         case DbFilterOperators::CONTAINS:
             return false !== strpos($left, $right);
         case DbFilterOperators::IN:
             return ArrayUtils::isInList($right, $left);
         case DbFilterOperators::NOT_IN:
             return !ArrayUtils::isInList($right, $left);
         case DbFilterOperators::IS_NULL:
             return is_null($left);
         case DbFilterOperators::IS_NOT_NULL:
             return !is_null($left);
         case DbFilterOperators::DOES_EXIST:
             return $left_found;
         case DbFilterOperators::DOES_NOT_EXIST:
             return !$left_found;
         default:
             throw new InternalServerErrorException('Invalid server configuration detected.');
     }
 }