1 package CXGN
::BreedersToolbox
::ProductProfile
;
6 CXGN::BreedersToolbox::ProductProfile - a class to manage product profile
10 The projectprop of type "product_profile_json" is stored as JSON.
14 my $profile = CXGN::BreedersToolbox::ProductProfile->new( { schema => $schema});
18 Titima Tantikanjana <tt15@cornell.edu>
25 extends
'CXGN::JSONProp';
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');
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');
60 sub get_product_profile_info
{
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'} });
71 while (my $r = $profile_rs->next()){
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;