#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------
package RPS::Distribution::DuplicateList;

use strict;
use warnings;

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

use lib '/app/tools/metadata/lib';
use Metadata::DB::Item::ContentImport;
use Metadata::DB::Item::ContentImportData;
use Metadata::DB::Item::ContentImportDataStatus;

use lib '/app/tools/rps/lib';
use RPS::DB::Item::Album;
use RPS::Distribution::AlbumDetail;

use lib '/app/tools/rps/lib';

use base 'Common::FormObject';

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

	$self->SUPER::_init(%args);
    
	$self->{Album} = $self->_getAlbumDuplicates( %args );

    return $self;
}

sub _getAlbumDuplicates
{
    my $self = shift;
    my %args = @_;
    my @albums;
    my @tracks;
    my $obj;

    my $albums = Metadata::DB::Item::ContentImportData->SearchForDuplicates( %args );
    
    while ($albums->hasNext())
    {
        @tracks = ();
        my $data = $albums->next();

        #Common::Log::Debug( Dumper $data );
        
        $obj = RPS::Distribution::AlbumDetail->new( _dbItem => $data );

        @tracks = $self->_getTrackDuplicates( album_id        => $data->{album_id},
                                              digital_upc     => $args{digital_upc},
                                              cd_upc          => $args{cd_upc},
                                              vinyl_upc       => $args{vinyl_upc},
                                              dvd_upc         => $args{dvd_upc},
                                              isrc            => $args{isrc},
                                              client_track_id => $args{digital_upc}
                                            );
        
        $obj->{Tracks}->{Track} = \@tracks;
        push @albums, $obj;
    }
    
    return \@albums;
}

sub _getTrackDuplicates
{
    my $self = shift;
    my %args = @_;
    my @tracks;
    my $obj;

    my $tracks = Metadata::DB::Item::ContentImportData->SearchForDuplicateTracks( %args );
    
    while ($tracks->hasNext())
    {
        my $data = $tracks->next();

        Common::Log::Debug( Dumper $data );
        
        $obj = RPS::Distribution::TrackDetail->new( _dbItem => $data );

        push @tracks, $obj;
    }
    
    return \@tracks;
}


###
1;#
###
