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

use lib '/app/tools/rps/lib';
use RPS::Catalog::Command::Show;
use RPS::DB::Item::Track;

use lib '/app/tools/common/lib';
use RSApache::Response::JSON;
use Common::FormObject;

use RPS::XMLCommand;
use base 'RPS::XMLCommand';

sub cmd  { return 'ca_mech'; }
sub area { return 'track'; }

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

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

	my $trackID = $self->getParam("TrackID");
	my $albumID = $self->getParam("AlbumID");
	my $productFilter = $self->getParam("productFilter");
	my $licenseFilter = $self->getParam("licenseFilter");
	my $value   = $self->getParam("value") ? 1 : 0;

	my $tracks = [];

    my $returnValue = 1;

	if($albumID)
	{
		my $trackColl = RPS::DB::Item::Track->GetTracksByAlbumIDFiltered(
						    $albumID,
						    type => 'CA',
							filter => { productFilter => $productFilter,
									    licenseFilter => $licenseFilter } );
		while($trackColl->hasNext())
		{
			push @$tracks, $trackColl->next();
		}
	}
	elsif($trackID)
	{
        my $trackIDArray = $trackID;
        if (! ref $trackIDArray)
        {
            $trackIDArray = [$trackID];
        }
        foreach my $id (@$trackIDArray)
        {
		    my $dbItem = RPS::DB::Item::Track->Lookup(track_id => $trackID);
		    if($dbItem)
		    {
			    push @$tracks, $dbItem if($dbItem);
		    }
		    else
		    {
			    # this is an error, but I don't know where to redirect?
                $returnValue = 0;
		    }
        }
	}
	else
	{
		# redirect to album page?
        $returnValue = 0;
	}

	foreach my $track (@$tracks)
	{
		Common::Log::Debug( sprintf( "Updating exclude mechanicals for track: %s, value: %s", $track->track_id, $value ? "1" : "0" ) );
		$track->ca_mechanical_exempt($value);
		$track->save();
	}

	return RSApache::Response::JSON->new($returnValue);
}


###
1;# Play nicely.
###
