package RPS::Import::Merlin::v86;

use strict;
use warnings;

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

use parent 'RPS::Import::Merlin::v65';

sub physical { 2 }

sub _fieldMapExtended {
    {
        digital => {
            option1 => {
                labelName    => 'F',
                serviceID    => 'A',
                countryCode  => 'N',
                dateBegin    => 'B',
                dateEnd      => 'C',
                productType  => 'M',
                formatType   => 'V',
                artistName   => 'I',
                upc          => 'K',
                albumName    => 'G',
                isrc         => 'M',
                trackName    => 'J',
                units        => 'S',
                currencyCode => 'U',
                price        => 'U',
            },
        },
    };
}

sub _unverifiedFieldMapExtended { {} }

sub _headerIdentifierExtended {
    {
        digital => {
            option1 => {
                isrc => 'ISRC',
            },
        },
    };
}

sub saleDates {
    my $self = shift;

    my $dateBegin = $self->_getByFieldName('dateBegin') || '';
    my $dateEnd   = $self->_getByFieldName('dateEnd')   || '';

    my ($bd, $ed);

    if ( my($m, $d, $y) = $dateBegin =~ /^(\d{1,2}).(\d{1,2}).(\d{2,4})$/i ) {
        $y = substr($y, -2);
        $bd = sprintf "20%02d-%02d-%02d", $y, $m, $d;
    }
    elsif ( my($y, $m, $d) = $dateBegin =~ /^(\d{4})-(\d{2})-(\d{2})$/i ) {
        $bd = sprintf "%04d-%02d-%02d", $y, $m, $d;
    }
    if ( my($m, $d, $y) = $dateEnd =~ /^(\d{1,2}).(\d{1,2}).(\d{2,4})$/i ) {
        $y = substr($y, -2);
        ($m, $d) = ($d, $m) if $m > 12;
        $ed = sprintf "20%02d-%02d-%02d", $y, $m, $d;
    }
    elsif ( my($y, $m, $d) = $dateEnd =~ /^(\d{4})-(\d{2})-(\d{2})$/i ) {
        $ed = sprintf "%04d-%02d-%02d", $y, $m, $d;
    }

    return $bd, $ed if $bd && $ed;

    $self->fail( "Unable to determine date from: '$dateBegin' and '$dateEnd'" );
}

sub formatType {
    my $self = shift;

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

    if ( $type =~ /^(Music LIbrary|UGC|)$/i ) {
        return RPS::File::Sale::FORMAT_STREAM;
    }

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


1;
