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

use lib '/app/tools/support/lib';
use Support::Service::DistributionServiceList;

use base 'Support::Command::Submit';

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

use lib '/app/tools/distribution/lib';
use Distribution::DistributionProcess::DistributionProcessList;
use Distribution::DistributionProcess::DistributionJob;

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

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

sub _argOrPref {
    my ( $self, $arg ) = @_;

    unless ( $self->isSubmit() ) {
        my $pref = Common::Preference::Get("distribution_process_$arg");
        $self->setParam( $arg, $pref ? $pref->value : 0 );
    }

    return $self->getParam($arg) || 0;
}

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

    my $age     = $self->getParam('age') || 24;
    my $service = $self->_argOrPref('service');
    my $client  = $self->_argOrPref('client');

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

    my $dist = new Distribution::DistributionProcess::DistributionJob();
    $dist->refreshDistributionJobStatus();

    my $form = new Distribution::DistributionProcess::DistributionProcessList(
        ClientID => $client,
        Subclass => $service,
        Age      => $age,
    );

    my $services = new Support::Service::DistributionServiceList;

    $self->{xml}{Form}     = $form;
    $self->{xml}{Services} = $services;

    # Save last args as preferences, if they were specified
    #
    Common::Preference::SetPersistentCookie( 'distribution_process_age'     => $age );
    Common::Preference::SetPersistentCookie( 'distribution_process_client'  => $client );
    Common::Preference::SetPersistentCookie( 'distribution_process_service' => $service );

    Common::Preference::StoreCookies();

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

1;
