modified key
[sgn.git] / lib / CXGN / BreedersToolbox / ProductProfile.pm
blob0085f4c0bc9758dc9d15222c5f810f764e31c4aa
1 package CXGN::BreedersToolbox::ProductProfile;
4 =head1 NAME
6 CXGN::BreedersToolbox::ProductProfile - a class to manage product profile
8 =head1 DESCRIPTION
10 The projectprop of type "product_profile_json" is stored as JSON.
12 =head1 EXAMPLE
14 my $profile = CXGN::BreedersToolbox::ProductProfile->new( { schema => $schema});
16 =head1 AUTHOR
18 Titima Tantikanjana <tt15@cornell.edu>
20 =cut
23 use Moose;
25 extends 'CXGN::JSONProp';
27 use JSON::Any;
28 use Data::Dumper;
29 use SGN::Model::Cvterm;
32 has 'product_profile_name' => (isa => 'Str', is => 'rw');
34 has 'product_profile_scope' => (isa => 'Str', is => 'rw');
36 has 'product_profile_details' => (isa => 'Str', is => 'rw');
38 has 'product_profile_submitter' => (isa => 'Str', is => 'rw');
40 has 'product_profile_uploaded_date' => (isa => 'Str', is => 'rw');
43 sub BUILD {
44 my $self = shift;
45 my $args = shift;
47 $self->prop_table('projectprop');
48 $self->prop_namespace('Project::Projectprop');
49 $self->prop_primary_key('projectprop_id');
50 $self->prop_type('product_profile_json');
51 $self->cv_name('project_property');
52 $self->allowed_fields([ qw | product_profile_name product_profile_scope product_profile_details product_profile_submitter product_profile_uploaded_date | ]);
53 $self->parent_table('project');
54 $self->parent_primary_key('project_id');
56 $self->load();
60 sub get_product_profile_info {
61 my $self = shift;
62 my $schema = $self->bcs_schema();
63 my $project_id = $self->parent_id();
64 my $type = $self->prop_type();
65 my $type_id = $self->_prop_type_id();
66 my $key_ref = $self->allowed_fields();
67 my @fields = @$key_ref;
69 my $profile_rs = $schema->resultset("Project::Projectprop")->search({ project_id => $project_id, type_id => $type_id }, { order_by => {-asc => 'projectprop_id'} });
70 my @profile_list;
71 while (my $r = $profile_rs->next()){
72 my @each_row = ();
73 my $profile_id = $r->projectprop_id();
74 push @each_row, $profile_id;
75 my $profile_json = $r->value();
76 my $profile_hash = JSON::Any->jsonToObj($profile_json);
77 foreach my $field (@fields){
78 push @each_row, $profile_hash->{$field};
80 push @profile_list, [@each_row];
82 # print STDERR "PROFILE LIST =".Dumper(\@profile_list)."\n";
84 return \@profile_list;