#------------------------------------------------------------
# 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;    #
###
