# group 2 = phone, ident
# group 3 = barcode
- my $usr = join ' AND ', map { "evergreen.lowercase(CAST($_ AS text)) ~ ?" } grep { ''.$$search{$_}{group} eq '0' } keys %$search;
- my @usrv = map { "^" . _clean_regex_chars($$search{$_}{value}) } grep { ''.$$search{$_}{group} eq '0' } keys %$search;
+ my ($usr, @usrv, @usr_key_list, @addr_key_list);
+ for my $k (keys %search) {
+ push @usr_key_list, $k if (''.$$search{$k}{group} eq '0' and $$search{$k}{value});
+ push @addr_key_list, $k if (''.$$search{$k}{group} eq '1' and $$search{$k}{value});
+ }
+
+ my $usr = join ' AND ', map { "evergreen.lowercase(CAST($_ AS text)) ~ ?" } @usr_key_list;
+ my @usrv = map { "^" . _clean_regex_chars($$search{$_}{value}) } @usr_key_list;
- my $addr = join ' AND ', map { "evergreen.lowercase(CAST($_ AS text)) ~ ?" } grep { ''.$$search{$_}{group} eq '1' } keys %$search;
- my @addrv = map { "^" . _clean_regex_chars($$search{$_}{value}) } grep { ''.$$search{$_}{group} eq '1' } keys %$search;
+ my $addr = join ' AND ', map { "evergreen.lowercase(CAST($_ AS text)) ~ ?" } @addr_key_list;
+ my @addrv = map { "^" . _clean_regex_chars($$search{$_}{value}) } @addr_key_list
my $pv = _clean_regex_chars($$search{phone}{value});
my $iv = _clean_regex_chars($$search{ident}{value});