#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
#------------------------------------------------------------
package RPS::Product::ServiceForm;

use strict;
use warnings;
use lib '/app/tools/common/lib';
use Common::Assert;


use lib '/app/tools/rps/lib';
use Common::FormObject;
use RPS::Product::Product;
use RPS::Product::ProductDigital;
use RPS::Product::PricingTierList;
use RPS::Catalog::AlbumSimple;
use RPS::LabelList;
use RPS::Product::ProductDigitalWithServices;
use Data::Dumper;


use base 'Common::FormObject';

sub _init
{
	my ($self, %args) = @_;

	$self->SUPER::_init(%args);

    my $productID = $args{productID};
    assert($productID);

    $self->{PriceTiers} = RPS::Product::PricingTierList->new(productID => $productID);
    $self->{Product} = RPS::Product::Product->new(productID => $productID);
    $self->{ProductDigital} = RPS::Product::ProductDigitalWithServices->new(productID => $self->{Product}->ProductID());
	$self->{Album} = RPS::Catalog::AlbumSimple->new(albumID => $self->{Product}->AssetID(), loadSubs => 0);

	return $self;
}

sub save
{
	my ($self, $args) = @_;
	my @services = $self->{ProductDigital}->Services;
	my @keys = keys(%$args);

	Common::Log::Debug( "KEYS: @keys" );

	foreach my $service ( @services ) {
		# Toggle Delivery Approval
        my $key = "ServiceToggle_" . $service->ServiceID;
	    Common::Log::Debug( "Service: $key" );
		if( $args->{$key} ) {
		    $service->addDistribution( $self->{Product}->ProductID() );
		} else {
		    $service->removeDistribution( $self->{Product}->ProductID() );
		}

        if( $service->ServiceID ) {
            # Toggle Price Tier
            my $price_id = "ServicePricingTierID_" . $service->ServiceID;
            my $price_tier = new RPS::Product::PricingTier( servicePriceTierID => $args->{$price_id} );


            if( $args->{$price_id} ) {
	            Common::Log::Debug( "Setting Price Tier - Service: " . $service->ServiceID . ", Code: $args->{$price_id}" );
                $price_tier->togglePricingTier( service_id => $service->ServiceID,
                                                product_id => $self->{Product}->ProductID(),
                                                service_price_tier_id => $args->{$price_id} );
            } elsif( defined($args->{$price_id}) ) {
	            Common::Log::Debug( "Clear Price Tier: $price_id" );
                $price_tier->clearPricingTier( service_id => $service->ServiceID,
                                               product_id => $self->{Product}->ProductID(),
                                               service_price_tier_id => $args->{$price_id} );
            }
        }
	}

}




###
1;#
###
