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

FEAT #15052 TIME 1 action check reply and check acknowledgement (Record management)

parent 7f54f6ce
No related branches found
No related tags found
No related merge requests found
...@@ -12,6 +12,11 @@ ...@@ -12,6 +12,11 @@
namespace ExportSeda\controllers; namespace ExportSeda\controllers;
use Attachment\models\AttachmentModel;
use Docserver\models\DocserverModel;
use Docserver\models\DocserverTypeModel;
use MessageExchange\models\MessageExchangeModel;
use Resource\controllers\StoreController;
use SrcCore\models\ValidatorModel; use SrcCore\models\ValidatorModel;
trait ExportSEDATrait trait ExportSEDATrait
...@@ -40,4 +45,100 @@ trait ExportSEDATrait ...@@ -40,4 +45,100 @@ trait ExportSEDATrait
return ['encodedFile' => $encodedFile]; return ['encodedFile' => $encodedFile];
} }
public static function checkAcknowledgmentRecordManagement(array $args)
{
ValidatorModel::notEmpty($args, ['resId']);
ValidatorModel::intVal($args, ['resId']);
$acknowledgement = AttachmentModel::get([
'select' => ['res_id_master', 'path', 'filename', 'docserver_id', 'fingerprint'],
'where' => ['res_id_master = ?', 'attachment_type = ?', 'status = ?'],
'data' => [$args['resId'], 'acknowledgement_record_management', 'TRA']
])[0];
if (empty($acknowledgement)) {
return ['errors' => ['No acknowledgement found']];
}
$docserver = DocserverModel::getByDocserverId(['docserverId' => $acknowledgement['docserver_id'], 'select' => ['path_template', 'docserver_type_id']]);
if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) {
return ['errors' => ['Docserver does not exists']];
}
$pathToDocument = $docserver['path_template'] . str_replace('#', DIRECTORY_SEPARATOR, $acknowledgement['path']) . $acknowledgement['filename'];
if (!file_exists($pathToDocument)) {
return ['errors' => ['File does not exists']];
}
$docserverType = DocserverTypeModel::getById(['id' => $docserver['docserver_type_id'], 'select' => ['fingerprint_mode']]);
$fingerprint = StoreController::getFingerPrint(['filePath' => $pathToDocument, 'mode' => $docserverType['fingerprint_mode']]);
if (!empty($acknowledgement['fingerprint']) && $acknowledgement['fingerprint'] != $fingerprint) {
return ['errors' => ['Fingerprint does not match']];
}
$acknowledgementXml = @simplexml_load_file($pathToDocument);
if (empty($acknowledgementXml)) {
return ['errors' => ['Acknowledgement is not readable']];
}
$messageExchange = MessageExchangeModel::getMessageByReference(['select' => ['message_id'], 'reference' => (string)$acknowledgementXml->MessageReceivedIdentifier]);
if (empty($messageExchange)) {
return ['errors' => ['No acknowledgement found with this reference']];
}
$unitIdentifier = MessageExchangeModel::getUnitIdentifierByResId(['select' => ['message_id'], 'resId' => $args['resId']]);
if ($unitIdentifier['message_id'] != $messageExchange['message_id']) {
return ['errors' => ['Wrong acknowledgement']];
}
return true;
}
public static function checkReplyRecordManagement(array $args)
{
ValidatorModel::notEmpty($args, ['resId']);
ValidatorModel::intVal($args, ['resId']);
$reply = AttachmentModel::get([
'select' => ['res_id_master', 'path', 'filename', 'docserver_id', 'fingerprint'],
'where' => ['res_id_master = ?', 'attachment_type = ?', 'status = ?'],
'data' => [$args['resId'], 'reply_record_management', 'TRA']
])[0];
if (empty($reply)) {
return ['errors' => ['No reply found']];
}
$docserver = DocserverModel::getByDocserverId(['docserverId' => $reply['docserver_id'], 'select' => ['path_template', 'docserver_type_id']]);
if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) {
return ['errors' => ['Docserver does not exists']];
}
$pathToDocument = $docserver['path_template'] . str_replace('#', DIRECTORY_SEPARATOR, $reply['path']) . $reply['filename'];
if (!file_exists($pathToDocument)) {
return ['errors' => ['File does not exists']];
}
$docserverType = DocserverTypeModel::getById(['id' => $docserver['docserver_type_id'], 'select' => ['fingerprint_mode']]);
$fingerprint = StoreController::getFingerPrint(['filePath' => $pathToDocument, 'mode' => $docserverType['fingerprint_mode']]);
if (!empty($reply['fingerprint']) && $reply['fingerprint'] != $fingerprint) {
return ['errors' => ['Fingerprint does not match']];
}
$replyXml = @simplexml_load_file($pathToDocument);
if (empty($replyXml)) {
return ['errors' => ['Reply is not readable']];
}
$messageExchange = MessageExchangeModel::getMessageByReference(['select' => ['message_id'], 'reference' => (string)$replyXml->MessageReceivedIdentifier]);
if (empty($messageExchange)) {
return ['errors' => ['No reply found with this reference']];
}
$unitIdentifier = MessageExchangeModel::getUnitIdentifierByResId(['select' => ['message_id'], 'resId' => $args['resId']]);
if ($unitIdentifier['message_id'] != $messageExchange['message_id']) {
return ['errors' => ['Wrong reply']];
}
return true;
}
} }
...@@ -89,7 +89,7 @@ trait PreProcessActionSEDATrait ...@@ -89,7 +89,7 @@ trait PreProcessActionSEDATrait
continue; continue;
} }
$acknowledgementXml = simplexml_load_file($pathToDocument); $acknowledgementXml = @simplexml_load_file($pathToDocument);
if (empty($acknowledgementXml)) { if (empty($acknowledgementXml)) {
$resourcesInformations['errors'][] = ['alt_identifier' => $altIdentifiers[$resId], 'res_id' => $resId, 'reason' => 'recordManagement_acknowledgementNotReadable']; $resourcesInformations['errors'][] = ['alt_identifier' => $altIdentifiers[$resId], 'res_id' => $resId, 'reason' => 'recordManagement_acknowledgementNotReadable'];
continue; continue;
...@@ -107,7 +107,7 @@ trait PreProcessActionSEDATrait ...@@ -107,7 +107,7 @@ trait PreProcessActionSEDATrait
continue; continue;
} }
$resourcesInformation['success'][] = ['alt_identifier' => $altIdentifiers[$resId], 'res_id' => $resId]; $resourcesInformations['success'][] = $resId;
} }
return $response->withJson(['resourcesInformations' => $resourcesInformations]); return $response->withJson(['resourcesInformations' => $resourcesInformations]);
...@@ -175,7 +175,7 @@ trait PreProcessActionSEDATrait ...@@ -175,7 +175,7 @@ trait PreProcessActionSEDATrait
continue; continue;
} }
$replyXml = simplexml_load_file($pathToDocument); $replyXml = @simplexml_load_file($pathToDocument);
if (empty($replyXml)) { if (empty($replyXml)) {
$resourcesInformations['errors'][] = ['alt_identifier' => $altIdentifiers[$resId], 'res_id' => $resId, 'reason' => 'recordManagement_replyNotReadable']; $resourcesInformations['errors'][] = ['alt_identifier' => $altIdentifiers[$resId], 'res_id' => $resId, 'reason' => 'recordManagement_replyNotReadable'];
continue; continue;
...@@ -193,7 +193,7 @@ trait PreProcessActionSEDATrait ...@@ -193,7 +193,7 @@ trait PreProcessActionSEDATrait
continue; continue;
} }
$resourcesInformation['success'][] = ['alt_identifier' => $altIdentifiers[$resId]['alt_identifier'], 'res_id' => $resId]; $resourcesInformations['success'][] = $resId;
} }
return $response->withJson(['resourcesInformations' => $resourcesInformations]); return $response->withJson(['resourcesInformations' => $resourcesInformations]);
......
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