Zefix_search/taskExecuter.php

117 lines
3.6 KiB
PHP

<?php
include "zefixAPI.php";
include "emailSender.php";
$maxExecutionTime = 120;
$taskDir = 'tasks';
$downloadDir = 'download';
$minTaskOldness = 10;
$latesEndTime = time() + $maxExecutionTime;
$smtppassword = getenv("smtppassword");
if(!is_dir($downloadDir)){
mkdir($downloadDir, 0755, true);
}
function doRequest($data, $filename, $username, $password)
{
$response = sendAPICompanySearchRequest($username, $password, $data);
$responseObject = json_decode($response, true);
if(array_key_exists("error", $responseObject)) {
return false;
}
$companyArray = $responseObject['list'];
$companyData = array();
foreach ($companyArray as $company) {
$companyFullData = json_decode(sendAPICompanyInfoRequest($username, $password, $company['uid']), true)[0];
$companyData[] = [
$companyFullData['name'],
$companyFullData['address']['careOf'],
$companyFullData['address']['street'],
$companyFullData['address']['houseNumber'],
$companyFullData['address']['swissZipCode'],
$companyFullData['address']['city'],
$companyFullData['uid'],
$companyFullData['legalSeat'],
$companyFullData['legalForm']['name']['de'],
$companyFullData['status'],
$companyFullData['sogcDate'],
$companyFullData['deletionDate']
];
}
if (!file_exists($filename)) {
$file = fopen($filename, 'w');
if($file) {
fputcsv($file, ['name', 'careOf', 'street', 'houseNumber', 'swissZipCode', 'city', 'uid', 'legalSeat', 'legalForm', 'status', 'sogcDate', 'deletionDate'], ',', '"', "\\");
}
} else {
$file = fopen($filename, 'a');
}
if ($file) {
foreach ($companyData as $row){
fputcsv($file, $row, ',', '"', "\\");
}
fclose($file);
}
if($responseObject['hasMoreResults']) {
return $responseObject['maxOffset'];
} else {
return false;
}
}
while($latesEndTime - time() > 30){
if(is_dir($taskDir)) {
$taskfiles = scandir($taskDir);
$taskfiles = array_diff($taskfiles, array('.', '..'));
sort($taskfiles);
if(count($taskfiles) > 0 && intval(explode("-", $taskfiles[0])[0]) + $minTaskOldness < time()) {
$taskString = file_get_contents($taskDir.'/'.$taskfiles[0]);
$task = json_decode($taskString, true);
if(count($task['requests']) > 0) {
$csvFile = str_replace(".json", ".csv", $downloadDir.'/'.$taskfiles[0]);
$nextOffset = doRequest($task['requests'][0], $csvFile, $username, $password);
if($nextOffset){
$task['requests'][0]['offset'] = $nextOffset;
} else {
array_shift($task['requests']);
}
$taskString = json_encode($task);
$taskfile = fopen($taskDir.'/'.$taskfiles[0], 'w');
if($taskfile){
fwrite($taskfile, $taskString);
fclose($taskfile);
}
} else {
$csvFile = str_replace(".json", ".csv", $downloadDir.'/'.$taskfiles[0]);
unlink($taskDir.'/'.$taskfiles[0]);
echo "Task File deleted";
echo "<br>";
sendEmail($task['email'], $csvFile, $smtppassword);
}
} else {
echo "nothing to do after: ".strval(time() - ($latesEndTime - $maxExecutionTime));
echo "sleeping 10 seconds";
echo "<br>";
sleep(10);
}
}
}
?>