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;