#!/usr/bin/perl

use strict;
use warnings;

use lib qw(Classes);
use ZscoresManager;

my @TARGETS;
my $manager = new ZscoresManager();



if (defined($ARGV[0])){
  # &usage();
  push @TARGETS, $ARGV[0];
} else {
  @TARGETS = $manager->getTargetsWaitingToBeProcessed();
}


foreach my $full_target (@TARGETS) {
#  if ($full_target !~ m/^[SsXxNnAaFfLlR]/) {next;}
#  print $full_target."\n";  
  my $target;
  my $domain;
  
  if ($full_target =~ m/^(N0981-D[1-7]{1})$/){ 
        $target = $1;
        $domain = 0;
  } elsif ($full_target =~ m/^([TNSFAXLnsfaxl][0-9]{4}(s[1-9]){0,1})-D([1-7]{1})$/){ # all domains Refinement excluded;
	$target = $1;
	$domain = $3;
  } elsif ($full_target =~ m/^([RNSFAXLnsfaxl][0-9]{4}(s[1-9]){0,1})$/){ # refinement or contact assisted whole targets
	$target = $1;
	$domain = 0;
  } elsif ($full_target =~ m/^(R0957s2)-D([1-7]{1})/){ # refinement target special format with "-D"
        $target = $1;
        $domain = $2;
  } elsif ($full_target =~ m/^(R[0-9]{4}(s[1-9]){0,1}-D[1-7]{1})/){ # refinement target special format with "-D"
        $target = $1;
        $domain = 0;
  } else {
	next;#&usage();
  }
  print $full_target."\n"; # next;

  my @params;
  if ($target =~ m/^T/){ # for regular target process server targets for server groups
   push @params, {
	target => $target,
        domain => $domain,
        gr_type => 'server_only',
        model_type => 'first'
  };

  push @params, {
        target => $target,
        domain => $domain,
        gr_type => 'server_only',
        model_type => 'best'
  };
  }

  push @params, {
        target => $target,
        domain => $domain,
        gr_type => 'all',
        model_type => 'first'
  };

  push @params, {
        target => $target,
        domain => $domain,
        gr_type => 'all',
        model_type => 'best'
  };

  #loop over parameters
  foreach  my $param (@params){
     my $rawScores = $manager->getRawScores($param);
     my $zScores = $manager->calcZScore($rawScores);
     $manager->upload_all($param, $zScores);
  }
#last;
}


sub usage{
    print "\n=========\nUSAGE: $0 <TARGET-DOMAIN> or <REFINEMENT-TARGET> or <CONTACT-ASSISTED-TARGET>\n=========\n\n";
    exit;
}
