package RPS::Import::GoogleMusic::v8;

use strict;

use lib '/app/tools/rps/lib';
use RPS::File::Sale;
use base 'RPS::Import::Importer';

sub _fieldMap {
    my $self    = shift;
    my $version = $self->_version;

    my %field_map = (
        8 => {
            dateBegin    => 'A2',
            dateEnd      => 'B2',
            currencyCode => 'C2',

            upc         => 'E',
            isrc        => 'F',
            artistName  => 'B',
            trackName   => 'C',
            albumName   => 'D',
            labelName   => 'J',
            countryCode => 'A',
            price       => 'P',
        },
        11 => {
            dateBegin => 'C2',
            dateEnd   => 'D2',

            upc         => 'E',
            isrc        => 'F',
            artistName  => 'B',
            trackName   => 'C',
            albumName   => 'D',
            labelName   => 'J',
            countryCode => 'A',
            price       => 'O',
        },
    );
    return $field_map{$version};
}

sub _unverifiedFieldMap {
    {
        webPlays    => 'K',
        devicePlays => 'L',
        downloads   => 'M',
    };
}

sub units {
    my $self        = shift;
    my $webPlays    = $self->_getByFieldName('webPlays');
    my $devicePlays = $self->_getByFieldName('devicePlays');
    my $downloads   = $self->_getByFieldName('downloads');
    return $webPlays + $devicePlays + $downloads;
}

sub _headerIdentifier { ( upc => 'UPC' ) }
sub productType       { RPS::File::Sale::TYPE_TRACK }
sub formatType        { RPS::File::Sale::FORMAT_STREAM }
sub mediaType         { RPS::DB::Item::MediaType::kMediaTypeAudio }

sub currencyCode {
    my $self = shift;
    if ( exists $self->_fieldMap->{'currencyCode'} ) {
        return $self->SUPER::currencyCode;
    } else {
        return $self->{_currencyCode};    # from header; see _processHeader
    }
}

sub _processHeader {
    my $self = shift;
    if ( $self->_version == 11 ) {
        return if ( !$self->{_headerFound} );

        my $p = $self->_getByFieldName('price');
        if ( $p =~ /^Amount_Payable_(\w{3})/ ) {
            $self->{_currencyCode} = $1;
        }
    }
}

###
1;    #
###
