#!/usr/bin/perl 
#

# We're going from one address field to three, so we need to split up the
# existing address by the line breaks.
#

use strict;

SplitAddresses->start();

package SplitAddresses;

use lib '/app/tools/common/lib';
use lib '/app/tools/rps/lib';
use RPS::DB::Item::Publisher;
use RPS::DB::Item::CAPublisher;
use RPS::DB::Item::Payor;
use RPS::DB::Item::ArtistPayee;
use RPS::DB::Item::LabelPayee;

use base 'RPS::CronScript';

sub _process {
    my $self = shift;

    # US Publishers
    my $publishers = RPS::DB::Item::Publisher->GetAll();
    while ( my $publisher = $publishers->next ) {
        my $streetAddress = $publisher->street_address;
        if ( $streetAddress =~ /\n/ ) {
            $self->_updateSQL( 'publisher', $streetAddress, $publisher->publisher_id );
        }
    }

    # CA Publishers
    my $caPublishers = RPS::DB::Item::CAPublisher->GetAll();
    while ( my $caPublisher = $caPublishers->next ) {
        my $streetAddress = $caPublisher->street_address;
        if ( $streetAddress =~ /\n/ ) {
            $self->_updateSQL( 'ca_publisher', $streetAddress, $caPublisher->ca_publisher_id );
        }
    }

    # Payors
    my $payors = RPS::DB::Item::Payor->GetAll();
    while ( my $payor = $payors->next ) {
        my $streetAddress = $payor->street_address;
        if ( $streetAddress =~ /\n/ ) {
            $self->_updateSQL( 'payor', $streetAddress, $payor->payor_id );
        }
    }

    # Artist Payees
    my $artistPayees = RPS::DB::Item::ArtistPayee->GetAll();
    while ( my $artistPayee = $artistPayees->next ) {
        my $streetAddress = $artistPayee->street_address;
        if ( $streetAddress =~ /\n/ ) {
            $self->_updateSQL( 'artist_payee', $streetAddress, $artistPayee->artist_payee_id );
        }
    }

    # Label Payees
    my $labelPayees = RPS::DB::Item::LabelPayee->GetAll();
    while ( my $labelPayee = $labelPayees->next ) {
        my $streetAddress = $labelPayee->street_address;
        if ( $streetAddress =~ /\n/ ) {
            $self->_updateSQL( 'label_payee', $streetAddress, $labelPayee->label_payee_id );
        }
    }

}

sub _updateSQL {
    my $self    = shift;
    my $table   = shift;
    my $address = shift;
    my $id      = shift;

    my @addressLines = split( '\n', $address );

    my $streetAddress1 = $addressLines[0];
    shift(@addressLines);
    my $streetAddress2 = $addressLines[0];
    shift(@addressLines);
    my $streetAddress3 = join( ' ', @addressLines );

    my $dbo = Common::RSApp::GetClientDB();
    my $sql =
        "UPDATE $table SET"
      . " street_address = "
      . $dbo->DBQuote($streetAddress1) . ","
      . " street_address_2 = "
      . $dbo->DBQuote($streetAddress2) . ","
      . " street_address_3 = "
      . $dbo->DBQuote($streetAddress3)
      . " WHERE "
      . $table
      . "_id = $id";

    #print STDERR "$sql\n";
    $dbo->DoCmd($sql);
}

1;
