package BookPub::Import::Importer::IngramDigital::Base;

use strict;

use lib '/app/tools/bookpub/lib';
use base 'BookPub::Import::Importer';

sub _fieldmap { die "must be overloaded" }

sub _headerIdentifier { ( rAuthor => 'AUTHOR' ) }

sub purchaseType { BookPub::DB::Item::Sale::kPurchaseTypeDownload }
sub productType  { BookPub::DB::Item::Sale::kProductTypeAudioBook }
sub formatType   { BookPub::DB::Item::Sale::kFormatTypeAudioUnknown }

sub countryCode { 'US' }

sub dateBegin {
    my $self  = shift;
    my $sheet = $self->sheetname || '';
    my $file  = $self->filename;

    my ($startDate) = $sheet =~ m/\s(\w+\D\d+)/;
    my ($startDate) = $file =~ /\.(\w{3}-\d{1,2})\./ unless ($startDate);
    ($startDate) = $file =~ m/[\s\.](\w+\D\d+)/ unless ($startDate);

    $self->fail("Failed to determine start date from filename ($file) or sheetname ($sheet)") unless ($startDate);

    my $date = new Common::Date( date => $startDate, type => $self->_dateFormat() );
    return $date->monthBegin();
}

sub dateEnd {
    my $self  = shift;
    my $sheet = $self->sheetname || '';
    my $file  = $self->filename;

    my ($endDate) = $sheet =~ m/\s(\w+\D\d+)/;
    my ($endDate) = $file =~ /\.(\w{3}-\d{1,2})\./ unless ($endDate);
    ($endDate) = $file =~ m/[\s\.](\w+\D\d+)/ unless ($endDate);

    $self->fail("Failed to determine start date from filename ($file) or sheetname ($sheet)") unless ($endDate);

    my $date = new Common::Date( date => $endDate, type => $self->_dateFormat() );
    return $date->monthEnd();
}

1;
