# if someone types something, and hits enter, assume he entered the full name.
# if something matches, treat that as the sole match
- # unfortunately get_models can't do more than one per package atm, so we do it
- # the oldfashioned way.
+ # since we need a second get models instance with different filters for that,
+ # we only modify the original filter temporarily in place
if ($::form->{prefer_exact}) {
+ local $::form->{filter}{'all::ilike'} = delete local $::form->{filter}{'all:substr:multi::ilike'};
+ # active and valid filters are use as they are
+
+ my $exact_models = SL::Controller::Helper::GetModels->new(
+ controller => $self,
+ sorted => 0,
+ paginated => { per_page => 2 },
+ with_objects => [ 'customer', 'project_status', 'project_type' ],
+ );
my $exact_matches;
- if (1 == scalar @{ $exact_matches = SL::DB::Manager::Project->get_all(
- query => [
- valid => 1,
- or => [
- description => { ilike => $::form->{filter}{'all:substr:multi::ilike'} },
- projectnumber => { ilike => $::form->{filter}{'all:substr:multi::ilike'} },
- ]
- ],
- limit => 2,
- ) }) {
- $self->projects($exact_matches);
+ if (1 == scalar @{ $exact_matches = $exact_models->get }) {
+ $self->project($exact_matches);
}
}