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

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::Distribution::AlbumDetail;

use base 'Common::FormObject';

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

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

    $self->{_display}                = $args{display};
    $self->{_page}                   = $args{page} || 1;
    $self->{_page_size}              = $args{page_size};
    $self->{_show_all}               = $args{show_all};
    $self->{_catalog_no}             = $args{catalog_no};
    $self->{_null_catno}             = $args{null_catno};
    $self->{_colset}                 = $args{colset} || 1;
    $self->{_content_import_data_id} = $args{content_import_data_id};

    $self->{Album} = $self->_getAlbumDetail();

    $self->{Display} = {
        TotalAlbums => Metadata::DB::Item::ContentImportData->GetAlbumCount( criteria => $self->{_display} ),
        ColSet      => $self->{_colset},
        PageSize    => $self->{_page_size},
        Page        => $self->{_page}
    };

    return $self;
}

sub _getAlbumDetail {
    my $self = shift;
    my @albums;
    my $get_tracks;

    my $albums = Metadata::DB::Item::ContentImportData->GetAlbumSummary(
        limit                  => $self->{_page_size},
        page                   => $self->{_page},
        criteria               => $self->{_display},
        show_all               => $self->{_show_all},
        content_import_data_id => $self->{_content_import_data_id}
    );

    while ( $albums->hasNext() ) {
        my $data = $albums->next();

        # Get tracks if the two catalog numbers match
        $get_tracks =
             $data->{catalog_no}
          && $self->{_catalog_no}
          && $data->{catalog_no} eq $self->{_catalog_no} ? 1 : undef;

        # Get tracks if the two catalog numbers are null and the null_catno flag is set
        $get_tracks = 1
          if ( !defined( $data->{catalog_no} )
            && !defined( $self->{_catalog_no} )
            && $self->{_null_catno} );

        push @albums,
          RPS::Distribution::AlbumDetail->new(
            _dbItem    => $data,
            get_tracks => $get_tracks
          );
    }

    return \@albums;
}

###
1;    #
###
