package RPS::Import::Sony::v41;

use strict;
use warnings;

use lib '/app/tools/rps/lib';
use lib '/app/tools/data_classes/lib';

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

sub _fieldMap {
    {
        dateBegin        => 'A',
        dateEnd          => 'A',
        productType      => 'F',
        formatType       => 'G',
        artistName       => 'B',
        isrc             => 'E',
        trackName        => 'D',
        units            => 'I',
        price            => 'H',
        mediaType        => 'F',
    };
}

sub currencyCode      { 'USD' }
sub countryCode       { 'US' }
sub serviceID         { Client::Service::DSP_SONY }
sub _headerIdentifier { units => 'Units' }

sub saleDates {
    my $self = shift;

    my $startDate = $self->_getDateBegin();
    my $endDate   = $self->_getDateEnd();

    return $self->_getDates( date_begin => $startDate, date_end => $endDate );
}

sub productType {
    my $self = shift;

    my $type  = $self->_getByFieldName('productType') || "";

    if ($type =~ /^Digital Audio Track$/) {
        return RPS::File::Sale::TYPE_TRACK;
    }
    $self->fail("Unable to determine product type from '$type'");
}

sub mediaType {
    my $self = shift;

    my $type  = $self->_getByFieldName('mediaType') || "";

    if ($type =~ /^Digital Audio Track$/) {
        return RPS::DB::Item::MediaType::kMediaTypeAudio;
    }

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


sub formatType {
    my $self = shift;

    my $type  = $self->_getByFieldName('formatType') || "";

    if ($type =~ /^(?:Online Audio Track Broadcast|Mobile) Webcasting$/) {
        return RPS::File::Sale::FORMAT_PERFORMANCE;
    }

    $self->fail("Unable to determine format type from '$type'");
}

1;
