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

use base 'Common::DB::Item';

use lib '/app/tools/rps/lib';
use RPS::DB::Item::TrackLicense;
use RPS::DB::Item::MechanicalStatementTrack;

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

sub GetByMechanicalStatementIDTrackIDPublisherID {
    my ( $class, $stmtID, $trackID, $publisherID ) = @_;

    assert($stmtID);
    assert($trackID);
    assert($publisherID);

    my $sql =
        "SELECT * FROM mechanical_statement_license"
      . " WHERE mechanical_statement_id=$stmtID"
      . " AND track_license_id in (select track_license_id from track_license where track_id=$trackID and publisher_id=$publisherID)";

    return $class->GetAll($sql);

}

sub GetByMechanicalStatementIDTrackID {
    my ( $class, $stmtID, $trackID ) = @_;

    assert($stmtID);
    assert($trackID);

    my $sql =
"SELECT * FROM mechanical_statement_license WHERE mechanical_statement_id=$stmtID AND track_license_id in (select track_license_id from track_license where track_id=$trackID)";

    return $class->GetAll($sql);
}

sub GetByMechanicalStatementID {
    my ( $class, $id ) = @_;

    my $sql = "SELECT * FROM mechanical_statement_license WHERE mechanical_statement_id=$id";
    return $class->GetAll($sql);
}

sub DeleteByMechanicalStatementID {
    my ( $class, $id ) = @_;

    my $sql = "DELETE from mechanical_statement_license WHERE mechanical_statement_id=$id";
    my $dbo = Common::RSApp::GetClientDB();
    $dbo->DoCmd($sql);
}

sub LicenseCount {
    my ( $class, $licenseID ) = @_;

    my $sql = "SELECT * FROM " . kTable . " ";
    $sql .= "LEFT JOIN mechanical_statement USING (mechanical_statement_id) ";
    $sql .= "LEFT JOIN mechanical_run USING (mechanical_run_id) ";
    $sql .= "WHERE track_license_id=$licenseID ";
    $sql .= "AND mechanical_run.status IN (0,1,2,5,6,7)";

    return $class->GetAll($sql)->size();
}

1;

