package LIMS::Controller::Storage; use Moose; # if using 'extends', need to run at compile time to load attribute handlers # from parent class otherwise StartRunmode, Runmode, etc fails - hack around AutoRunmode BEGIN { extends 'LIMS::Base'; } with ( 'LIMS::Controller::Roles::RecordHandler', ); __PACKAGE__->meta->make_immutable(inline_constructor => 0); use Data::Dumper; # ------------------------------------------------------------------------------ # default() should never be called direct - redirect to start page: sub default : StartRunmode { my $self = shift; $self->_debug_path($self->get_current_runmode); return $self->redirect( $self->query->url ); } # ------------------------------------------------------------------------------ sub load : Runmode { my $self = shift; $self->_debug_path($self->get_current_runmode); my $errs = shift; my $request_id = $self->param('id') || return $self->error('no id passed to ' . $self->get_current_runmode); # get request data: my $request_data = $self->model('Request')->get_single_request($request_id); # get existing storage data: my $storage = $self->model('Storage')->get_request_storage($request_id); # get list of existing samples in storage my %specimens = map { $_->specimen->sample_code => 1 } @$storage; # get specimen map for request: my $specimen_map = $self->specimen_map([ $request_id ]); # warn Dumper $specimen_map; $self->tt_params( request_data => $request_data, specimen_map => $specimen_map, specimens => \%specimens, storage => $storage, ); return $self->render_view($self->tt_template_name); } # ------------------------------------------------------------------------------ sub input : Runmode { my $self = shift; $self->_debug_path($self->get_current_runmode); my $errs = shift; my $request_id = $self->param('id') || return $self->error('no id passed to ' . $self->get_current_runmode); my $params = $self->query->Vars; warn Dumper $params; $params->{request_id} = $request_id; my $rtn = $self->model('Storage')->input_storage($params); # insert flash message return $self->redirect( $self->query->url . '/storage/=/' . $request_id ); } # ------------------------------------------------------------------------------ sub output : Runmode { my $self = shift; $self->_debug_path($self->get_current_runmode); my $errs = shift; my $request_id = $self->param('id') || return $self->error('no id passed to ' . $self->get_current_runmode); my %params = $self->query->Vars; warn Dumper \%params; # insert flash message return $self->redirect( $self->query->url . '/storage/=/' . $request_id ); } 1;