Added eval; site now shows clean dataset missing message instead of server error...
[sgn.git] / lib / SGN / Controller / AJAX / FamilyName.pm
blob239c4b23b421a4a82d4c821b7cc99001b1a7f5f1
2 =head1 NAME
4 SGN::Controller::AJAX::FamilyName - a REST controller class to provide the
5 functions for retrieving family name related info
7 =head1 DESCRIPTION
10 =head1 AUTHOR
12 Titima Tantikanjana <tt15@cornell.edu>
14 =cut
16 package SGN::Controller::AJAX::FamilyName;
18 use Moose;
19 use Try::Tiny;
20 use Data::Dumper;
21 use CXGN::FamilyName;
22 use JSON;
24 BEGIN { extends 'Catalyst::Controller::REST' }
25 __PACKAGE__->config(
26 default => 'application/json',
27 stash_key => 'rest',
28 map => { 'application/json' => 'JSON' },
32 sub get_family_parents :Path('/ajax/family/parents') :Args(1) {
33 my $self = shift;
34 my $c = shift;
35 my $family_id = shift;
36 my $schema = $c->dbic_schema("Bio::Chado::Schema");
38 my $family = CXGN::FamilyName->new({schema=>$schema, family_stock_id=>$family_id});
40 my $result = $family->get_family_parents();
41 my @family_parents;
42 foreach my $r (@$result){
43 my ($female_parent_id, $female_parent_name, $female_stock_type, $female_ploidy, $male_parent_id, $male_parent_name, $male_stock_type, $male_ploidy) =@$r;
44 push @family_parents, [qq{<a href="/stock/$female_parent_id/view">$female_parent_name</a>}, $female_stock_type, $female_ploidy, qq{<a href="/stock/$male_parent_id/view">$male_parent_name</a>}, $male_stock_type, $male_ploidy];
47 $c->stash->{rest} = { data => \@family_parents };
52 sub get_family_members :Path('/ajax/family/members') :Args(1) {
53 my $self = shift;
54 my $c = shift;
55 my $family_id = shift;
56 my $schema = $c->dbic_schema("Bio::Chado::Schema");
58 my $family = CXGN::FamilyName->new({schema=>$schema, family_stock_id=>$family_id});
60 my $result = $family->get_family_members();
62 my @crosses;
63 foreach my $r (@$result){
64 my ($cross_id, $cross_name, $cross_type, $crossing_experiment_id, $crossing_experiment_name, $progeny_number) =@$r;
65 push @crosses, {
66 cross_id => $cross_id,
67 cross_name => $cross_name,
68 cross_type => $cross_type,
69 crossing_experiment_id => $crossing_experiment_id,
70 crossing_experiment_name => $crossing_experiment_name,
71 progeny_number => $progeny_number
75 $c->stash->{rest} = { data => \@crosses };
80 sub get_all_progenies :Path('/ajax/family/all_progenies') :Args(1) {
81 my $self = shift;
82 my $c = shift;
83 my $family_id = shift;
84 my $schema = $c->dbic_schema("Bio::Chado::Schema");
86 my $family = CXGN::FamilyName->new({schema=>$schema, family_stock_id=>$family_id});
88 my $result = $family->get_all_progenies();
90 my @progenies;
91 foreach my $r (@$result){
92 my ($progeny_id, $progeny_name, $cross_id, $cross_name) =@$r;
93 push @progenies, {
94 progeny_id => $progeny_id,
95 progeny_name => $progeny_name,
96 cross_id => $cross_id,
97 cross_name => $cross_name,
101 $c->stash->{rest} = { data => \@progenies };