package RPS::Import::Musiwave::Subscription;

use strict;

use lib '/app/tools/common/lib';
use Common::Date;

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

use Data::Dumper;

sub _headerIdentifier { { trackName => 'Track Title' } }

sub _getDateBegin {
    my $self = shift;

    my $filename = $self->filename() || return;
    $filename =~ /(\d{8})_\d{8}/ || $self->fail("Could not determine date from filename: $filename");

    return $1;
}

sub _getDateEnd {
    my $self = shift;

    my $filename = $self->filename() || return;
    $filename =~ /\d{8}_(\d{8})/ || $self->fail("Could not determine date from filename: $filename");

    return $1;
}

sub formatType { RPS::File::Sale::FORMAT_STREAM }
sub mediaType  { RPS::DB::Item::MediaType::kMediaTypeAudio }

sub productType {
    my $type = shift->_getByFieldName('productType') || return;

    return lc($type) eq 'single full-track'
      ? RPS::File::Sale::TYPE_TRACK
      : undef;
}

sub artistName {
    my $self        = shift;
    my $trackArtist = $self->_getByFieldName('trackArtist');
    my $albumArtist = $self->_getByFieldName('albumArtist');

    return $self->productType eq RPS::File::Sale::TYPE_TRACK ? $trackArtist : $albumArtist;
}

sub serviceID {
    my $self    = shift;
    my $service = $self->_getByFieldName('serviceID');

    my $serviceID = $self->getServiceID($service) if ($service);

    $self->fail("Unknown service '$service'") unless ($serviceID);

    return $serviceID;
}

###
1;    # Play nicely.
###
