7 use CXGN
::Scrap
::AjaxPage
;
8 use CXGN
::Phenome
::Locus
;
9 use CXGN
::Transcript
::Unigene
;
10 use CXGN
::DB
::Connection
;
12 use CXGN
::People
::Person
;
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+)/;
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') {
45 my $id = $locus->add_unigene($unigene_id, $sp_person_id);
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');
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') {
83 $locus->obsolete_unigene($locus_unigene_id);
88 CXGN
::Contact
::send_email
('unigene_browser.pl died',"Obsoleting unigene faild. $@", 'sgn-bugs@sgn.cornell.edu');
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);