package QA2aucmcccorrManager;

use strict;
use warnings;


use DBI;
use lib qw(Core);
use Database;
use Configuration;
use LocalConfiguration;
use BO;
our @ISA = qw(BO);

sub new {
    my ($class) = @_;
    my $self = $class->SUPER::new("casp13.qa2_aucmcccorr");
    bless $self, $class;
    return $self;
}

sub get_new_model{
    my ($self) = @_;
    my %model = (
	id => '',
	gr_name => '',
        gr_code => '',
	model => '',
	mcc38 => '',
	mcc5 => '',
	fischer5 => '',
	auc => '',
    );
    return %model;
}

sub is_table_column {
    my ( $self, $column_name) = @_;
    my $result = 0;
    if ( $column_name eq 'id' ||
	 $column_name eq 'gr_name' ||
	 $column_name eq 'gr_code' ||
	 $column_name eq 'model' ||
	 $column_name eq 'mcc38' ||
	 $column_name eq 'mcc5' ||
	 $column_name eq 'fischer5' ||
	 $column_name eq 'auc' 
	 ) {
	$result = 1;
    } 
    return $result;
}

sub exist_by_parameters {
    my ($self, %model) = @_;
    my $result = 0;
    my $query = sprintf(" SELECT id FROM %s 
	WHERE gr_name=\'%s\' AND gr_code=%d AND model=%d 
	", $self->{_table}, $model{gr_name}, $model{gr_code}, $model{model}
	);
    my $sth = $self->{_database}->query($query);
    # print "EXIST SQL: " . $query ."\n";    
    if(defined($sth) && ($sth->rows() > 0)) {
        my ($id) = $sth->fetchrow_array();
        $result = $id;
    }
    return $result;
}

sub getGrNameByCode{
    my ($self, $code) = @_;
    my $query = "SELECT name FROM casp13.groups WHERE code=$code";
    my $result = undef;
    my $sth = $self->{_database}->query($query);
    if (defined($sth) && ($sth->rows() == 1)) {
	($result) = $sth->fetchrow_array();
    }
    return $result;
}

sub getCodeByGrName{
    my ($self, $gr_name) = @_;
    my $query = "SELECT code FROM casp13.groups WHERE name=\'$gr_name\'";
    my $result = undef;
    my $sth = $self->{_database}->query($query);
    if (defined($sth) && ($sth->rows() == 1)) {
        ($result) = $sth->fetchrow_array();
    }
    return $result;
}


sub get_results{
    my ($self, $params) = @_;
    my $mod = 1;
    if (defined($params->{model}) && $params->{model} == 2 ){
	$mod = 2;
    }
    my $where = " WHERE model=$mod ";
    my $query = " SELECT gr_name, gr_code, model, 
		mcc38, mcc5, fischer5, auc
		FROM casp13.qa2_aucmcccorr  
		$where
		ORDER BY mcc38 DESC";

    my $sth = $self->{_database}->query($query);
    my @results = ();
    if(defined($sth) && ($sth->rows() > 0)) {
	my $index= 1;
	while(my ($gr_name, $gr_code, $model, 
		$mcc38, $mcc5, $fischer5, $auc
		) = $sth->fetchrow_array()){
		push @results, {
			INDEX => $index, 
			GR_NAME => $gr_name,
			GR_MODEL => sprintf("QA%03d_%d",  $gr_code, $model),

                        MCC38 => (defined($mcc38) ? sprintf("%.3f", $mcc38): '-'),
                        MCC5 => (defined($mcc5) ? sprintf("%.3f", $mcc5): '-'),
			FISCHER5 => (defined($fischer5) ? sprintf("%.3f", $fischer5): '-'),
                        AUC => (defined($auc) ? sprintf("%.3f", $auc): '-'),
		};
		$index++;
	}
    }
    return @results;
}

1;
