#!/usr/bin/perl
use strict;

use Unicode::String qw(ucs2 latin1);

use lib '/app/tools/rps/lib';
use RPS::File::Sale;

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

# use Common::RSApp; # not on production yet

fixUnicodeText();

sub fixUnicodeText {
    my $clientID = $ARGV[0] || return usage("missing client id");
    my $fileID   = $ARGV[1] || return usage("missing file id");

    # my $rs = new Common::RSApp(clientID => $clientID);
    # my $dbo = Common::RSApp::GetClientDB();
    my $dbo = Common::RSDB->new( client_id => $clientID );

    # get a collection of sale objects
    my $sales = RPS::File::Sales->new( dbo => $dbo );
    $sales->GetUnmatchedByFile( file_id => $fileID );

    while ( my $salesObj = $sales->GetNext() ) {
        my $dirty = 0;

        if ( $salesObj->ArtistName =~ / / ) {
            my $ucs2Val = ucs2( $salesObj->ArtistName );

            # print $salesObj->ArtistName." ---> ".$ucs2Val->latin1."\n";
            $salesObj->ArtistName( $ucs2Val->latin1 );
            $dirty++;
        }

        if ( $salesObj->TrackName =~ / / ) {
            my $ucs2Val = ucs2( $salesObj->TrackName );

            # print $salesObj->TrackName." ---> ".$ucs2Val->latin1."\n";
            $salesObj->TrackName( $ucs2Val->latin1 );
            $dirty++;
        }

        if ( $salesObj->AlbumName =~ / / ) {
            my $ucs2Val = ucs2( $salesObj->AlbumName );

            # print $salesObj->AlbumName." ---> ".$ucs2Val->latin1."\n";
            $salesObj->AlbumName( $ucs2Val->latin1 );
            $dirty++;
        }

        if ($dirty) {
            $salesObj->Save();
            print "fixed id: " . $salesObj->SaleID . "\n";

            # last;
        }
    }

    # $rs->finalize();
}

sub usage {
    my $err = shift;

    print "ERROR: $err\n";
    print "Usage: fix_unicode.pl CLIENT_ID FILE_ID\n";

    return 1;
}
