#------------------------------------------------------------
# Copyright (C) 2007 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------
package Distribution::DB::Item::Job;
use strict;
use warnings;

use lib '/app/tools/common/lib';
use Common::Assert;
use Common::DB::Item;
use Common::DB::ItemCollection;
use Common::DB::AutoLock;
use Common::DB::Item::TableState;
use Common::Log;

use lib '/app/tools/job/lib';
use Job::Status;
use Job::DB::Item::JobSkipRule;
use base 'Job::DB::Item::Job';

use constant kTable => 'job';
use constant kDB    => Common::DB::Item::kCommonDB();

sub GetAllDistributionJobs {
    my $class = shift;
    my %args  = @_;

    assert( $args{distribution_process_id} );
    assert( $args{client_id} );

    my $dbo = Common::RSApp::GetCommonDB();
    my $sql =
        'SELECT job.* '
      . 'FROM job INNER JOIN distribution_job USING (job_id) '
      . 'WHERE distribution_process_id = '
      . $dbo->DBQuote( $args{distribution_process_id} ) . ' AND '
      . 'client_id = '
      . $dbo->DBQuote( $args{client_id} );

    Common::Log::Debug("QUERY: $sql");

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

sub GetLastDistributionJob {
    my $class = shift;
    my %args  = @_;

    assert( $args{distributionProcessID} );
    assert( $args{clientID} );

    my $dbo = Common::RSApp::GetCommonDB();
    my $sql =
        "SELECT job.* " . "FROM "
      . kTable
      . " INNER JOIN distribution_job USING (job_id) "
      . "WHERE distribution_process_id = "
      . $dbo->DBQuote( $args{distributionProcessID} ) . " AND "
      . "client_id = "
      . $dbo->DBQuote( $args{clientID} ) . " "
      . "ORDER BY job_id desc LIMIT 1";

    Common::Log::Debug("QUERY: $sql");

    my $collection = $class->SUPER::GetAll($sql);
    return $collection && $collection->hasNext() ? $collection->next() : undef;
}

###
1;    #
###
