From a4c6a51c80574d140337d97fbd806fbcb08fb12e Mon Sep 17 00:00:00 2001 From: titima15 Date: Wed, 23 Oct 2024 16:47:39 -0400 Subject: [PATCH] added source info for record page --- lib/SGN/Controller/AJAX/TrackingActivity.pm | 11 ++++++----- lib/SGN/Controller/ActivityInfo.pm | 21 ++++++++++++++++++++- mason/tracking_activities/record_activity.mas | 2 ++ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/lib/SGN/Controller/AJAX/TrackingActivity.pm b/lib/SGN/Controller/AJAX/TrackingActivity.pm index 7a785ad9d2..fc5a12180a 100644 --- a/lib/SGN/Controller/AJAX/TrackingActivity.pm +++ b/lib/SGN/Controller/AJAX/TrackingActivity.pm @@ -242,6 +242,7 @@ sub activity_info_save_POST : Args(0) { my $record_timestamp = $c->req->param("record_timestamp"); my $activity_type = $c->req->param("activity_type"); my $program_name = $c->req->param("program_name"); + my $source_info = $c->req->param("source_info"); my $tracking_transformation = $c->config->{tracking_transformation}; if (!$c->user()) { @@ -284,13 +285,13 @@ sub activity_info_save_POST : Args(0) { if ($linked_project_id) { my $new_names_info; - my $stored_prefix = $schema->resultset('Project::Projectprop')->find({ project_id => $linked_project_id, type_id => $autogenerated_name_prefix_cvterm_id}); - if (!$stored_prefix) { + my $stored_name_format = $schema->resultset('Project::Projectprop')->find({ project_id => $linked_project_id, type_id => $autogenerated_name_prefix_cvterm_id}); + if (!$stored_name_format) { $c->stash->{rest} = {error => "Please set up prefix for autogenerated names for this transformation project before using tracking tool"}; return; } else { - my $prefix = $stored_prefix->value(); - my $autogenerated_names = CXGN::Transformation::CreateAutogeneratedNames->new({schema => $schema, dbh => $dbh, breeding_program_id => $program_id, prefix => $prefix, number_of_names => $number_of_transformants }); + my $name_format = $stored_name_format->value(); + my $autogenerated_names = CXGN::Transformation::CreateAutogeneratedNames->new({schema => $schema, dbh => $dbh, breeding_program_id => $program_id, name_format => $name_format, number_of_names => $number_of_transformants, source_info => $source_info }); my $return = $autogenerated_names->create_names(); if (!$return){ $c->stash->{rest} = {error => "Error generating transformant names"}; @@ -322,7 +323,7 @@ sub activity_info_save_POST : Args(0) { if ($metadata_projectprop_rs->count == 1){ my $stored_name_metadata_string = $metadata_projectprop_rs->first->value(); my $name_metadata_hash = decode_json $stored_name_metadata_string; - $name_metadata_hash->{$prefix}->{'last_serial_number'} = $new_last_serial_number; + $name_metadata_hash->{$name_format}->{'last_serial_number'} = $new_last_serial_number; my $new_name_metadata_string = encode_json $name_metadata_hash; $metadata_projectprop_rs->first->update({value=>$new_name_metadata_string}); } diff --git a/lib/SGN/Controller/ActivityInfo.pm b/lib/SGN/Controller/ActivityInfo.pm index d11fe6c785..8c4f25cc0d 100644 --- a/lib/SGN/Controller/ActivityInfo.pm +++ b/lib/SGN/Controller/ActivityInfo.pm @@ -7,6 +7,8 @@ use Data::Dumper; use CXGN::TrackingActivity::TrackingIdentifier; use CXGN::Stock::Status; use CXGN::People::Person; +use CXGN::Transformation::Transformation; +use JSON; BEGIN { extends 'Catalyst::Controller'; } @@ -138,6 +140,7 @@ sub record_activity :Path('/activity/record') :Args(0) { my $tracking_project_id; my $activity_type; my $program_name; + my $source_info_string; if ($identifier_name) { my $identifier_rs = $schema->resultset("Stock::Stock")->find({uniquename => $identifier_name}); @@ -148,7 +151,7 @@ sub record_activity :Path('/activity/record') :Args(0) { } else { $identifier_id = $identifier_rs->stock_id(); } - + my $tracking_identifier_obj = CXGN::TrackingActivity::TrackingIdentifier->new({schema=>$schema, dbh=>$dbh, tracking_identifier_stock_id=>$identifier_id}); my $associated_projects = $tracking_identifier_obj->get_associated_project_program(); $program_name = $associated_projects->[0]->[3]; @@ -157,6 +160,21 @@ sub record_activity :Path('/activity/record') :Args(0) { $material_name = $material_info->[0]->[3]; $material_type = $material_info->[0]->[4]; + if ($material_type eq 'transformation') { + my $transformation_obj = CXGN::Transformation::Transformation->new({schema=>$schema, dbh=>$dbh, transformation_stock_id=>$material_stock_id}); + my $info = $transformation_obj->get_transformation_info(); + my $plant_material_name = $info->[0]->[1]; + my $vector_name = $info->[0]->[3]; + my $transformation_project_name = $associated_projects->[0]->[5]; + my $source_info_hash = {}; + $source_info_hash->{'breedingProgram'} = $program_name; + $source_info_hash->{'transformationProject'} = $transformation_project_name; + $source_info_hash->{'transformationID'} = $material_name; + $source_info_hash->{'vectorConstruct'} = $vector_name; + $source_info_hash->{'plantMaterial'} = $plant_material_name; + $source_info_string = encode_json $source_info_hash; + } + $tracking_project_id = $associated_projects->[0]->[0]; my $tracking_project = CXGN::TrackingActivity::ActivityProject->new(bcs_schema => $schema, trial_id => $tracking_project_id); $activity_type = $tracking_project->get_project_activity_type(); @@ -194,6 +212,7 @@ sub record_activity :Path('/activity/record') :Args(0) { $c->stash->{project_id} = $tracking_project_id; $c->stash->{activity_type} = $activity_type; $c->stash->{program_name} = $program_name; + $c->stash->{source_info} = $source_info_string; $c->stash->{template} = '/tracking_activities/record_activity.mas'; } diff --git a/mason/tracking_activities/record_activity.mas b/mason/tracking_activities/record_activity.mas index aaad39e61b..75c52ef02b 100644 --- a/mason/tracking_activities/record_activity.mas +++ b/mason/tracking_activities/record_activity.mas @@ -12,6 +12,7 @@ $material_type => undef $project_id => undef $activity_type => undef $program_name => undef +$source_info => undef @@ -274,6 +275,7 @@ $(window).ready( function() { 'notes': notes, 'activity_type': activity_type, 'program_name': program_name, + 'source_info': '<%$source_info%>' }, beforeSend: function(response){ jQuery('#working_modal').modal('show'); -- 2.11.4.GIT