package RPS::Import::ADA::ADACommon;

use strict;

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

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

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

sub getServiceID {
    my $self        = shift;
    my $serviceName = shift;

    my $serviceID;
    $serviceName =~ s/\s+$//;
    $serviceID = $self->SUPER::getServiceID( lc($serviceName) ) || $RPS::Import::ServiceMap::SERVICE_ALIASES{ lc $serviceName };

    if ( !$serviceID ) {

        # Trying to get the Korean names to match up...
        my $serviceNameCopy = $serviceName;
        $serviceNameCopy =~ s/(.|\n)/sprintf("%02lx", ord $1)/eg;
        $serviceID = $self->SUPER::getServiceID( lc($serviceNameCopy) ) || $RPS::Import::ServiceMap::SERVICE_ALIASES{ lc $serviceNameCopy };
    }

    if ( !$serviceID && $self->countryCode && $self->countryCode eq 'KR' ) {

        # FB16136: Anything coming out of Korea is mapped to ADA
        #
        $serviceID = Client::Service::DSP_ADA;
    }

    # Apply ADA-specific service mappings, if any (FB33)
    #
    if (
        !$serviceID
        && (   $serviceName =~ /^\(\?\)\?\?\?\?\?$/
            || $serviceName =~ /^mlj inc.$/i )
      ) {
        $serviceID = Client::Service::DSP_ADA;
    }

    $serviceID = Client::Service::DSP_ADA       if ( !$serviceID && $serviceName =~ /^Digital Breakage Adj$/i );                    # FB393
    $serviceID = Client::Service::DSP_ADA       if ( !$serviceID && $serviceName =~ /^Digital Breakage Adjustments CZ$/i );         # FB2106
    $serviceID = Client::Service::DSP_ADA       if ( !$serviceID && $serviceName =~ /^Digital Breakage Adjustments Honduras$/i );   # FB2985
    $serviceID = Client::Service::DSP_ADA       if ( !$serviceID && $serviceName =~ /^Digital Breakage Adjustments Nicaragua$/i );  # FB2985
    $serviceID = Client::Service::DSP_ADA       if ( !$serviceID && $serviceName =~ /^Audit Recovery$/i );                          # FB573
    $serviceID = Client::Service::DSP_AMAZON    if ( !$serviceID && $serviceName =~ /^Amazon Digital Services/i );                  # FB6386
    $serviceID = Client::Service::DSP_NOKIA     if ( !$serviceID && $serviceName =~ /^9999996 Nokia Music Australia od2$/i );       # FB2885
    $serviceID = Client::Service::DSP_SPOTIFY   if ( !$serviceID && $serviceName =~ /^9999822 Spotify$/i );                         # FB2885
    $serviceID = Client::Service::DSP_OVI_MUSIC if ( !$serviceID && $serviceName =~ /^9999996 OVI Music Australia$/i );             # FB2885
    $serviceID = Client::Service::DSP_ORANGE    if ( !$serviceID && $serviceName =~ m/^Orange Mobile UK/i );                        #FB2956
    $serviceID = Client::Service::DSP_UNKNOWN   if ( !$serviceID && $serviceName =~ m/^\xE0\xB8\x{0161}\xE0/i );                    #FB2958

    # ADA has multiple variants of 'Digital Breakage Adjustments'.
    if (
        !$serviceID
        && (   $serviceName =~ /^9999231 DIGITAL BREAKAGE ADJ 4-YT TERM 1$/i
            || $serviceName =~ /^Digital Breakage Adjustments.*$/i )
      ) {
        $serviceID = Client::Service::DSP_ADA;
    }

    if ( !$serviceID && ( $serviceName =~ /^Spotify Digital Breakage Adjustments.*$/i ) ) {
        $serviceID = Client::Service::DSP_SPOTIFY;
    }

    if ( !$serviceID && ( $serviceName =~ /^Netease Information Technology.*$/i ) ) {
        $serviceID = Client::Service::DSP_NETEASE;
    }

    return $serviceID;
}

sub rPrice { shift->SUPER::price }
sub rUnits { shift->SUPER::units }

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