package LIMS::Controller::Admin;
use strict;
use base 'LIMS::Base';
##################### Runmodes #########################################
sub menu : StartRunmode {
my $self = shift; $self->_debug_path($self->get_current_runmode);
return $self->forbidden() unless $self->user_can('do_admin');
return $self->tt_process;
}
# ------------------------------------------------------------------------------
sub missing_data : Runmode {
my $self = shift; $self->_debug_path($self->get_current_runmode);
return $self->tt_process('site/message.tt');
}
################### Global #######################################
sub have_lab_sections {
my $self = shift; $self->_debug_path('have_lab_sections');
my $lab_sections = $self->model('LabSection')->get_lab_sections;
return @$lab_sections ? 1 : 0;
}
# ------------------------------------------------------------------------------
sub have_diagnostic_categories {
my $self = shift; $self->_debug_path('have_diagnostic_categories');
my $categories = $self->model('Diagnosis')->get_diagnostic_categories;
return @$categories ? 1 : 0;
}
# ------------------------------------------------------------------------------
sub have_request_audit_categories {
my $self = shift; $self->_debug_path('have_request_audit_categories');
my $categories = $self->model('RequestAudit')->get_audit_categories;
return @$categories ? 1 : 0;
}
# ------------------------------------------------------------------------------
sub have_lab_tests {
my $self = shift; $self->_debug_path('have_lab_sections');
my $lab_tests = $self->model('LabTest')->get_lab_tests;
return @$lab_tests ? 1 : 0;
}
=begin # replaced by $dfv->valid()
# ------------------------------------------------------------------------------
sub parse_input {
my $self = shift; $self->_debug_path('parse_input');
my $dfv = shift;
my $data = $dfv->valid || # ValidateRM/DFV should catch this, but:
$self->stash( error_msg => $self->messages('missing_data') );
if ( my $id = $self->param('id') ) {
$data->{id} = $id;
}
return $data;
}
=cut
=begin # this is not safe as params not explicitly set can be parsed:
my $q = $self->query;
my $vars = $q->Vars; # $self->debug( $vars );
if ( grep $q->param($_) eq '', keys %$vars ) { # if one of params is missing:
$self->stash( error_msg => $self->messages('missing_data') );
return;
}
# THIS IS LETHAL IF USING (BROKEN) CAD::Server - persists over requests:
$vars->{id} = $self->param('id') if $self->param('id');
return $vars;
=cut
# ------------------------------------------------------------------------------
sub get_user_functions {
my $self = shift; $self->_debug_path('get_user_functions');
my $group_functions = shift;
# array to contain composite user_functions data:
my @functions;
# grep function_id's from user_group_functions in list_mode:
my @group_functions_ids = map { $_->function_id } @$group_functions;
# get list of user_functions table data:
my $functions = $self->model('User')->get_user_functions;
foreach my $function( @$functions ) { # $self->debug($function->id);
# mark user_function active if user_function.id in @group_functions_ids array:
my $is_selected = grep { $function->id == $_, } @group_functions_ids;
# take user_function data into temp hash:
my %data = (
id => $function->id,
name => $function->function_name,
detail => $function->function_detail,
active => $function->active,
selected => $is_selected,
);
# push temp hash into array:
push @functions, \%data;
}
return \@functions;
}
1;