#---------------------------------------------------------------
# ____                   _ _         ____  _
#|  _ \ ___  _   _  __ _| | |_ _   _/ ___|| |__   __ _ _ __ ___
#| |_) / _ \| | | |/ _` | | __| | | \___ \| '_ \ / _` | '__/ _ \
#|  _ < (_) | |_| | (_| | | |_| |_| |___) | | | | (_| | | |  __/
#|_| \_\___/ \__, |\__,_|_|\__|\__, |____/|_| |_|\__,_|_|  \___|
#            |___/             |___/
#
# Copyright (C) 2009 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#---------------------------------------------------------------
package BookPub::Sale::Report::Exceptions::SpecificFile;
use strict;
use warnings;

use File::Path;

use lib '/app/tools/common/lib';
use lib '/app/tools/bookpub/lib';
use BookPub::DB::Item::File;
use BookPub::Config;
use Common::Util;
use Common::Assert;

use base 'BookPub::Sale::Report::Exceptions';

sub _init {
    my ( $self, %args ) = @_;
    assert( defined $args{fileID} );

    $self->{_fileID} = $args{fileID};

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

sub fileID {
    my ($self) = @_;
    return $self->{_fileID};
}

sub fileName {
    my ($self) = @_;

    if ( !$self->{_filename} ) {

        # Build the filename from the file cleanname.
        #
        my $file = BookPub::DB::Item::File->Lookup( file_id => $self->fileID() );
        die "ERROR - cannot load file " . $self->fileID() unless $file;

        my $serviceID = $file->service_id;
        my $service = BookPub::Tracker::Service->new( serviceID => $serviceID );

        my $fileName  = $self->BookPub::Sale::Report::Exceptions::Row::_prettyFileName( $self->fileID() );
        my $cleanName = Common::Util::clean_name($fileName);
        $self->{_filename} = 'Exceptions_' . $service->ServiceNameClean() . '_' . $cleanName . '.tsv';
    }
    return $self->{_filename};
}

sub excelFileName {
    my ($self) = @_;
    return 'AllExceptions.xls';
}

sub _getSales {
    my ($self) = @_;
    return BookPub::DB::Item::Sale::AllExceptionsReport->ReportQuery( fileID => $self->fileID() );
}

1;
