From ce0cec88e238670f5d91e474ecbb43cb293d3b38 Mon Sep 17 00:00:00 2001 From: titima15 Date: Fri, 27 Sep 2024 11:59:24 -0400 Subject: [PATCH] autogenerated name metadata table --- lib/CXGN/BreedersToolbox/Projects.pm | 22 +++++++++++++++ .../Transformation/CreateAutogeneratedNames.pm | 1 - lib/SGN/Controller/AJAX/BreedingProgram.pm | 31 +++++++++++++++++++++- .../program/autogenerated_name_metadata.mas | 2 +- 4 files changed, 53 insertions(+), 3 deletions(-) diff --git a/lib/CXGN/BreedersToolbox/Projects.pm b/lib/CXGN/BreedersToolbox/Projects.pm index ee853e3d1d..f8b997e642 100644 --- a/lib/CXGN/BreedersToolbox/Projects.pm +++ b/lib/CXGN/BreedersToolbox/Projects.pm @@ -852,4 +852,26 @@ sub get_related_treatments { } +sub get_autogenerated_name_metadata_by_breeding_program { + my $self = shift; + my $schema = $self->schema; + my $breeding_program_id = shift; + + my $autogenerated_name_metadata_cvterm = SGN::Model::Cvterm->get_cvterm_row($schema, 'autogenerated_name_metadata', 'project_property'); + my $program = $schema->resultset('Project::Project')->find({ project_id => $breeding_program_id}); + + my $name_metadata_hashes; + my $name_metadata_projectprop_rs = $program->projectprops({type_id => $autogenerated_name_metadata_cvterm->cvterm_id}); + if ($name_metadata_projectprop_rs->count == 1){ + my $name_metadata_string = $name_metadata_projectprop_rs->first->value(); + $name_metadata_hashes = decode_json $name_metadata_string; + } else { + return {error => "Error retrieving autogenerated name metadata!\n"}; + } + + return {name_metadata => $name_metadata_hashes}; + +} + + 1; diff --git a/lib/CXGN/Transformation/CreateAutogeneratedNames.pm b/lib/CXGN/Transformation/CreateAutogeneratedNames.pm index 6286ae9b91..fa6cdd4814 100644 --- a/lib/CXGN/Transformation/CreateAutogeneratedNames.pm +++ b/lib/CXGN/Transformation/CreateAutogeneratedNames.pm @@ -71,7 +71,6 @@ sub create_names { my $name_metadata_hash = {}; my $autogenerated_name_metadata_cvterm = SGN::Model::Cvterm->get_cvterm_row($schema, 'autogenerated_name_metadata', 'project_property'); - my $autogenerated_name_prefix_cvterm = SGN::Model::Cvterm->get_cvterm_row($schema, 'autogenerated_name_metadata', 'project_property'); my $program = $schema->resultset('Project::Project')->find({ project_id => $breeding_program_id}); if (!$program) { return {error => "Breeding Program not found!\n"}; diff --git a/lib/SGN/Controller/AJAX/BreedingProgram.pm b/lib/SGN/Controller/AJAX/BreedingProgram.pm index 7f184983d2..392ab7d61e 100644 --- a/lib/SGN/Controller/AJAX/BreedingProgram.pm +++ b/lib/SGN/Controller/AJAX/BreedingProgram.pm @@ -33,6 +33,7 @@ use JSON; use CXGN::BreedersToolbox::ProductProfile; use File::Spec::Functions; use Spreadsheet::WriteExcel; +use CXGN::People::Person; use File::Basename qw | basename dirname|; use File::Copy; @@ -739,9 +740,37 @@ sub upload_profile_POST : Args(0) { $c->detach(); } + $c->stash->{rest} = { success => 1 }; + +} + + +sub get_autogenerated_name_metadata :Chained('ajax_breeding_program') PathPart('autogenerated_name_metadata') Args(0){ + my $self = shift; + my $c = shift; + my $program = $c->stash->{program}; + my $program_id = $program->get_program_id; + my $schema = $c->stash->{schema}; my $dbh = $c->dbc->dbh(); - $c->stash->{rest} = { success => 1 }; + my $projects = CXGN::BreedersToolbox::Projects->new({schema => $schema}); + my $return = $projects->get_autogenerated_name_metadata_by_breeding_program($program_id); + my $name_metadata = $return->{name_metadata}; + + my @autogenerated_name_metadata; + foreach my $prefix (keys %$name_metadata) { + my $latest_serial_number = $name_metadata->{$prefix}->{'current_serial_number'}; + my $description = $name_metadata->{$prefix}->{'description'}; + my $added_by = $name_metadata->{$prefix}->{'added_by'}; + my $created_date = $name_metadata->{$prefix}->{'date'}; + + my $person = CXGN::People::Person->new($dbh, $added_by); + my $person_name = $person->get_first_name()." ".$person->get_last_name(); + + push @autogenerated_name_metadata, [$prefix, $latest_serial_number, $description, $person_name, $created_date]; + } + + $c->stash->{rest} = {data => \@autogenerated_name_metadata}; } diff --git a/mason/breeders_toolbox/program/autogenerated_name_metadata.mas b/mason/breeders_toolbox/program/autogenerated_name_metadata.mas index 741c6b3e88..5f100333c4 100644 --- a/mason/breeders_toolbox/program/autogenerated_name_metadata.mas +++ b/mason/breeders_toolbox/program/autogenerated_name_metadata.mas @@ -13,12 +13,12 @@ $program_id Latest Serial Number Description Added by + Created Date -