#!/usr/bin/perl
use strict;
use warnings;

use Digest::MD5 qw(md5 md5_hex md5_base64);
use MIME::Parser;
use MIME::Entity;
use MIME::Body;
use Getopt::Long;


use lib qw(Core);
use lib qw(Classes);

use DomainsManager;
use Logger;
use LocalConfiguration;
use Email;

my $SCRIPTNAME = 'create_domains.pl';

my $subject = "REPORT from Create Domains Script";
my $body = '';
my $damains_list = '';
#my $logger = new Logger();


my $d_m = new DomainsManager();

my $parameters = {'field' => 'd.date'};
my @domains = $d_m->get_all_domains($parameters);

for (my $i = 0; $i < scalar(@domains); $i++) {
	if ($domains[$i]->{TARGET_NAME} eq $ARGV[0]) {
	if(!(-e sprintf("%s/%s-D%s.pdb", $LOCAL_CONFIG->{DATA_TARGETS_DIR}, $domains[$i]->{TARGET_NAME}, $domains[$i]->{DOMAIN_INDEX}))) {
		my $tmp_msg =  $d_m->split_targets_to_domains($domains[$i]->{TARGET_NAME});
		if($tmp_msg ne '') {
			$body .= "\n TARGET: ". $domains[$i]->{TARGET_NAME} ."\n";	
			$body .= $tmp_msg;
		}
	}

	if(!(-e sprintf("%s/%s-D%s", $LOCAL_CONFIG->{DATA_MODELS_DIR}, $domains[$i]->{TARGET_NAME}, $domains[$i]->{DOMAIN_INDEX}))) {
		my $tmp_msg = $d_m->split_models_to_domains($domains[$i]->{TARGET_NAME});
		if($tmp_msg ne '') {
			$body .= "\n TARGET: ". $domains[$i]->{TARGET_NAME} ."\n";
			$body .= $tmp_msg;
		}
	}
	$damains_list .= sprintf("TARGET: %s DOMAIN: %s RANGE: %s DATE: %s 	%s\n" , $domains[$i]->{TARGET_NAME}, $domains[$i]->{DOMAIN_INDEX}, $domains[$i]->{RANGE}, $domains[$i]->{DATE}, (($domains[$i]->{LENGTH} >= $d_m->get_aa_count_for_target($domains[$i]->{TARGET_ID}))?sprintf("SIMILARITY DOMAIN TO TARGET -- domain length: %s sequence length: %s ", $domains[$i]->{LENGTH}, $d_m->get_aa_count_for_target($domains[$i]->{TARGET_ID})):""));
	}
}

if ($body eq '') {
	$body .= "No new domains were found. \n";
}
$body.= "\n\nAvailable domains list:\n";
$body.= $damains_list;

print "BODY:" . $body . "\n";

Email::send_email('akryshtafovych@ucdavis.edu', 'casp@predictioncenter.org', '', '', $subject, $body);

system("/data/CASP9/predictions/remove_short_models.sh $ARGV[0]");

exit(0);
