#!/usr/bin/perl

use strict;
use warnings;
use open ':std', ':encoding(UTF-8)';

use JSON::XS;
use FileHandle;
use Text::CSV::Easy(qw/csv_build csv_parse/);

use lib '/var/app/orchard/collab/jgetter/perllib';
use Orchard::Session;

my $dbh       = Orchard::Session::getdbh('abacusqa');
my $contracts = $dbh->selectall_hashref(
    qq{
SELECT
	c.contract_id,
	c.contract_name,
	c.contract_type,
	c.term_start valid_from_date,
	c.term_end valid_to_date,
	acc.account_id,
	acc.account_name
FROM
	contract c
	JOIN account_contract_distribution cd USING (contract_id)
	JOIN account acc USING (account_id)
WHERE
	c.contract_id < 205000
	AND c.contract_id > 100
}, "contract_id"
);

my $profitCenters  = {
	'USO980' => '2963',
	'USO978' => '2963',
	'USO980' => '2968',
	'UK4912' => '4912',
};

my @pfkeys = keys %{$profitCenters};

my $contractData = { 'BusGroup' => 'ORC', 'To_Response_Message' => [] };
my $accountData  = { 'BusGroup' => 'ORC', 'To_Response_Message' => [] };

foreach my $id ( sort { $a <=> $b } %{$contracts} ) {
    my $href = $contracts->{$id};
    next unless defined $href->{'contract_id'} and defined $href->{'account_id'};
    my $datefrm = defined $href->{'valid_from_date'} ? $href->{'valid_from_date'} . 'T00:00:00' : '1970-01-01T00:00:00';
    my $dateto  = defined $href->{'valid_to_date'}   ? $href->{'valid_to_date'} . 'T00:00:00'   : '9999-12-31T00:00:00';
	my $pfkey   = $pfkeys[ rand @pfkeys ];
    if ( defined $href ) {
        push @{ $contractData->{'To_Contract'} },
          {
            'ContractId'   => $href->{'contract_id'},
            'ContractName' => $href->{'contract_name'},
            'AccountId'    => $href->{'account_id'},
            'ContractType' => $href->{'contract_type'},
            'Prctr'        => $pfkey,
            'Bukrs'        => $profitCenters->{$pfkey},
            'BusUnit'      => undef,
            'DateFrm'      => $datefrm,
            'DateTo'       => $dateto,
            'Zzfield1'     => undef,
            'Zzfield2'     => undef,
            'Zzfield3'     => undef
          };
        push @{ $accountData->{'To_Clnt_Acct'} },
          {
            'AccountId' => $href->{'account_id'},
            'AcctName'  => $href->{'account_name'},
            'Kunnr'     => undef,
            'Lifnr'     => undef,
            'Zzfield1'  => undef,
            'Zzfield2'  => undef
          };
    } else {
        my $e;
    }

}
my $contractJson = JSON::XS::encode_json($contractData);
my $accountJson  = JSON::XS::encode_json($accountData);

my $cfh = FileHandle->new( '/Users/jgetter/Desktop/contracts.json', 'w' );
$cfh->print($contractJson);
$cfh->close;

my $afh = FileHandle->new( '/Users/jgetter/Desktop/accounts.json', 'w' );
$afh->print($accountJson);
$afh->close
