package BookPub::Import::Importer::BookBeat::v1;

use strict;
use warnings;

use lib '/app/tools/bookpub/lib';

use parent 'BookPub::Import::Importer';

sub _fieldMap {
    {
        rServiceName       => 'B2',
        dateBegin          => 'C5',
        dateEnd            => 'C6',
        rProductType       => 'E',
        rAuthor            => 'C',
        rTitle             => 'D',
        rIsbn13            => 'B',
        countryCode        => 'G',
        rUnits             => 'H',
        rUnitPrice         => 'J',
        rListPrice         => 'I',
        rListPriceCurrency => 'N',
        rDiscount          => 'L',
        rRevenue           => 'M',
        currencyCode       => 'N',
    };
}

sub _unverifiedFieldMap { }
sub _headerIdentifier   { rAuthor => 'Author' }
sub _useIsSaleRec       { 1 }

sub purchaseType  { BookPub::DB::Item::Sale::kPurchaseTypeDownload }
sub rPurchaseType { BookPub::DB::Item::Sale::kPurchaseTypeDownload }
sub productType   { $_[0]->rProductType }
sub priceType     { 'rrp' }


sub rServiceName {
    my $self = shift;

    my $name = $self->_getByFieldName('rServiceName') || '';
    return 'BookBeat' if $name =~ /^BookBeat Sales - Pan MacMillan$/i;

    $self->fail("Unable to determine service_name from: '$name'");
}

sub _setDates {
    my $self = shift;

    my $dateBegin = $self->_getByFieldName('dateBegin') || '';
    my $dateEnd   = $self->_getByFieldName('dateEnd')   || '';
    if ( $dateBegin =~ /^\d{4}-\d{2}-\d{2}$/i && $dateEnd =~  /^\d{4}-\d{2}-\d{2}$/i ) {
       return $self->_getDates( date_begin => $dateBegin, date_end => $dateEnd );
    }

    $self->fail("Unable to determine date from: '$dateBegin' - '$dateEnd'.");
}

sub rProductType {
    my $self = shift;

    my $type = $self->_getByFieldName('rProductType') || '';
    if ( $type =~ /^Audiobook$/i ) {
        return BookPub::DB::Item::Sale::kProductTypeAudioBook;
    }

    $self->fail("Unable to determine product_type from: '$type'.");
}

sub _isSaleRec {
    my $self = shift;

    my $isbn   = $self->_getByFieldName('rIsbn13');
    my $title  = $self->_getByFieldName('rTitle');
    my $author = $self->_getByFieldName('rAuthor');

    return 0 unless $isbn && $title && $author;

    return $self->SUPER::_isSaleRec();
}


1;
