Skip to content
Snippets Groups Projects
Verified Commit 510fcd5a authored by Damien's avatar Damien
Browse files

FEAT #16982 TIME 2:30 Get proof for yousign

parent dc0dee69
No related branches found
No related tags found
No related merge requests found
......@@ -38,6 +38,7 @@ use SrcCore\models\PasswordModel;
use SrcCore\models\TextFormatModel;
use SrcCore\models\ValidatorModel;
use User\models\UserModel;
use Workflow\controllers\YousignController;
use Workflow\models\WorkflowExternalInformationModel;
use Workflow\models\WorkflowModel;
use Workflow\models\WorkflowTemplateModel;
......@@ -524,6 +525,25 @@ class HistoryController
'value' => $step['note']
];
}
$workflowExternalInformations = WorkflowExternalInformationModel::getByWorkflowId(['select' => ['informations'], 'workflowId' => $step['id']]);
if (!empty($workflowExternalInformations)) {
$informations = json_decode($workflowExternalInformations['informations'], true);
if ($informations['type'] == 'yousign' && !empty($informations['yousignProcedureId'])) {
$yousignProof = YousignController::getProofByWorkflowId(['workflowId' => $step['id']]);
$archivePath = $tmpPath . 'yousignProof' . $GLOBALS['id'] . "_" . rand() . '.zip';
file_put_contents($archivePath, base64_decode($yousignProof));
$zipArchive = new \ZipArchive();
$zipArchive->open($archivePath);
$nameInArchive = $zipArchive->getNameIndex(0);
$yousignPdfProof = $zipArchive->getFromIndex(0);
$yousignPath = $tmpPath . 'yousignProof' . $GLOBALS['id'] . "_" . rand() . '.pdf';
file_put_contents($yousignPath, $yousignPdfProof);
unlink($archivePath);
$documentPathToZip[] = ['path' => $yousignPath, 'filename' => $nameInArchive];
}
}
}
if (!empty($notes)) {
......
......@@ -281,6 +281,40 @@ class YousignController
return true;
}
public static function getProofByWorkflowId(array $args)
{
$workflowExternalInformations = WorkflowExternalInformationModel::getByWorkflowId(['select' => ['informations', 'external_signatory_book_id'], 'workflowId' => $args['workflowId']]);
if (empty($workflowExternalInformations)) {
return ['errors' => 'Workflow does not exist'];
}
$informations = json_decode($workflowExternalInformations['informations'], true);
$externalSB = ExternalSignatoryBookModel::getById(['select' => ['*'], 'id' => $workflowExternalInformations['external_signatory_book_id']]);
if (empty($externalSB)) {
return ['errors' => 'No external signatory book configuration found'];
} elseif ($externalSB['type'] != 'yousign') {
return ['errors' => 'External signatory book configuration is invalid'];
}
$externalSB['connection_data'] = json_decode($externalSB['connection_data'], true);
$trunkedProcedureId = str_replace('/procedures/', '', $informations['yousignProcedureId']);
if (empty($trunkedProcedureId)) {
return ['errors' => 'No procedure to process'];
}
$procedureResponse = CurlModel::exec([
'url' => "{$externalSB['connection_data']['apiUri']}/procedures/{$trunkedProcedureId}/proof?format=pdf",
'bearerAuth' => ['token' => $externalSB['connection_data']['apiKey']],
'method' => 'GET'
]);
if ($procedureResponse['code'] != 200) {
return ['errors' => json_encode($procedureResponse['response'])];
}
return $procedureResponse['response'];
}
public static function deleteProcedureByWorkflowId(array $args)
{
$workflowExternalInformations = WorkflowExternalInformationModel::getByWorkflowId(['select' => ['informations', 'external_signatory_book_id'], 'workflowId' => $args['workflowId']]);
......
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