1 package CXGN
::BrAPI
::v2
::Seasons
;
5 use SGN
::Model
::Cvterm
;
7 use CXGN
::Trial
::Search
;
8 use CXGN
::Trial
::TrialLayout
;
11 use CXGN
::Phenotypes
::SearchFactory
;
12 use CXGN
::Phenotypes
::PhenotypeMatrix
;
13 use CXGN
::BrAPI
::Pagination
;
14 use CXGN
::BrAPI
::FileResponse
;
15 use CXGN
::BrAPI
::JSONResponse
;
18 extends
'CXGN::BrAPI::v2::Common';
23 my $page_size = $self->page_size;
24 my $page = $self->page;
25 my $status = $self->status;
26 my $year_filter = $params->{seasonDbId
} || ($params->{year
} || ());
30 my $year_cvterm_id = SGN
::Model
::Cvterm
->get_cvterm_row($self->bcs_schema,'project year', 'project_property')->cvterm_id();
31 my $project_years_rs = $self->bcs_schema()->resultset("Project::Project")->search_related('projectprops', {'projectprops.type_id'=>$year_cvterm_id});
33 while (my $p_year = $project_years_rs->next()) {
34 $unique_years{$p_year->value} = $p_year->projectprop_id;
37 foreach (sort keys %unique_years){
38 my ($year, $season) = split '\|', $_;
39 if ( $year_filter && ! grep { $_ eq $year } @
{$year_filter} ) { next;};
41 push @sorted_years, [$year, $season, $_];
44 my ($data_window, $pagination) = CXGN
::BrAPI
::Pagination
->paginate_array(\
@sorted_years, $page_size, $page);
45 foreach (@
$data_window){
46 my $year = $_->[0] ?
$_->[0] : '';
47 my $season = $_->[1] ?
$_->[1] : '';
48 my $projectprop_id = $_->[2] ?
$_->[2] : '';
50 seasonDbId
=>qq|$projectprop_id|,
55 my %result = (data
=>\
@data);
57 return CXGN
::BrAPI
::JSONResponse
->return_success(\
%result, $pagination, \
@data_files, $status, 'Seasons list result constructed');
62 my $year_filter = shift;
63 my $page_size = $self->page_size;
64 my $page = $self->page;
65 my $status = $self->status;
68 my $year_cvterm_id = SGN
::Model
::Cvterm
->get_cvterm_row($self->bcs_schema,'project year', 'project_property')->cvterm_id();
69 my $project_years_rs = $self->bcs_schema()->resultset("Project::Project")->search_related('projectprops', {'projectprops.type_id'=>$year_cvterm_id});
71 while (my $p_year = $project_years_rs->next()) {
72 $unique_years{$p_year->value} = $p_year->projectprop_id;
75 foreach (sort keys %unique_years){
76 my ($year, $season) = split '\|', $_;
78 if ($year eq $year_filter){
79 push @sorted_years, [$year, $season, $_];
82 push @sorted_years, [$year, $season, $_];
86 my ($data_window, $pagination) = CXGN
::BrAPI
::Pagination
->paginate_array(\
@sorted_years, $page_size, $page);
87 foreach (@
$data_window){
88 my $year = $_->[0] ?
$_->[0] : '';
89 my $season = $_->[1] ?
$_->[1] : '';
90 my $projectprop_id = $_->[2] ?
$_->[2] : '';
92 seasonDbId
=>qq|$projectprop_id|,
99 return CXGN
::BrAPI
::JSONResponse
->return_success(@data, $pagination, \
@data_files, $status, 'Seasons list result constructed');