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

use strict;
use warnings;
use Carp;

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

use lib '/app/tools/rps/lib';
use RPS::Product::DistributionServiceList;

use lib '/app/tools/distribution/lib';
use Distribution::DB::Item::ProductDistribution;
use Distribution::DB::Item::ServiceAccount;


use base 'RPS::Product::ProductDigital';


sub _initProperties
{
	my ($self, $prop) = @_;

	$self->SUPER::_initProperties( $prop );

	$self->{DistributionServices} = new RPS::Product::DistributionServiceList();

	my $pd;
	if( $self->{DistributionServices}->getList() ) {
		foreach( @{$self->{DistributionServices}->getList()} ) {
            $pd = undef;
			$pd = Distribution::DB::Item::ProductDistribution->Search(
					service_id => $_->ServiceID , product_id => $self->ProductID, valid => 0 )
                if( $_->ServiceID );

			if( $pd ) {
			    $_->{Staged}       = $pd->product_distribution_id ? 1 : 0;
			    $_->{Queued}       = $pd->distribution_process_id ? 1 : 0;
			    $_->{DeliveryDate} = $pd->delivery_date;
			    $_->{Denied}       = $pd->denied;
			    $_->{ThirdParty}   = $pd->third_party;
                $_->{DeniedDate}   = $pd->date_modified if( $pd->denied );
			}

			if( $_->ServiceID ) {
			    $_->{PricingTiers} = new RPS::Product::PricingTierList( service_id => $_->ServiceID,
																        product_id => $self->ProductID );

				$_->{Source} = Distribution::DB::Item::ServiceAccount->GetAccountType (
				                    service_id => $_->ServiceID,
									client_id  => Common::RSApp::GetClientID() );
			}
		}
	}

    return $self;
}

sub Services {
    my $self = shift;
    return @{$self->{DistributionServices}->getList()};
}

1;
