#!/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;
