package LIMS::Controller::Admin::Config::OutreachPractices;
use base 'LIMS::Base';
use LIMS::Local::Sugar;
use Data::Dumper;
use Moose;
with (
'LIMS::Controller::Roles::Misc', # get_blood_tube_type()
);
__PACKAGE__->meta->make_immutable(inline_constructor => 0);
__PACKAGE__->authz->authz_runmodes( ':all' => 'edit_outreach_data' );
# class doesn't handle errors; only valid actions are to insert new row with
# pre-determined value, or delete existing row - no relevant submissions errors
#-------------------------------------------------------------------------------
startmode default {
$self->_debug_path($self->get_current_runmode);
{ # get all outreach practices:
my $data = $self->model('Outreach')->get_outreach_practices;
# extract & add post_code info:
for (@$data) {
my $address = $_->{display_name};
my @addr = split ', ', $address;
$_->{post_code} = $addr[-1]; # last entry
}
$self->tt_params( practices => $data );
}
{ # callback for default blood-tube-type:
my $_self = $self; weaken $_self; # or get circular refs inside the callbacks
$self->tt_params( tube_type => sub { $_self->get_blood_tube_type(@_) } );
}
return $self->tt_process;
}
# -------------------------------------------------------------------------------------
runmode edit ($id) {
$self->_debug_path($self->get_current_runmode);
$id || return $self->error('no id passed to '.$self->get_current_runmode); # $self->debug('id:'.$id);
my $data = $self->model('Outreach')->get_practice_blood_tube($id)->as_tree;
{ # get post-code data:
my $address = $data->{display_name};
my @addr = split ', ', $address;
$data->{post_code} = $addr[-1]; # last entry
}
$self->tt_params( data => $data );
{ # callback for default blood-tube-type:
my $_self = $self; weaken $_self; # or get circular refs inside the callbacks
$self->tt_params( tube_type => sub { $_self->get_blood_tube_type(@_) } );
}
return $self->tt_process();
}
#-------------------------------------------------------------------------------
runmode update ($id) {
$self->_debug_path($self->get_current_runmode);
my $vars = $self->query->Vars(); # warn Dumper $vars;
$vars->{practice_id} = $id;
my $rtn = $self->model('Outreach')->update_practice_blood_tube($vars);
return $rtn
? $self->error($rtn)
: $self->redirect( $self->query->url . '/config/outreach-practices' );
}
1;