package BookPub::Import::Importer::Cloudaloud::v1;

use strict;
use warnings;

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


sub _fieldMap {
    {
        dateBegin              => 'A',
        dateEnd                => 'A',
        rAuthor                => 'D',
        rTitle                 => 'C',
        countryCode            => 'G',
        rUnits                 => 'E',
        rListPrice             => 'I',
        rListPriceCurrency     => 'F',
        rPurchasePrice         => 'H',
        rPurchasePriceCurrency => 'F',
        rDiscount              => 'J',
        rRevenue               => 'K',
        currencyCode           => 'F',
    };
}


sub _headerIdentifier { rTitle => 'Title' }

sub _useIsSaleRec { 1 }
sub productType   { BookPub::DB::Item::Sale::kProductTypeAudioBook }
sub purchaseType  { BookPub::DB::Item::Sale::kPurchaseTypeDownload }
sub priceType     { 'rrp' }

sub rServiceName {
    return BookPub::Tracker::Service::GetDefaultServiceName( service_id => shift->serviceID );
}

sub _getDateBegin {
    my $self = shift;

    my $dateBegin = $self->_getByFieldName('dateBegin') || '';
    if ( $dateBegin =~ /^(\d{2})[-\/](\d{2})[-\/](\d{4})$/ ) {
        return sprintf "%04d-%02d-%02d", $3, $1, $2;
    } elsif ( $dateBegin =~ /^(\d{2})[-\/](\d{2})[-\/](\d{2})$/ ) {
        return sprintf "%04d-%02d-%02d", "20$3", $1, $2;
    } elsif ( $dateBegin =~ /^(\d{4})[-\/](\d{2})[-\/](\d{2})$/ ) {
        return sprintf "%04d-%02d-%02d", $1, $2, $3;
    }

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

sub _getDateEnd {
    my $self = shift;

    my $dateEnd = $self->_getByFieldName('dateEnd') || '';
    if ( $dateEnd =~ /^(\d{2})[-\/](\d{2})[-\/](\d{4})$/ ) {
        return sprintf "%04d-%02d-%02d", $3, $1, $2;
    } elsif ( $dateEnd =~ /^(\d{2})[-\/](\d{2})[-\/](\d{2})$/ ) {
        return sprintf "%04d-%02d-%02d", "20$3", $1, $2;
    } elsif ( $dateEnd =~ /^(\d{4})[-\/](\d{2})[-\/](\d{2})$/ ) {
        return sprintf "%04d-%02d-%02d", $1, $2, $3;
    }

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

sub _isSaleRec {
    my $self = shift;

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

    if ( !$dateBegin && !$isbn && !$title && !$author ) {
        return 0;
    }

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


1;