<?php



$file='../data/Alle_GM.csv';
$namespace ='Internetgalerie\IgsCrm\Import';

$classname='TVGImport';
$ignoreLinesAtBegining=0; // ohne Überschriften Zeile
//$hasHeaderLine=true; // ist immer true
$mainTable='tx_igscrm_domain_model_contact';
$sep=',';
$enclosure = '"';

if (count($argv)<2 || count($argv)>3) {
    die("php import.php filename configfile\n

config:
php import.php GEOSummit_Adressen_Medien_2018.csv config > config.php

");
}

/*
function utf8_fopen_read($fileName) {
  $fc = iconv('windows-1250', 'utf-8', file_get_contents($fileName));
  $handle=fopen("php://memory", "rw");
  fwrite($handle, $fc);
  fseek($handle, 0);
  return $handle;
}

*/

$file=$argv[1];
if (count($argv)==3) {
    $configfile=$argv[2];
    $mode='import';
    if (!is_file($configfile)) {
        die('config file missing');
    }
    $config=require_once($configfile);
} else {
    $mode = 'config';
    echo('<?php
namespace ' . $namespace . ';

// ');
}
echo('-- '. $mode .' file:'. $file ."\n");
if (($fp = fopen($file, 'r')) === false) {
    die('file not found');
}

echo('class '.$classname.' {
  public $ignoreLinesAtBegining='.$ignoreLinesAtBegining.';
  public $hasHeaderLine=true;
  public $sep="'.addslashes($sep).'";
  public $enclosure="'.addslashes($enclosure).'";
');

$lineNr=0;
while (($data = fgetcsv($fp, 10000, $sep)) !== false) {
    $lineNr++;
    if ($lineNr <=$ignoreLinesAtBegining) {
        continue;
    }
    if ($lineNr == 1+$ignoreLinesAtBegining) {
        if ($mode=='config') {
            echo("
  public function getConfig() 
  {
    return [
           'mainTable' => [
                            'table' => '" . $mainTable . "',
                            'insertDefaultValues' => [
                                                'pid' => 2006,
                                                'me_languageid' => 1,
                                                'me_import_tmp' => '" .strftime('%Y%m%d'). "',
                                                ],
                            'updateDefaultValues' => [
                                                'me_import_tmp' => '" .strftime('%Y%m%d'). "',
                                                ],
                            ],
            'relations' => [
                            [
                             'table' => 'tx_igscrm_domain_model_contactverband',
                             'active' => true,
                             'field' => 'person',
                             'insertDefaultValues' => [
                                                 'pid' => 2006,
                                                 'import_tmp' => '" .strftime('%Y%m%d'). "',
                                                 ],
                            'updateDefaultValues' => [
                                                'import_tmp' => '" .strftime('%Y%m%d'). "',
                                                ],
                             ]
                            ]
    ];
  }
  public function getCols()
  {
    return [
");
            foreach ($data as $nr => $title) {
                echo('  ' .$nr ."=> [
    'title'     => '" . $title ."',
    'table' => '',
    'attribute' => '',
    'filter' => '',
       ],
");
            }
            echo("    ];
  }
  public function getStatic() 
  {
    return [		  
		  'me_remark' => 'IMPORT201903XX',
                  'me_geosummit' => 1,
                  'pid' => 2006,
                  'me_import_id' => time(),
                  'me_languageid' => 1, //Sprache auf Deutsch, falls nichts im Excel vorhanden
    ];
  }
  public function getTriggers()
  {
    return  [
		    'queryAfter' => \"INSERT INTO tx_igscrm_member_tag_mm (uid_local,uid_foreign,sorting_foreign) Select uid,10,1 from tx_igscrm_domain_model_member where me_remark='IMPORT201709XX';\"
    ];
  }
");
            // class
            echo('
}
');
            exit(0);
        }
        continue;
    }
    $vals=[];
    foreach ($config['cols'] as $nr=>$c) {
        if (!$c['attribute']) {
            continue;
        }
        $val=$data[$nr];
        $func=$c['filter'];
        if ($func) {
            $val=$func($val);
        }
        if ($val!='' && $val!==null) {
            if (is_array($c['attribute'])) {
                foreach ($c['attribute'] as $a) {
                    $vals[$a]=$val;
                }
            } else {
                $vals[$c['attribute']]=$val;
            }
        }
    }
    foreach ($config['fix'] as $a=>$v) {
        $vals[$a]=$v;
    }

    $keys=implode(',', array_keys($vals));
    $insertValus=[];
    foreach ($vals as $key=>$v) {
        $insertValus[]= "'".pg_escape_string($v)."'";
    }
    echo("INSERT INTO ".$config['db']['tablename']. " (".$keys.") VALUES (".implode(',', $insertValus).");\n");
}

foreach ($config['triggers'] as $mode=>$query) {
    echo($query);
}

fclose($fp);
