#------------------------------------------------------------
# Copyright (C) 2009 RoyaltyShare, Inc.   All Rights Reserved
#------------------------------------------------------------
package Support::SaleImporter::SampleList;

use strict;
use warnings;
use Carp;

use lib '/app/tools/support/lib';
use Support::SaleImporter::SaleImporter::WithSamples;
use Support::Service::ServiceSimple;
use Support::SaleImporter::File;

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

use Common::FormObject;
use base 'Common::FormObject';

sub repository { die }

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

    my $serviceID = $args{serviceID};
    my $version   = $args{version};

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

    assert( $serviceID, "Service ID Required" );
    assert( $version,   "Version Required" );

    my @files = $self->_getAllSampleFiles( $serviceID, $version );

    $self->{SampleFile} = [];

    foreach my $file (@files) {
        push( @{ $self->{SampleFile} }, $self->_getFileObject($file) );
    }

    return @{ $self->{SampleFile} } ? $self : undef;
}

sub SampleFile {
    my $self = shift;
    return @{ $self->{SampleFile} };
}

sub _getAllSampleFiles {
    my $self          = shift;
    my $serviceID     = shift || return;
    my $version       = shift || return;
    my $versionPadded = sprintf( "%03d", $version );

    my @files;

    my $service = $self->_getServiceObject($serviceID);

    return unless ($service);

    my $serviceDir = $self->repository() . "/" . $service->ServiceNameClean . "_" . $service->ServiceID . "/" . $versionPadded;

    Common::Log::Debug("Open DIR: $serviceDir");
    if ( -d $serviceDir ) {
        opendir( DIR, $serviceDir ) || die "Can't open dir $serviceDir: $!";
        for my $f ( grep { /^[^\.]/ && !/^CVS$/ } readdir(DIR) ) {
            push( @files, $service->ServiceNameClean . "_" . $service->ServiceID . "/" . $versionPadded . "/" . $f );
        }
        closedir(DIR);
    }

    return @files;
}

1;
