RSS Git Download  Clone
Raw Blame History
package LIMS::Controller::Admin::Config::OutreachPractices;

use base 'LIMS::Base';

use LIMS::Local::Sugar;
use Data::Dumper;

__PACKAGE__->authz->authz_runmodes(	':all' => 'do_admin' );

# 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 $practices = $self->model('Outreach')->get_outreach_practices;
        
        # extract & add post_code info:
        for (@$practices) {
            my $address = $_->{display_name};
            my @addr = split ', ', $address;
            $_->{post_code} = $addr[-1]; # last entry
        }
        $self->tt_params( practices => $practices );
    }   
    
    { # current practice overrides as hashref of practice_id => tube_type:
        my $practices = $self->model('Outreach')->get_blood_tube_overrides;
        $self->tt_params( overrides => $practices );
    }

    { # callback for default blood-tube-type:
        require LIMS::Controller::Outreach; # load at run-time not compile-time !!
        $self->tt_params( tube_type => sub {
            LIMS::Controller::Outreach::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:
        require LIMS::Controller::Outreach; # load at run-time not compile-time !!
        $self->tt_params( tube_type => sub {
            LIMS::Controller::Outreach::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;