#!/usr/bin/perl

# $ENV{DBIC_TRACE}=1;
use JSON;
use strict;
use Data::Show;
# use DBIx::ResultSet;
use lib '/home/sites/clm.dmadelivers.com/clmapp/lib';
# use CLMApp::Schema;
#my $dbix = CLMApp::Schema->connect("dbi:mysql:host=rds1.dmadelivers.com;db=dmaclm", 'dmaclm', '3lUz1OV2!',{unsafe=>1,RaiseError=>0,PrintError=>1});

use lib '/home/sites/clm.dmadelivers.com/DMASQL';
use DMASQL::Schema;
my $dbix = DMASQL::Schema->connect("dbi:mysql:host=rds1.dmadelivers.com;db=DMA", 'dmaclm', '3lUz1OV2!',{unsafe=>1,RaiseError=>0,PrintError=>1});

$dbix->storage->dbh_do(sub{ my ($s, $d, @a) = @_; $d->do("DELETE FROM CustomerNew");});
$dbix->storage->dbh_do(sub{ my ($s, $d, @a) = @_; $d->do("ALTER TABLE CustomerNew AUTO_INCREMENT = 1");});

&default;

sub clean{
	my $r = shift;
	if(ref($r) eq 'HASH'){
		foreach my $k (keys %$r){
			$r->{$k} = &clean($r->{$k});
		}		
	}else{
		$r =~ s/^(\s|\t|\r)+//g;
		$r =~ s/(\s|\t|\r)+$//g;
	}
	return $r;
}

sub default{
	my @rows;

# id => $dbix->resultset('Component')->auto_pk()
	my @p = $dbix->resultset('Customer')->search({},{
		prefetch => ['distributor','chaingrp','concept','user','warehouse','orderflag','country'], 
		# length => 10, 
		# page => 1,
		result_class=>'DBIx::Class::ResultClass::HashRefInflator',
	});
	# show @p;
#clean whitespace
	foreach my $r (@p){
		$r = &clean($r);
	}

	my @new;
	foreach my $r (@p){

# show $r;
			my %new = (
				customerid => $r->{customerid},
				customernumber => $r->{customernumber},
				amphireid => $r->{amphireid},
				distributorcompanyid => $r->{distributor}->{distributorcompanyid},
				distributorwarehouseid => $r->{warehouse}->{distributorwarehouseid},
				chaingroupid => $r->{chaingrp}->{chaingroupid},
				chainconceptid => $r->{concept}->{chainconceptid},
				ownership => $r->{ownership},
				customerunitnumber => $r->{customerunitnumber},
				unitname => $r->{unitname},
				address => $r->{address},
				city => $r->{city},
				state => $r->{state},
				zip => $r->{zip},
				orderguideflagid => $r->{orderflag}->{id} || 3,
				comments => $r->{comments},
				setupdate => $r->{setupdate},
				lastchangeddate => $r->{lastchangeddate},
				lastupdatedbyid => $r->{lastupdatedbyid},
				statusid => $r->{statusid},
				ownership2 => $r->{ownership2},
				groupname => $r->{groupname},
				longitude => $r->{longitude} || 0,
				latitude => $r->{latitude} || 0,
				distancetodistcenter => $r->{distancetodistcenter} && $r->{distancetodistcenter} !~ /\s|[A-Za-z]/ ? $r->{distancetodistcenter} : 0,
				countrycode => $r->{countrycode},
				brandedprocurement => $r->{brandedprocurement},
				active => $r->{statusid} == 1 ? 1 : 0,
				chainunitid => 0
			);
# show %new;
		if($new{chainconceptid} && $new{chaingroupid} && $new{distributorcompanyid} && $new{distributorwarehouseid} && $new{orderguideflagid} && $new{countrycode}){
			my $s = $dbix->resultset('CustomerNew')->create(\%new);
		}else{
			print join("\t", ($new{customernumber},$new{unitname})) . "\n";
		}
	}

}