#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------
package RPS::Distribution::Command::Show;
use strict;
use warnings;

use Data::Dumper;

use lib '/app/tools/rps/lib';
use RPS::Distribution::Form;
use RPS::Catalog::Command::Main;
use base 'RPS::Command';

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

use lib '/app/tools/appuser/lib';
use AppUser::DB::Item::AccessLevel;

use lib '/app/tools/metadata/lib';
use Metadata::DB::Item::ContentImportData;
use Validate;
use Metadata::Importer;
use Metadata::Parser;

sub cmd  { return 'show'; }
sub area { return 'distribution'; }

use constant kTemplate => "/app/tools/rps/templates/distribution/index.xsl";


sub execute
{
	my ($self) = @_;
	my $distribution_hash = {};
	my $message;
    my $command;
    my $successMessage;

	my $response = $self->SUPER::execute();
	return $response if $response;
    my $form = new RPS::Distribution::Form( Show => $self->getParam( "show") );

    if( $self->getParam("c") && $self->getParam("c") eq 'discard' ) {
    	$self->_destroy_metadata_import();
    }

	if( $self->getParam("c") && $self->getParam("c") eq 'fail' ) {
    	$self->_fail_metadata_import();
    }

    elsif( $self->getParam("c") && $self->getParam("c") eq 'save' ) {
        # Grab an import report limiting results to warning and good only
        $form->{ImportSummary} = Metadata::DB::Item::ContentImportData::GetImportSummary( Validate::kStatusWarn, 1 );

        $self->addMessageXML( type => "success",
                              code => "$form->{ImportSummary}->{TotalAlbums} " .
                                      "albums have been added to your catalog containing " .
                                      "$form->{ImportSummary}->{TotalTracks} tracks." );

    	$self->_save_metadata_import();

    }

    $self->{xml}->{Distribution} = $form;

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

    return $response;
}

sub _fail_metadata_import {
    my $self = shift;
    my $importer;

    $self->addMessageXML( type => "fail", code => "Import Timeout" );

    $importer     = new Metadata::Importer( clientID => Common::RSApp::GetClientID() )
       || die( "Failed to create Metadata Controller" );

	$importer->reject();
}

sub _destroy_metadata_import {
    my $self = shift;
    my $importer;

    $self->addMessageXML( type => "error", code => "Import Rejected" );

    $importer     = new Metadata::Importer( clientID => Common::RSApp::GetClientID() )
       || die( "Failed to create Metadata Controller" );

	$importer->reject();
}

sub _save_metadata_import {
    my $self = shift;
    my $importer;

    $importer     = new Metadata::Importer( clientID => Common::RSApp::GetClientID() )
       || die( "Failed to create Metadata Controller" );

	$importer->store();

}

1;
