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