#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------
package RPS::DB::Item::McpsStatement;
use strict;
use warnings;
use lib '/app/tools/common/lib';
use Common::Assert;
use Common::DB::Item;
use Common::DB::ItemCollection;
use base 'Common::DB::Item';

use constant kTable => 'mcps_statement';
use constant kDB    => Common::DB::Item::kClientDB();

use constant kStatusNotQueued => 0;
use constant kStatusInQueue   => 1;
use constant kStatusRunning   => 2;
use constant kStatusComplete  => 3;
use constant kStatusError     => 4;
use constant kStatusAborted   => 5;

# These correspond to the ENUM for the 'mcsp_scheme' column.
#
use constant kSchemeAP1  => 'AP1';
use constant kSchemeDVD1 => 'DVD1';
use constant kSchemeAVP  => 'AVP';

use constant kFilterByTotalLessThanZero          => 1;
use constant kFilterByTotalGreaterThanZero       => 2;
use constant kFilterByTotalGreaterThatMinPayment => 3;
use constant kFilterByOnHold                     => 4;

sub GetByRunID {
    my ( $class, $runID ) = @_;
    assert($runID);

    my $sql = "SELECT * from mcps_statement WHERE uk_mechanical_run_id = " . $class->quote($runID);
    return $class->GetAll($sql);
}

sub GetCountByRunID {
    my ( $class, $runID, $payorID ) = @_;
    assert($runID);
    my $sql = "SELECT COUNT(*) from mcps_statement where uk_mechanical_run_id = " . $class->quote($runID);
    if ($payorID) {
        $sql .= " and payor_id = " . $class->quote($payorID);
    }
    my $dbo = Common::RSApp::GetClientDB();
    my $sth = $dbo->DoCmd($sql);
    my $hr  = $sth->fetchrow_hashref();
    return $hr->{'COUNT(*)'};
}

sub GetDistinctPayorsByRunID {
    my ( $class, $runID ) = @_;
    assert($runID);

    my @payorIDs;
    my $dbo = Common::RSApp::GetClientDB();
    my $sql = "SELECT distinct payor_id from mcps_statement where uk_mechanical_run_id = ?";
    my $sth = $dbo->DoCmdWithPlaceholders( $sql, [$runID] );
    while ( my $hr = $sth->fetchrow_hashref() ) {
        push @payorIDs, $hr->{payor_id};
    }

    return @payorIDs;
}

sub GetIDByRunAndMcpsScheme {
    my ( $class, $runID, $mcpsScheme ) = @_;
    assert($runID);

    my $dbo = Common::RSApp::GetClientDB();
    my $sql = "SELECT mcps_statement_id from " . kTable . " WHERE uk_mechanical_run_id = ? and mcps_scheme = ?";
    my $sth = $dbo->DoCmdWithPlaceholders($sql, [$runID, $mcpsScheme]);
    my ($id) = $sth->fetchrow_array();

    return $id;

}

1;
