package LIMS::Controller::Admin::User::GroupFunction;
use strict;
use base 'LIMS::Controller::Admin';
__PACKAGE__->authz->authz_runmodes( ':all' => 'do_admin' );
#-------------------------------------------------------------------------------
sub default : StartRunmode {
my $self = shift; $self->_debug_path($self->get_current_runmode);
my $errs = shift;
# a re-direct from update() passes id as param:
if ( my $id = $self->param('id') ) {
$self->query->param(id => $id); # for next section and default.tt
}
my %data;
# get user_groups table data:
my $user_groups = $data{user_groups}
= $self->model('User')->get_user_groups({sort_by => 'group_label'});
# highlight no user_groups for tmpl:
if (! @$user_groups) {
$self->stash( error_msg => $self->messages('admin')->{no_groups} );
delete $data{user_groups}; # or mgs fails in tmpl due to empty arrayref
}
if ( my $group_id = $self->param('id') || $self->query->param('id') ) {
# get user_functions, with active => 1 if function.id also in user_group_functions table:
my $group_functions = $self->model('User')->get_user_group_functions($group_id);
my $user_functions = $data{user_functions}
= $self->get_user_functions($group_functions);
# highlight no user_functions for tmpl:
if (! @$user_functions) {
$self->stash( error_msg => $self->messages('admin')->{no_functions} );
delete $data{user_functions}; # or mgs fails in tmpl due to empty arrayref
}
}
map $self->tt_params($_ => $data{$_}), keys %data;
return $self->tt_process($errs);
}
#-------------------------------------------------------------------------------
sub update : Runmode {
my $self = shift; $self->_debug_path($self->get_current_runmode);
my $group_id = $self->param('id') || return $self->error('no id passed to '.$self->get_current_runmode);
my @function_ids = $self->query->param('function_id'); # $self->debug(\@function_ids);
unless (@function_ids) {
$self->flash(warning => $self->messages('group_functions')->{empty_functions_list});
}
my %args = (
function_ids => \@function_ids,
group_id => $group_id,
);
my $rtn = $self->model('User')->update_user_group_functions(\%args);
return $rtn ?
$self->error($rtn) :
$self->redirect( $self->query->url . '/admin/user_group-function/default/'.$group_id );
}
1;