Skip to content
Snippets Groups Projects
Verified Commit 505e59e5 authored by Florian Azizian's avatar Florian Azizian
Browse files

FEAT #15049 TIME 2:30 getAcknowledgement from webservice

parent ff39be34
No related branches found
No related tags found
No related merge requests found
...@@ -158,11 +158,11 @@ foreach ($pendingResources as $resId) { ...@@ -158,11 +158,11 @@ foreach ($pendingResources as $resId) {
// TODO GET XML // TODO GET XML
$pathToDocument = 'xmlFile'; $pathToDocument = 'xmlFile';
foreach ($resIds as $resId) { foreach ($resIds as $res) {
$id = Resource\controllers\StoreController::storeAttachment([ $id = Resource\controllers\StoreController::storeAttachment([
'encodedFile' => base64_encode(file_get_contents($pathToDocument)), 'encodedFile' => base64_encode(file_get_contents($pathToDocument)),
'type' => 'reply_record_management', 'type' => 'reply_record_management',
'resIdMaster' => $resId, 'resIdMaster' => $res,
'title' => 'Réponse au transfert', 'title' => 'Réponse au transfert',
'format' => 'xml', 'format' => 'xml',
'status' => 'TRA' 'status' => 'TRA'
...@@ -173,7 +173,7 @@ foreach ($pendingResources as $resId) { ...@@ -173,7 +173,7 @@ foreach ($pendingResources as $resId) {
\Resource\models\ResModel::update([ \Resource\models\ResModel::update([
'set' => ['status' => $GLOBALS['statusReplyReceived']], 'set' => ['status' => $GLOBALS['statusReplyReceived']],
'where' => ['res_id = ?'], 'where' => ['res_id = ?'],
'data' => [$resId] 'data' => [$res]
]); ]);
$nbMailsRetrieved++; $nbMailsRetrieved++;
} }
......
...@@ -175,7 +175,8 @@ trait ExportSEDATrait ...@@ -175,7 +175,8 @@ trait ExportSEDATrait
'config' => $config, 'config' => $config,
'encodedFilePath' => $sedaPackage['encodedFilePath'], 'encodedFilePath' => $sedaPackage['encodedFilePath'],
'messageFilename' => $sedaPackage['messageFilename'], 'messageFilename' => $sedaPackage['messageFilename'],
'resId' => $resource['res_id'] 'resId' => $resource['res_id'],
'reference' => $data['messageObject']['messageIdentifier']
]); ]);
if (!empty($elementSend['errors'])) { if (!empty($elementSend['errors'])) {
return ['errors' => [$elementSend['errors']]]; return ['errors' => [$elementSend['errors']]];
...@@ -210,11 +211,16 @@ trait ExportSEDATrait ...@@ -210,11 +211,16 @@ trait ExportSEDATrait
return ['errors' => 'Error returned by the route /medona/create : ' . $curlResponse['response']['message']]; return ['errors' => 'Error returned by the route /medona/create : ' . $curlResponse['response']['message']];
} }
// TODO GET XML $acknowledgement = ExportSEDATrait::getAcknowledgement([
$pathToDocument = 'xmlFile'; 'config' => $args['config'],
'reference' => $args['reference']
]);
if (!empty($acknowledgement['errors'])) {
return ['errors' => 'Error returned in getAcknowledgement process : ' . $acknowledgement['errors']];
}
$id = StoreController::storeAttachment([ $id = StoreController::storeAttachment([
'encodedFile' => base64_encode(file_get_contents($pathToDocument)), 'encodedFile' => $acknowledgement['encodedAcknowledgement'],
'type' => 'acknowledgement_record_management', 'type' => 'acknowledgement_record_management',
'resIdMaster' => $args['resId'], 'resIdMaster' => $args['resId'],
'title' => 'Accusé de réception', 'title' => 'Accusé de réception',
...@@ -460,6 +466,85 @@ trait ExportSEDATrait ...@@ -460,6 +466,85 @@ trait ExportSEDATrait
return $informationsToSend; return $informationsToSend;
} }
public static function getAcknowledgement($args = [])
{
$curlResponse = CurlModel::execSimple([
'url' => rtrim($args['config']['exportSeda']['urlSAEService'], '/') . '/medona/message/reference?reference='.urlencode($args['reference']."_Ack"),
'method' => 'GET',
'cookie' => 'LAABS-AUTH=' . urlencode($args['config']['exportSeda']['token']),
'headers' => [
'Accept: application/json',
'Content-Type: application/json',
'User-Agent: ' . $args['config']['exportSeda']['userAgent']
]
]);
if (!empty($curlResponse['errors'])) {
return ['errors' => 'Error returned by the route /medona/message/reference : ' . $curlResponse['errors']];
} elseif ($curlResponse['code'] != 200) {
return ['errors' => 'Error returned by the route /medona/message/reference : ' . $curlResponse['response']['message']];
}
$messageId = $curlResponse['response']['messageId'];
$curlResponse = CurlModel::execSimple([
'url' => rtrim($args['config']['exportSeda']['urlSAEService'], '/') . '/medona/message/'.urlencode($curlResponse['response']['messageId']).'/Export',
'method' => 'GET',
'cookie' => 'LAABS-AUTH=' . urlencode($args['config']['exportSeda']['token']),
'headers' => [
'Accept: application/zip',
'Content-Type: application/json',
'User-Agent: ' . $args['config']['exportSeda']['userAgent']
]
]);
if (!empty($curlResponse['errors'])) {
return ['errors' => 'Error returned by the route /medona/message/{messageId}/Export : ' . $curlResponse['errors']];
} elseif ($curlResponse['code'] != 200) {
return ['errors' => 'Error returned by the route /medona/message/{messageId}/Export : ' . $curlResponse['response']['message']];
}
$encodedAcknowledgement = ExportSEDATrait::getEncodedDocumentFromEncodedZip([
'encodedZipDocument' => base64_encode($curlResponse['response']),
'messageId' => $messageId
]);
if (!empty($encodedAcknowledgement['errors'])) {
return ['errors' => 'Error during getEncodedDocumentFromEncodedZip process : ' . $encodedAcknowledgement['errors']];
}
return ['encodedAcknowledgement' => $encodedAcknowledgement['encodedDocument']];
}
public static function getEncodedDocumentFromEncodedZip(array $args)
{
$tmpPath = CoreConfigModel::getTmpPath();
$zipDocumentOnTmp = $tmpPath . mt_rand() .'_' . $GLOBALS['id'] . '_acknowledgement.zip';
file_put_contents($zipDocumentOnTmp, base64_decode($args['encodedZipDocument']));
$zipArchive = new \ZipArchive();
$open = $zipArchive->open($zipDocumentOnTmp);
if ($open != true) {
return ['errors' => "getDocumentFromEncodedZip : $open"];
}
$dirOnTmp = $tmpPath . mt_rand() . '_acknowledgement';
if (!@$zipArchive->extractTo($dirOnTmp)) {
return ['errors' => "getDocumentFromEncodedZip : Extract failed"];
}
$filesOnTmp = scandir($dirOnTmp);
foreach ($filesOnTmp as $fileOnTmp) {
if ($fileOnTmp == $args['messageId']) {
$base64Content = base64_encode(file_get_contents("{$dirOnTmp}/{$fileOnTmp}"));
unlink($zipDocumentOnTmp);
return ['encodedDocument' => $base64Content];
}
}
return ['errors' => "getDocumentFromEncodedZip : No document was found in Zip"];
}
public static function checkAcknowledgmentRecordManagement(array $args) public static function checkAcknowledgmentRecordManagement(array $args)
{ {
ValidatorModel::notEmpty($args, ['resId']); ValidatorModel::notEmpty($args, ['resId']);
......
...@@ -256,16 +256,21 @@ class CurlModel ...@@ -256,16 +256,21 @@ class CurlModel
$curl = curl_init(); $curl = curl_init();
curl_setopt_array($curl, $opts); curl_setopt_array($curl, $opts);
$rawResponse = curl_exec($curl); $rawResponse = curl_exec($curl);
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE); $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE); $headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$errors = curl_error($curl); $errors = curl_error($curl);
curl_close($curl); curl_close($curl);
$headers = substr($rawResponse, 0, $headerSize); $headers = substr($rawResponse, 0, $headerSize);
$headers = explode("\r\n", $headers); $headers = explode("\r\n", $headers);
$response = substr($rawResponse, $headerSize); $response = substr($rawResponse, $headerSize);
if (empty($args['noLogs'])) { if (empty($args['noLogs'])) {
if (in_array('Accept: application/zip', $args['headers'])) {
$logResponse = 'Zip file content';
} else {
$logResponse = $response;
}
LogsController::add([ LogsController::add([
'isTech' => true, 'isTech' => true,
'moduleId' => 'curl', 'moduleId' => 'curl',
...@@ -273,12 +278,14 @@ class CurlModel ...@@ -273,12 +278,14 @@ class CurlModel
'tableName' => 'curl', 'tableName' => 'curl',
'recordId' => 'execSimple', 'recordId' => 'execSimple',
'eventType' => "Url : {$args['url']} HttpCode : {$code} Errors : {$errors}", 'eventType' => "Url : {$args['url']} HttpCode : {$code} Errors : {$errors}",
'eventId' => "Response : {$response}" 'eventId' => "Response : {$logResponse}"
]); ]);
} }
if ($args['isXml']) { if ($args['isXml']) {
$response = simplexml_load_string($response); $response = simplexml_load_string($response);
} elseif (in_array('Accept: application/zip', $args['headers'])) {
$response = trim($response);
} else { } else {
$response = json_decode($response, true); $response = json_decode($response, true);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment