package BookPub::Import::Importer::Spotify::v3;

use strict;
use warnings;

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


sub _fieldMap {
    {
        dateBegin          => 'A',
        dateEnd            => 'B',
        rTitle             => 'F',
        rSubtitle          => 'G',
        rIsbn13            => 'H',
        countryCode        => 'C',
        serviceProductID   => 'E',
        rUnits             => 'M',
        rListPriceCurrency => 'N',
        rRevenue           => 'O',
        currencyCode       => 'N',
        rDuration          => 'J',
        rChannel           => 'D',
    };
}

sub _unverifiedFieldMap {{}}

sub _headerIdentifier { countryCode => 'Market' }

sub _useIsSaleRec { 1 }
sub purchaseType  { BookPub::DB::Item::Sale::kPurchaseTypeStream }
sub rPurchaseType { shift->purchaseType }
sub productType   { BookPub::DB::Item::Sale::kProductTypeAudioBook }
sub rProductType  { shift->productType }
sub priceType     { 'rrp' }
sub rServiceName { 'Spotify' }


sub rUnits {
    my $self    = shift;
    my $units   = $self->_getByFieldName('rUnits') || 0;
    my $revenue = $self->_getByFieldName('rRevenue') || 0;

    return 1 if ($revenue || !$revenue)  && !$units;
    return $units;
}

sub rUnitPrice {
    my $self = shift;

    return $self->rRevenue / $self->rUnits;
}

sub rListPrice { shift->rUnitPrice }

sub rRevenue {
    my $self = shift;

    my $revenue = $self->_getByFieldName('rRevenue') || 0;
    return $revenue * 1;
}

sub isFree {
    my $self = shift;

    return !$self->rRevenue && ($self->rUnits || !$self->rUnits) ? 'Y' : 'N';
}


1;
