package LIMS::Controller::Roles::SearchConstraint;
use Moose::Role;
use LIMS::Local::Search;
sub generate_search_constraints {
my ($self, $data) = @_; # $self->debug($data);
# need to do specimen code lookup if search includes specimen:
if ( my $specimen_code = $data->{specimen_code} ) { # warn $sample_code;
$data->{specimen_id}
= $self->model('Specimen')->get_specimen_id($specimen_code);
# delete specimen_code key - no field to match against:
delete $data->{specimen_code};
}
my $user_profile = $self->authen->store->fetch('yooza_profile');
# args for search object:
my %args = (
form_fields => $data,
user_profile => $user_profile,
);
# create search object:
my $search = LIMS::Local::Search->new(\%args);
# generate query from form fields as hashref:
my $query = $search->generate_query; # $self->debug($query);
if (%$query) {
return $query; # return hashref
}
else {
$self->stash->{error_msg} = $self->messages('search')->{empty_submission};
return 0;
}
}
1;