package LIMS::Controller::Roles::Resource;
use Moose::Role;
use Data::Dumper;
sub new_and_relapsed_diagnoses {
my $self = shift;
my $org_code = shift; # optional
my %data;
{ # get map of user locations => region_code:
my $locations_map = $self->user_locations_map;
$data{locations_map} = $locations_map;
}
# if we have an org_code to search on:
if ($org_code) {
my $duration = $self->query->param('duration') || 7; # default
my %args = (
org_code => $org_code,
duration => $duration,
);
my $data = $self->model('Request')->get_new_and_relapsed_cases(\%args);
# sort data by report_history.time since Rose can't do it:
my @sorted = sort { # warn Dumper $a->request_history->time;
my $A = $a->request_history->[0]->time->truncate( to => 'day' );
my $B = $b->request_history->[0]->time->truncate( to => 'day' );
DateTime->compare( $A, $B ) # date 1st
|| $a->year <=> $b->year # year 2nd
|| $a->request_number <=> $b->request_number; # req_no 3rd
} @$data; # warn Dumper \@sorted;
$data{results} = \@sorted;
}
return \%data;
}
sub get_admin_messages {
my ($self, $user_location) = @_;
my $user_type = # is user internal or external?
$user_location eq $self->cfg('settings')->{lab_name_abbreviation}
? 'internal'
: 'external';
my $messages = $self->model('User')->get_admin_messages($user_type);
return $messages;
}
sub get_user_messages {
my ($self, $user_id) = @_;
my $messages = $self->model('User')->get_user_messages($user_id);
return $messages;
}
1;