package RPS::Import::Merlin::v73;

use strict;
use warnings;

use lib '/app/tools/rps/lib';
use RPS::Import::ServiceMap;

use base 'RPS::Import::Importer';

sub _fieldMap {
    {
        labelName    => 'F',
        serviceID    => 'A',
        countryCode  => 'N',
        dateBegin    => 'B',
        dateEnd      => 'C',
        artistName   => 'H',
        upc          => 'J',
        albumName    => 'G',
        isrc         => 'L',
        trackName    => 'I',
        currencyCode => 'Q1',
        price        => 'Q',
    };
}

sub _unverifiedFieldMap {
    {
        quantityViews => 'O',
        quantityCreations => 'P'
    };
}
sub _headerIdentifier { upc => 'Release_ID' }

sub productType { RPS::File::Sale::TYPE_TRACK }
sub formatType { RPS::File::Sale::FORMAT_STREAM }
sub mediaType  { RPS::DB::Item::MediaType::kMediaTypeAudio }

sub serviceID {
    my $self = shift;

    my $service = $self->_getByFieldName('serviceID') || '';
    my $serviceID = $self->getServiceID( lc($service) ) || $RPS::Import::ServiceMap::SERVICE_ALIASES{ lc($service) };

    return $serviceID if $serviceID;

    $self->fail("Unable to determine service id from '$service'");
}

sub units {
    my $self = shift;

    my $quantityViews = $self->_getByFieldName('quantityViews');
    my $quantityCreations = $self->_getByFieldName('quantityCreations');

    return ($quantityViews ? $quantityViews : $quantityCreations);
}

sub currencyCode {
    my $self = shift;

    return $self->{currency_code} if $self->{currency_code};

    my $curr = $self->_getByFieldName('currencyCode') || '';
    $curr =~ /^(\w{3})_/;

    return $1 if $1;

    $self->fail("Unable to determine currency code from '$curr'.");
}

1;
