#!/usr/bin/perl

# $ENV{DBIC_TRACE}=1;
use JSON;
use strict;
use Data::Show;
use Algorithm::Diff;
use lib '/home/sites/clm.dmadelivers.com/www/clmapp/lib';
use CLMApp::Schema;

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

&default;



sub default{
	my @rows;

# id => $dbix->resultset('Component')->auto_pk()
	my @p = $dbix->resultset('Customer')->search({'me.active'=>1,'me.chainunitid' => 0},{prefetch => ['status','distributor','chaingrp','concept','user','warehouse','orderflag','country'], 
		# length => 10, 
		# page => 1,
		result_class=>'DBIx::Class::ResultClass::HashRefInflator',
	});
	# show @p;
	my @exist; my @new;
	foreach my $p (@p){
		if($p->{groupname} && $p->{groupname} !~ /^\s+$/){
			push(@exist, $p);
		}else{
			 push(@new, $p);
		}
	}

	my $groups;
	foreach my $e (@exist){
		next if $e->{chainunitid} || $e->{chainunitid} > 0;
		my $chainunitname = $e->{customerunitnumber} ? join(" ", $e->{groupname}, $e->{customerunitnumber}) : $e->{groupname};
		# exists
		if($groups->{ $chainunitname }){
			$dbix->resultset('Customer')->find({customerid=>$e->{customerid}})->update({chainunitid=> $groups->{ $chainunitname } });			
		}else{
			my $new = {
				chainunitname => $chainunitname,
				chaingroupid => $e->{chaingroupid},
				chainconceptid => $e->{chainconceptid},
				active => 1
			};
			my $s = $dbix->resultset('ChainUnit')->create($new);
			$dbix->resultset('Customer')->find({customerid=>$e->{customerid}})->update({chainunitid=>$s->chainunitid});
			$groups->{ $chainunitname } = $s->chainunitid;
		}
	}

	foreach my $e (@new){
		next if $e->{chainunitid} || $e->{chainunitid} > 0;
		my $chainunitname = $e->{customerunitnumber} ? join(" ", $e->{unitname}, $e->{customerunitnumber}) : $e->{unitname};		
		my $new = {
			chainunitname => $chainunitname,
			chaingroupid => $e->{chaingroupid},
			chainconceptid => $e->{chainconceptid},
			active => 1
		};
		my $s = $dbix->resultset('ChainUnit')->create($new);
		$dbix->resultset('Customer')->find({customerid=>$e->{customerid}})->update({chainunitid=>$s->chainunitid});

	}	
		#	my $s = $dbix->resultset('CustomerNew')->create(\%new);


}
