package RPS::Import::SoundtrackYourBrand::v1;

use strict;
use warnings;

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

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

sub _fieldMap {
    {
        labelName    => 'E',
        serviceID    => 'R',
        countryCode  => 'L',
        dateBegin    => 'A',
        dateEnd      => 'B',
        formatType   => 'P',
        artistName   => 'I',
        upc          => 'F',
        albumName    => 'H',
        isrc         => 'K',
        trackName    => 'J',
        units        => 'M',
        currencyCode => 'O',
        price        => 'N',
    }
}

sub _headerIdentifier { upc => 'UPC' }

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

sub saleDates {
    my $self = shift;

    my $dateBegin = $self->_getByFieldName('dateBegin') || '';
    my $dateEnd   = $self->_getByFieldName('dateEnd')   || '';
    # DD.MM.YYYY
    if ( $dateBegin =~ /(\d{2})[.-](\d{2})[.-](\d{4})/ ) {
        $dateBegin = sprintf "%04d-%02d-%02d", $3, $2, $1;
    }
    if ( $dateEnd =~ /(\d{2})[.-](\d{2})[.-](\d{4})/ ) {
        $dateEnd = sprintf "%04d-%02d-%02d", $3, $2, $1;
    }

    unless ( $dateBegin && $dateEnd ) {
        $self->fail( "Unable to determine date from: '$dateBegin'." );
    }

    return $self->_getDates( date_begin => $dateBegin, date_end => $dateEnd );
}

sub serviceID {
   my $self = shift;

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

   $self->fail("Unknown service: $service");
}

sub countryCode {
   my $self = shift;

   my $country = $self->_getByFieldName('countryCode');
   my $oCountry = Common::Country->new( search => $country );
   return $oCountry->alpha2() if $oCountry;

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

sub formatType {
    my $self = shift;

    my $type = $self->_getByFieldName('formatType') || '';
    if ( $type =~ /^tier-2-background-music-tier-with-caching$/i ) {
        return RPS::File::Sale::FORMAT_PERFORMANCE;
    }

    $self->fail("Unknown formatType '$type'");
}

sub price     { abs( shift->_getByFieldName('price') || 0 ) }
sub unitPrice { abs shift->SUPER::unitPrice }
sub units {
    my $self = shift;

    my $units = $self->_getByFieldName('units') || 0;
    my $price = $self->_getByFieldName('price') || 0;

    return $units if $price == 0;
    return $price < 0 ? abs($units) * -1 : abs($units);
}


1;