#!/usr/local/bin/perl -w

use strict;
use Apache::Request;
use Template;

use Gramene::Page;
use Gramene::Utils 'commify';
use Gramene::Mutant::MutantCurationDB;



use constant CURATION_TEMPLATE    => 'mutant_util.tmpl';
use constant ERROR_TEMPLATE     => 'mutant_error.tmpl';



my $apr  = Apache::Request->new(Apache->request);
my $page = Gramene::Page->new($apr);
my ($template, $html,$db,$pager);



#my %args = $apr->args;        


eval{

 $template = Template->new({ 
        INCLUDE_PATH => '/usr/local/gramene/templates/mutant', 
        PRE_CHOMP  => 1,
	POST_CHOMP => 1,
        TRIM => 1,
        FILTERS      => { commify  => \&Gramene::Utils::commify }
              
       }); 

 $db = Gramene::Mutant::MutantCurationDB->new();
 $db->connect_to_db();

 
 my $all_species = $db->get_all_species();
 my $all_dbxrefs = $db->get_all_dbxrefs();
 my $result={};
 
 if($apr->param('add_dbxref')){
     my $dbx_name = $apr->param('dbx_name');
     my $dbx_url = $apr->param('dbx_url');
 
     $dbx_name =~s/^\s+|\s+$//g;
     $dbx_url =~s/^\s+|\s+$//g;
     if($dbx_name && $dbx_url){
        $db->add_dbxref($dbx_name,$dbx_url,$result);          
        $all_dbxrefs = $db->get_all_dbxrefs();
     }else{
        push(@{$result->{'error'}},"database name and url can't be empty.");       
     } 
    
   }

 if($apr->param('add_species')){
     my $common_name = $apr->param('spe_common_name');
     # my $spe_name = $apr->param('spe_spec_name') || '';
     my $taxa_id = $apr->param('spe_taxa_id') || '';
     my $genus = $apr->param('spe_genus') || '';
     my $chromosomes = $apr->param('chromosomes') || '';
     if($common_name){
         $db->add_species_and_chromosomes($common_name,$taxa_id,$genus,$chromosomes,$result);
     
         $all_species = $db->get_all_species();
     }else{
       push(@{$result->{'error'}},"species common name  can't be empty.");
     }

 }

   $template->process( 
             CURATION_TEMPLATE,
            {
                gramene_page  => $page,
                stylesheet    => $page->stylesheet,
                apr           => $apr,
                species       => $all_species,
                dbxrefs       => $all_dbxrefs,
                result        => $result,
                title         => "Mutant Curation"
            },
            \$html
        ) or $html = $template->error;
 


 
};

if ( my $err = $@ ) {
    if ( $template ) {
        $template->process( 
            ERROR_TEMPLATE,
            {
                gramene_page  => $page,
                stylesheet    => $page->stylesheet,
                error_message => $err,
            },
            \$html
        ) or $html = $template->error;
    }
    else {
        $html = "Error: $err";
    }
}




$apr->content_type('text/html');
$apr->send_http_header;
$apr->print( $html );
