From 0b5d7c2416db88eb0a6e9ae16474241d31c44069 Mon Sep 17 00:00:00 2001 From: "florian.azizian" <florian.azizian@maarch.org> Date: Mon, 23 Nov 2020 16:52:05 +0100 Subject: [PATCH] FEAT #11310 TIME 1:50 retrieve multiple notes from maarchParapheur --- bin/signatureBook/batch_tools.php | 35 +++++++++------- .../process_mailsFromSignatoryBook.php | 4 +- .../controllers/FastParapheurController.php | 2 +- .../controllers/IParapheurController.php | 4 +- .../controllers/IxbusController.php | 4 +- .../controllers/MaarchParapheurController.php | 42 ++++++++++++------- .../controllers/XParaphController.php | 4 +- 7 files changed, 56 insertions(+), 39 deletions(-) diff --git a/bin/signatureBook/batch_tools.php b/bin/signatureBook/batch_tools.php index 2e841daae39..e298a0dae45 100644 --- a/bin/signatureBook/batch_tools.php +++ b/bin/signatureBook/batch_tools.php @@ -140,25 +140,28 @@ function Bt_writeLog($args = []) ]); } - function Bt_createNote($aArgs = []) { - if (!empty($aArgs['content'])) { - $creatorName = ''; - if (!empty($aArgs['creatorId'])) { - $creatorId = $aArgs['creatorId']; - } else { - $users = \User\models\UserModel::get(['select' => ['id'], 'orderBy' => ["user_id='superadmin' desc"], 'limit' => 1]); - $creatorId = $users[0]['id']; - } - if (!empty($aArgs['creatorName'])) { - $creatorName = $aArgs['creatorName'] . ' (Maarch Parapheur) : '; + if (!empty($aArgs['notes'])) { + foreach ($aArgs['notes'] as $note) { + if (!empty(trim($note['content']))) { + $creatorName = ''; + if (!empty($note['creatorId'])) { + $creatorId = $note['creatorId']; + } else { + $users = \User\models\UserModel::get(['select' => ['id'], 'orderBy' => ["user_id='superadmin' desc"], 'limit' => 1]); + $creatorId = $users[0]['id']; + } + if (!empty($note['creatorName'])) { + $creatorName = $note['creatorName'] . ' (Maarch Parapheur) : '; + } + \Note\models\NoteModel::create([ + 'resId' => $aArgs['resId'], + 'user_id' => $creatorId, + 'note_text' => $creatorName . $note['content'], + ]); + } } - \Note\models\NoteModel::create([ - 'resId' => $aArgs['resId'], - 'user_id' => $creatorId, - 'note_text' => $creatorName . $aArgs['content'], - ]); } } diff --git a/bin/signatureBook/process_mailsFromSignatoryBook.php b/bin/signatureBook/process_mailsFromSignatoryBook.php index af4a8e7c054..b127b643f69 100755 --- a/bin/signatureBook/process_mailsFromSignatoryBook.php +++ b/bin/signatureBook/process_mailsFromSignatoryBook.php @@ -313,7 +313,7 @@ foreach ($retrievedMails['noVersion'] as $resId => $value) { $historyInfo = 'La signature de la pièce jointe '.$resId.' (res_attachments) a été refusée dans le parapheur externe' . $additionalHistoryInfo; } if (in_array($value['status'], ['validated', 'refused'])) { - Bt_createNote(['creatorId' => $value['noteCreatorId'], 'creatorName' => $value['noteCreatorName'], 'content' => $value['noteContent'], 'resId' => $value['res_id_master']]); + Bt_createNote(['notes' => $value['notes'], 'resId' => $value['res_id_master']]); Bt_history([ 'table_name' => 'res_attachments', 'record_id' => $resId, @@ -395,7 +395,7 @@ foreach ($retrievedMails['resLetterbox'] as $resId => $value) { 'event_type' => 'ACTION#1', 'event_id' => '1' ]); - Bt_createNote(['creatorId' => $value['noteCreatorId'], 'creatorName' => $value['noteCreatorName'], 'content' => $value['noteContent'], 'resId' => $resId]); + Bt_createNote(['notes' => $value['notes'], 'resId' => $resId]); \Resource\models\ResModel::update([ 'set' => ['status' => $status], 'postSet' => ['external_id' => "external_id - 'signatureBookId'"], diff --git a/src/app/external/externalSignatoryBook/controllers/FastParapheurController.php b/src/app/external/externalSignatoryBook/controllers/FastParapheurController.php index a40a6d450fb..5d3b611a6d8 100755 --- a/src/app/external/externalSignatoryBook/controllers/FastParapheurController.php +++ b/src/app/external/externalSignatoryBook/controllers/FastParapheurController.php @@ -87,7 +87,7 @@ class FastParapheurController $signatoryInfo = FastParapheurController::getSignatoryUserInfo(['resId' => $aArgs['idsToRetrieve'][$version][$resId]['res_id_master']]); $response = FastParapheurController::getRefusalMessage(['config' => $aArgs['config'], 'documentId' => $value['external_id']]); $aArgs['idsToRetrieve'][$version][$resId]['status'] = 'refused'; - $aArgs['idsToRetrieve'][$version][$resId]['noteContent'] = $signatoryInfo['lastname'] . ' ' . $signatoryInfo['firstname'] . ' : ' . $response; + $aArgs['idsToRetrieve'][$version][$resId]['notes'][] = ['content' => $signatoryInfo['lastname'] . ' ' . $signatoryInfo['firstname'] . ' : ' . $response]; break; } else { $aArgs['idsToRetrieve'][$version][$resId]['status'] = 'waiting'; diff --git a/src/app/external/externalSignatoryBook/controllers/IParapheurController.php b/src/app/external/externalSignatoryBook/controllers/IParapheurController.php index a372ba103f7..4fc6ffaa95d 100755 --- a/src/app/external/externalSignatoryBook/controllers/IParapheurController.php +++ b/src/app/external/externalSignatoryBook/controllers/IParapheurController.php @@ -332,7 +332,7 @@ class IParapheurController $aArgs['idsToRetrieve'][$version][$resId]['status'] = 'validated'; $aArgs['idsToRetrieve'][$version][$resId]['format'] = 'pdf'; $aArgs['idsToRetrieve'][$version][$resId]['encodedFile'] = $response['b64FileContent']; - $aArgs['idsToRetrieve'][$version][$resId]['noteContent'] = $noteContent; + $aArgs['idsToRetrieve'][$version][$resId]['notes'][] = ['content' => $noteContent]; if ($status == $aArgs['config']['data']['signState']) { IParapheurController::processVisaWorkflow(['res_id_master' => $value['res_id_master'], 'res_id' => $value['res_id'], 'processSignatory' => true]); break; @@ -340,7 +340,7 @@ class IParapheurController } elseif ($status == $aArgs['config']['data']['refusedVisa'] || $status == $aArgs['config']['data']['refusedSign']) { $noteContent .= $res->nom . ' : ' . $res->annotation . PHP_EOL; $aArgs['idsToRetrieve'][$version][$resId]['status'] = 'refused'; - $aArgs['idsToRetrieve'][$version][$resId]['noteContent'] = $noteContent; + $aArgs['idsToRetrieve'][$version][$resId]['notes'][] = ['content' => $noteContent]; break; } else { $aArgs['idsToRetrieve'][$version][$resId]['status'] = 'waiting'; diff --git a/src/app/external/externalSignatoryBook/controllers/IxbusController.php b/src/app/external/externalSignatoryBook/controllers/IxbusController.php index d168d8520d5..d6f56e168d0 100755 --- a/src/app/external/externalSignatoryBook/controllers/IxbusController.php +++ b/src/app/external/externalSignatoryBook/controllers/IxbusController.php @@ -359,7 +359,7 @@ class IxbusController if ((string)$etatDossier == $aArgs['config']['data']['ixbusIdEtatRefused']) { $aArgs['idsToRetrieve'][$version][$resId]['status'] = 'refused'; $notes = IxbusController::getDossier(['config' => $aArgs['config'], 'sessionId' => $sessionId['cookie'], 'dossier_id' => $value['external_id']]); - $aArgs['idsToRetrieve'][$version][$resId]['noteContent'] = (string)$notes->MotifRefus; + $aArgs['idsToRetrieve'][$version][$resId]['notes'][] = ['content' => (string)$notes->MotifRefus]; // Validated } elseif ((string)$etatDossier == $aArgs['config']['data']['ixbusIdEtatValidated']) { $aArgs['idsToRetrieve'][$version][$resId]['status'] = 'validated'; @@ -368,7 +368,7 @@ class IxbusController $aArgs['idsToRetrieve'][$version][$resId]['encodedFile'] = (string)$signedDocument->Fichier; $notes = IxbusController::getAnnotations(['config' => $aArgs['config'], 'sessionId' => $sessionId['cookie'], 'dossier_id' => $value['external_id']]); - $aArgs['idsToRetrieve'][$version][$resId]['noteContent'] = (string)$notes->Annotation->Texte; + $aArgs['idsToRetrieve'][$version][$resId]['notes'][] = ['content' => (string)$notes->Annotation->Texte]; } else { unset($aArgs['idsToRetrieve'][$version][$resId]); } diff --git a/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php b/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php index 11f7ca36aa6..5c07346b648 100755 --- a/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php +++ b/src/app/external/externalSignatoryBook/controllers/MaarchParapheurController.php @@ -513,6 +513,9 @@ class MaarchParapheurController { $version = $aArgs['version']; foreach ($aArgs['idsToRetrieve'][$version] as $resId => $value) { + if (!is_numeric($value['external_id'])) { + continue; + } $documentWorkflow = MaarchParapheurController::getDocumentWorkflow(['config' => $aArgs['config'], 'documentId' => $value['external_id']]); if (!is_array($documentWorkflow)) { unset($aArgs['idsToRetrieve'][$version][$resId]); @@ -533,23 +536,25 @@ class MaarchParapheurController } elseif ($state['status'] == 'refused' && $state['mode'] == 'note') { $aArgs['idsToRetrieve'][$version][$resId]['status'] = 'refusedNote'; } - if (!empty($state['note'])) { - $aArgs['idsToRetrieve'][$version][$resId]['noteContent'] = $state['note']; + foreach ($state['notes'] as $note) { + $tmpNote = []; + $tmpNote['content'] = $note['content']; $userInfos = UserModel::getByExternalId([ - 'select' => ['id', 'firstname', 'lastname'], - 'externalId' => $state['noteCreatorId'], - 'externalName' => 'maarchParapheur' + 'select' => ['id', 'firstname', 'lastname'], + 'externalId' => $note['creatorId'], + 'externalName' => 'maarchParapheur' ]); if (!empty($userInfos)) { - $aArgs['idsToRetrieve'][$version][$resId]['noteCreatorId'] = $userInfos['id']; + $tmpNote['creatorId'] = $userInfos['id']; } - $aArgs['idsToRetrieve'][$version][$resId]['noteCreatorName'] = $state['noteCreatorName']; + $tmpNote['creatorName'] = $note['creatorName']; + $aArgs['idsToRetrieve'][$version][$resId]['notes'][] = $tmpNote; } if (!empty($state['signatoryUserId'])) { $signatoryUser = UserModel::getByExternalId([ - 'select' => ['user_id', 'id'], - 'externalId' => $state['signatoryUserId'], - 'externalName' => 'maarchParapheur' + 'select' => ['user_id', 'id'], + 'externalId' => $state['signatoryUserId'], + 'externalName' => 'maarchParapheur' ]); if (!empty($signatoryUser['user_id'])) { $aArgs['idsToRetrieve'][$version][$resId]['typist'] = $signatoryUser['user_id']; @@ -592,9 +597,17 @@ class MaarchParapheurController public static function getState($aArgs) { - $state['status'] = 'validated'; + $state['status'] = 'validated'; $state['workflowInfo'] = []; + $state['notes'] = []; foreach ($aArgs['workflow'] as $step) { + if (!empty($step['note'])) { + $state['notes'][] = [ + 'content' => $step['note'], + 'creatorId' => $step['userId'], + 'creatorName' => $step['userDisplay'] + ]; + } if ($step['status'] == 'VAL' && $step['mode'] == 'sign') { $state['workflowInfo'][] = $step['userDisplay'] . ' (Signé le ' . $step['processDate'] . ')'; $state['signatoryUserId'] = $step['userId']; @@ -603,11 +616,12 @@ class MaarchParapheurController } if ($step['status'] == 'REF') { $state['status'] = 'refused'; - $state['note'] = $step['note']; - $state['noteCreatorId'] = $step['userId']; - $state['noteCreatorName'] = $step['userDisplay']; $state['workflowInfo'][] = $step['userDisplay'] . ' (Refusé le ' . $step['processDate'] . ')'; break; + } elseif ($step['status'] == 'STOP') { + $state['status'] = 'refused'; + $state['workflowInfo'][] = $step['userDisplay'] . ' (Interrompu le ' . $step['processDate'] . ')'; + break; } elseif (empty($step['status'])) { $state['status'] = 'inProgress'; break; diff --git a/src/app/external/externalSignatoryBook/controllers/XParaphController.php b/src/app/external/externalSignatoryBook/controllers/XParaphController.php index 612906b2f58..d4398afab06 100755 --- a/src/app/external/externalSignatoryBook/controllers/XParaphController.php +++ b/src/app/external/externalSignatoryBook/controllers/XParaphController.php @@ -421,7 +421,7 @@ class XParaphController if ($state['id'] == 'refused') { $aArgs['idsToRetrieve'][$version][$resId]['status'] = 'refused'; - $aArgs['idsToRetrieve'][$version][$resId]['noteContent'] = $state['note']; + $aArgs['idsToRetrieve'][$version][$resId]['notes'][] = ['content' => $state['note']]; $processedFile = XParaphController::getFile(['config' => $aArgs['config'], 'depotId' => $value['external_id'], 'userGeneric' => $userGeneric, 'depotLogin' => $xParaphDepot['login']]); if (!empty($processedFile['errors'])) { @@ -472,7 +472,7 @@ class XParaphController unlink($tmpPath . $tmpName); $aArgs['idsToRetrieve'][$version][$resId]['encodedFile'] = $encodedFile; - $aArgs['idsToRetrieve'][$version][$resId]['noteContent'] = $state['note']; + $aArgs['idsToRetrieve'][$version][$resId]['notes'][] = ['content' => $state['note']]; if ($state['id'] == 'validateOnlyVisa') { $aArgs['idsToRetrieve'][$version][$resId]['onlyVisa'] = true; } -- GitLab