#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
#------------------------------------------------------------
package Support::JobQueue::Command::ShowJob;
use strict;
use warnings;

use lib '/app/tools/support/lib';
use base 'Support::Command::Submit';

use lib '/app/tools/common/lib';
use RSApache::Response::XSLT;
use Common::Assert;

use lib '/app/tools/job/lib';
use Job::Job;

use lib '/app/tools/distribution/lib';
use Distribution::DB::Item::DistributionJob;

use lib '/app/tools/report/lib';

sub cmd  { return 'show_job'; }
sub area { return 'job_queue'; }

use constant kTemplate => "/app/tools/support/templates/job_queue/job_detail.xsl";

sub execute {
    my ($self) = @_;

    my $response = $self->SUPER::execute();
    return $response if $response;

    my $jobID = $self->getParam('JobID');

    my $form = Job::Job->CreateFromJobID($jobID) if ($jobID);

    # Refresh the form object if we have updated it.
    $form = new Job::Job->CreateFromJobID($jobID)
      if ( $self->saveOnSubmit($form) );

    if ($form) {
        my $dbObj = Distribution::DB::Item::DistributionJob->Lookup( job_id => $form->id );
        $form->{DistributionProcessID} = Common::FormObject::Scalar->new( value => $dbObj->distribution_process_id )
          if ($dbObj);

        $form->{CommandLine} = $form->getCommandLine()
          unless ( ref($form) eq 'Job::Job' );
    }

    $self->{xml}{Form} = $form;
    $response = RSApache::Response::XSLT->new( $self->{xml}, kTemplate );
    return $response;
}

sub saveOnSubmit {
    my $self    = shift;
    my $form    = shift;
    my $cgiArgs = $self->getParams();

    return unless ($form);

    if ( $self->isSubmit ) {
        my $newDBItem = Job::DB::Item::Job->Lookup( job_id => $cgiArgs->{JobID} );

        $newDBItem->on_hold( $cgiArgs->{Form_OnHold} ? 1 : 0 );
        $newDBItem->min_start_date( $cgiArgs->{Form_MinStartDate} );
        $newDBItem->priority( $cgiArgs->{Form_Priority} );
        $newDBItem->save();

        $self->{xml}{Message} = "Update Successful";

        return 1;
    }

    return;
}

1;
