#!/usr/bin/perl

$ENV{DBIC_TRACE}=1;
use JSON;
use strict;
use Data::Show;
use lib '/home/sites/clm.dmadelivers.com/www/clmapp/lib';
use CLMApp::Schema;
use DateTime;
use Text::CSV;
use POSIX;
use MIME::Lite;
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
my $dbix = CLMApp::Schema->connect("dbi:mysql:host=rds1.dmadelivers.com;db=dmaclm", 'dmaclm', '3lUz1OV2!',{unsafe=>1,RaiseError=>0,PrintError=>1});

&default;

sub default{

	my $file = '/tmp/clm.csv';
	my $csv = Text::CSV->new ( { binary => 1 } ) or die "Cannot use CSV: ".Text::CSV->error_diag ();
	$csv->column_names(("Store","Customer","AmphireID","PartnerNumber","DistCoID","PartnerAbbrev","WarehouseID","Brand","BrandID","Concept","ConceptID","OperatorType","Operator","SubOperator","Site","StoreName","AddressLine1","City","State","Zip","StoreStatus","Latitude","Longitude","DistancetoDC","OperatingStatus","StoreStatusDate","InvoiceSystem","OrderSystem","CustomWarehouseName","CustomWarehouseNumber"));
	open my $fh, "<:encoding(utf8)", $file or die "test.csv: $!";
	my @rows;
	while ( my $r = $csv->getline_hr( $fh ) ){
		push(@rows,$r);
	}
	shift(@rows);
	show $rows[0];

	my $map = {
		Store => 'customerid',
		OperatorType => 'ownershiptype',
		Operator => 'ownership',
		InvoiceSystem => 'invoicesystem',
		OrderSystem => 'ordersystem',
		CustomWarehouseName => 'customwarehousename',
		CustomWarehouseNumber => 'customwarehousenumber'
	};

	my @markets = $dbix->resultset('Market')->search({active => 1},{
		result_class => 'DBIx::Class::ResultClass::HashRefInflator'
	});
	my %markets;
	foreach my $m (@markets){
		$m->{customwarehousenumber} =~ s/\s+$//g;
		$m->{customwarehousenumber} =~ s/^'//;
		$m->{customwarehousename} =~ s/\s+$//g;
		$markets{ uc($m->{customwarehousename} . '' . $m->{customwarehousenumber}) } = $m->{marketid};
		$markets{ uc($m->{customwarehousenumber}) } = $m->{marketid};

	}

	my @mapk = keys %$map;
	my %oisystem;
	my @oisystem = $dbix->resultset('OrderInvoiceSystem')->search({deleted => 0},{
		result_class => 'DBIx::Class::ResultClass::HashRefInflator'
	});
	foreach my $oi (@oisystem){
		$oisystem{ $oi->{systemname} } = $oi->{id};
	}
	

	foreach my $r (@rows){
		my $obj = {};
		# next unless $r->{Store} == 3900;
		$r->{CustomWarehouseNumber} =~ s/^'//;
		$r->{customwarehousenumber} =~ s/^'//;
		foreach my $k (@mapk){
			$obj->{ $map->{$k}  } = $r->{$k};
		}
		$obj->{marketid} = $markets{ uc($obj->{customwarehousename} . '' . $obj->{customwarehousenumber}) } || $markets{ uc($obj->{customwarehousenumber}) };
		$obj->{invoicesystem} = $oisystem{ $obj->{invoicesystem} };
		$obj->{ordersystem} = $oisystem{ $obj->{ordersystem} };
		
		# show $obj if ($obj->{customwarehousename} || $obj->{customwarehousenumber}) && !$obj->{marketid};

		# show $obj if ($r->{invoicesystem} || $r->{ordersystem}) && (!$oisystem{ $r->{invoicesystem} } || !$oisystem{ $r->{ordersystem} });

		delete($obj->{customwarehousename}); delete($obj->{customwarehousenumber}); delete($obj->{customerid});



		show $obj;

		$dbix->resultset('Customer')->search({customerid => $r->{Store} })->update($obj);

	}


# Operator Type
# Operator
# Invoice System
# Order System
# Custom Warehouse Name
# Custom Warehouse Number	

	close($fh);
}

1;
