package RPS::Import::CDBaby::v2;

use strict;

use lib '/app/tools/rps/lib';
use base 'RPS::Import::CDBaby::v1';

sub _fieldMap {
    {
        dateBegin        => 'B',
        serviceID        => 'L',
        formatType       => 'M',
        artistName       => 'J',
        upc              => 'G',
        albumName        => 'I',
        serviceProductID => 'H',
        isrc             => 'F',
        trackName        => 'K',
        units            => 'C',
        price            => 'E',
    };
}

sub _headerIdentifier { ( upc => 'Barcode' ) }

sub currencyCode { 'USD' }
sub countryCode  { 'US' }

sub isrc {
    my $self = shift;

    my $isrc = $self->_getByFieldName('isrc') || '';
    $isrc =~ s/UNKNOWN//gi;

    return $isrc;
}

sub productType {
    my $self = shift;

    return $self->isrc ? RPS::File::Sale::TYPE_TRACK : RPS::File::Sale::TYPE_ALBUM;
}

sub mediaType { RPS::DB::Item::MediaType::kMediaTypeAudio }

sub formatType {
    my $self = shift;

    my $serviceID = $self->_getByFieldName('serviceID')  || '';
    my $fmt       = $self->_getByFieldName('formatType') || '';

    if ( $serviceID =~ /^SoundExchange$/i && $fmt =~ /^Royalty$/i ) {
        return RPS::File::Sale::FORMAT_PERFORMANCE;
    } elsif ( $fmt =~ /^(?:youtube [sma]|facebook [au]|stream)/i ) {
        return RPS::File::Sale::FORMAT_STREAM;
    } elsif ( $fmt =~ /^download$/i ) {
        return RPS::File::Sale::FORMAT_DOWNLOAD;
    }

    return $self->handleError( "Unknown format: $fmt", RPS::DB::Item::SaleImportError::kErrorFormatType );
}

1;
