added a comment section..
[sgn.git] / cgi-bin / phenome / unigene_browser.pl
blob18925e378af5b3b4a947f684a223ff258a0883e8
2 #!/usr/bin/perl -w
4 use strict;
5 use warnings;
7 use CXGN::Scrap::AjaxPage;
8 use CXGN::Phenome::Locus;
9 use CXGN::Transcript::Unigene;
10 use CXGN::DB::Connection;
11 use CXGN::Login;
12 use CXGN::People::Person;
13 use CXGN::Feed;
14 use JSON;
18 my %error = ();
19 my $json = JSON->new();
21 my $dbh = CXGN::DB::Connection->new();
22 my $doc = CXGN::Scrap::AjaxPage->new();
23 $doc->send_http_header();
25 my ($type, $locus_id, $unigene_id, $sp_person_id, $locus_unigene_id) = $doc->get_encoded_arguments("type", "locus_id", "unigene_id", "sp_person_id", "locus_unigene_id");
27 my $locus= CXGN::Phenome::Locus->new($dbh, $locus_id);
29 $unigene_id =~/(\d+)/;
30 $unigene_id =$1;
31 $unigene_id =~ s/\s//;
32 my $unigene_link = qq |http://www.sgn.cornell.edu/search/unigene.pl?unigene_id=SGN-U$unigene_id|;
34 my($login_person_id, $login_user_type)=CXGN::Login->new($dbh)->verify_session();
36 if ($login_user_type eq 'curator' || $login_user_type eq 'submitter' || $login_user_type eq 'sequencer') {
38 my $person= CXGN::People::Person->new($dbh, $login_person_id);
39 my $user=$person->get_first_name()." ".$person->get_last_name();
40 my $user_link = qq |http://www.sgn.cornell.edu/solpeople/personal-info.pl?sp_person_id=$sp_person_id|;
42 if (length($unigene_id)>1) {
43 if ($type eq 'associate') {
44 eval {
45 my $id = $locus->add_unigene($unigene_id, $sp_person_id);
48 if ($@) {
49 $error{"error"} = $@;
50 CXGN::Contact::send_email('unigene_browser.pl died',"locus-unigene association failed (locus_id = $locus_id, unigene_id = $unigene_id , person_id = $sp_person_id . $@", 'sgn-bugs@sgn.cornell.edu');
52 else {
53 my $subject="[New unigene associated] locus $locus_id";
54 my $fdbk_body="$user ($user_link) has associated\n unigene $unigene_link\n with locus http://www.sgn.cornell.edu/phenome/locus_display.pl?locus_id=$locus_id";
55 CXGN::Contact::send_email($subject,$fdbk_body, 'sgn-db-curation@sgn.cornell.edu');
56 CXGN::Feed::update_feed($subject,$fdbk_body);
60 elsif ($type eq 'browse') {
62 my $organism = $locus->get_common_name();
63 my $unigene = CXGN::Transcript::Unigene->new($dbh, $unigene_id);
64 my $available_unigenes = "";
66 if (defined($unigene)) {
67 my $build_nr = $unigene->get_build_nr();
68 my $nr_members = $unigene->get_nr_members();
69 my $unigene_build = $unigene->get_unigene_build();
70 my $unigene_organism = $unigene_build->get_common_name();
71 my $build_status = $unigene_build->get_status();
73 if (($unigene_organism eq $organism) && ($build_status eq "C")) {
75 $available_unigenes .="$unigene_id*$unigene_id -- $unigene_organism -- build $build_nr -- $nr_members members|";
76 $error{"response"} = $available_unigenes;
80 }elsif ($locus_unigene_id && $type eq 'obsolete') {
82 eval {
83 $locus->obsolete_unigene($locus_unigene_id);
86 if ($@) {
87 $error{"error"} = $@;
88 CXGN::Contact::send_email('unigene_browser.pl died',"Obsoleting unigene faild. $@", 'sgn-bugs@sgn.cornell.edu');
89 }else {
90 $error{"response"} = "Obsoleting locus_unigene $locus_unigene_id succeeded!";
91 my $subject="[Locus-unigene obsoleted] locus $locus_id";
92 my $fdbk_body="$user ($user_link) has obsoleted\n unigene $unigene_link\n link from locus http://www.sgn.cornell.edu/phenome/locus_display.pl?locus_id=$locus_id";
93 CXGN::Contact::send_email($subject,$fdbk_body, 'sgn-db-curation@sgn.cornell.edu');
94 CXGN::Feed::update_feed($subject,$fdbk_body);
98 my $jobj = $json->encode(\%error);
99 print $jobj;