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

###########################################################
#
# The script is used to register submitted models in database.
# The script is used in the case if the all accepted models 
# have the corresponding files, and were successfully registred 
# by the system. However, the backup db doesn't have the latest 
# records. 
#
# The script was used after the server crash, and the backup 
# of the database was available from the previous evening.
#
########################################################### 

#use Digest::MD5 qw(md5 md5_hex md5_base64);
#use Getopt::Long;

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

use Configuration;
use LocalConfiguration;
use GroupsManager;
use PredictionsManager;



my $infile = $ARGV[0];
my $basename = $infile;
$basename =~ s/\S+\///;
my $model = {
   _email => undef,
   _type => 'webform',
   _target => undef,
   _pfrmat => undef,
   _predictors_id => undef,
   _groups_code => undef,
   _groups_id => undef,
   _model_no => undef
};

if ($basename =~ m/(\S*)(TS|RR)(\d{3,3})_([1-5]{1})/) {
   my $target = $1; 
   my $pfrmat = $2; 
   my $gr_code = $3;
   my $model_no = $4;
   $model->{_target} = $target;
   $model->{_pfrmat} = $pfrmat;
   $model->{_groups_code} = $gr_code;
   $model->{_model_no} = $model_no;
} else {
  exit; 
}

#printf ("%s%s%03d_%d\n", $model->{_target},$model->{_pfrmat},$model->{_groups_code},$model->{_model_no});

my $gr_manager = new GroupsManager();
my $tmp = $gr_manager->get_leader_by_group_code($model->{_groups_code}); 
#printf "%s %s %s\n", $tmp->{_email}, $tmp->{_predictors_id}, $tmp->{_groups_id};
$model->{_email} = $tmp->{_email};
$model->{_predictors_id} = $tmp->{_predictors_id};
$model->{_groups_id} = $tmp->{_groups_id};

my $pr_manager = new PredictionsManager();
my $exist = $pr_manager->prediction_exist($model->{_target},$model->{_model_no},$model->{_pfrmat},$model->{_groups_id});
if ($exist == 0) {
   printf "%s%s%03d_%d\n", $model->{_target}, $model->{_pfrmat}, $model->{_groups_code}, $model->{_model_no};
   $pr_manager->add($model->{_email}, $model->{_type}, $model->{_pfrmat}, $model->{_target}, $model->{_groups_id}, $model->{_model_no}, $model->{_predictors_id});
} else {
#   printf "Model %s%s%03d_%d exists.\n", $model->{_target},$model->{_pfrmat},$model->{_groups_code},$model->{_model_no} ;
}

#use Submission;
#use Logger;
#use Email;

#my $SCRIPTNAME = 'resubmission.pl';

#my $logger = new Logger();

#my $input_file = '';
#my $skip = '';
#my $sender_email = '';
#my $uid = '';

#my $isparams = GetOptions(
#	"file|f=s"         => \$input_file,
#	"sender|sender=s" => \$sender_email,
#	"uid|uid=s" => \$uid,
#	"skip|skiped=s" => \$skip
#);

### SUBMISSION.PM verifies if the prediction is in the proper 

#		$logger->info($SCRIPTNAME, sprintf("Prediction before resubmission! uid: %s, File: %s", $uid, $input_file));
#		my $submission = new Submission($sender_email, $input_file, 'webform', 0, $uid, "target_validation");
#		$logger->info($SCRIPTNAME, sprintf("Prediction before processing! Email: %s, File: %s", $sender_email, $input_file));
#		my $result = $submission->process();

#if($result) {
#	$logger->info($SCRIPTNAME, sprintf("Prediction was resubmitted successfully! Email: %s, File: %s", $sender_email, $input_file));
	#$submission->notification_success("Submission ACCEPTED");
#} else {
#	$logger->warning($SCRIPTNAME, sprintf("Prediction resubmittion failed! Email: %s, File: %s", $sender_email, $input_file));
#}

