4 use CXGN
::Scrap
::AjaxPage
;
8 my $doc = CXGN
::Scrap
::AjaxPage
->new();
9 $doc->send_http_header();
10 my ($individual_name, $locus_id, $type, $individual_allele_id, $allele_id) = $doc->get_encoded_arguments("individual_name", "locus_id", "type", "individual_allele_id", "allele_id");
11 print STDERR
"my args are: $individual_name, $locus_id, $type, $individual_allele_id, $allele_id \n\n\n";
12 my $dbh = CXGN
::DB
::Connection
->new();
14 my($login_person_id, $login_user_type)=CXGN
::Login
->new($dbh)->verify_session();
16 if ($login_user_type eq 'curator' || $login_user_type eq 'submitter' || $login_user_type eq 'sequencer') {
18 if ($type eq 'browse') {
19 my $individual_query = $dbh->prepare("SELECT individual_id, name, description FROM phenome.individual
20 WHERE individual_id NOT IN (SELECT individual_id FROM phenome.individual JOIN
21 phenome.individual_allele USING(individual_id) JOIN phenome.allele USING(allele_id)
22 WHERE locus_id = ? AND individual_allele.obsolete = 'f')
23 AND individual.name ilike '%$individual_name%'
25 $individual_query->execute($locus_id);
27 my ($individual_id, $name, $desc) = $individual_query->fetchrow_array();
28 my $available_individuals;
30 while($individual_id){
31 $available_individuals .= "$individual_id*$name--$desc|";
32 ($individual_id, $name, $desc) = $individual_query->fetchrow_array();
35 print "$available_individuals";
37 #search from the allele page. Fiter only the existing individuals associated with $allele.
38 elsif ($type eq 'browse_allele') {
39 my $individual_query = $dbh->prepare("SELECT individual_id, name, description FROM phenome.individual
40 WHERE individual_id NOT IN (SELECT individual_id FROM phenome.individual JOIN
41 phenome.individual_allele USING(individual_id)
42 WHERE allele_id = ? AND individual_allele.obsolete = 'f')
43 AND individual.name ilike '%$individual_name%'
45 $individual_query->execute($allele_id);
47 my ($individual_id, $name, $desc) = $individual_query->fetchrow_array();
48 my $available_individuals;
50 while($individual_id){
51 $available_individuals .= "$individual_id*$name--$desc|";
52 ($individual_id, $name, $desc) = $individual_query->fetchrow_array();
55 print "$available_individuals";
58 #obsolete individual-allele association
59 elsif ($type eq 'obsolete') {
61 my $query = "UPDATE phenome.individual_allele SET obsolete='t', modified_date= now() WHERE individual_allele_id = ? ";
62 my $sth= $dbh->prepare($query);
64 $sth->execute($individual_allele_id);
68 warn "individual-allele obsoletion failed! "#$page->message_page("An error occurred during the database operation");