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

FEAT #12072 TIME 0:35 Get signed attachments or resource when sending an email

parent 865c9e30
No related branches found
No related tags found
No related merge requests found
......@@ -809,6 +809,7 @@ DO $$ BEGIN
ALTER TABLE shippings ALTER COLUMN document_type SET NOT NULL;
END IF;
END$$;
ALTER TABLE shippings DROP COLUMN IF EXISTS recipients;
ALTER TABLE shippings ADD COLUMN recipients jsonb DEFAULT '[]';
TRUNCATE TABLE indexing_models;
......
......@@ -566,16 +566,26 @@ class AttachmentController
return $response->withJson(['attachmentsTypes' => $attachmentsTypes]);
}
public static function getEncodedDocument(array $aArgs)
public static function getEncodedDocument(array $args)
{
ValidatorModel::notEmpty($aArgs, ['id']);
ValidatorModel::intVal($aArgs, ['id']);
ValidatorModel::boolType($aArgs, ['original']);
$document = AttachmentModel::getById(['select' => ['docserver_id', 'path', 'filename', 'title'], 'id' => $aArgs['id']]);
if (empty($aArgs['original'])) {
$convertedDocument = ConvertPdfController::getConvertedPdfById(['resId' => $aArgs['id'], 'collId' => 'attachments_coll']);
ValidatorModel::notEmpty($args, ['id']);
ValidatorModel::intVal($args, ['id']);
ValidatorModel::boolType($args, ['original']);
$document = AttachmentModel::getById(['select' => ['docserver_id', 'path', 'filename', 'title', 'status'], 'id' => $args['id']]);
if (empty($args['original'])) {
if ($document['status'] == 'SIGN') {
$signedAttachment = AttachmentModel::get([
'select' => ['res_id'],
'where' => ['origin = ?', 'status not in (?)', 'attachment_type = ?'],
'data' => ["{$args['id']},res_attachments", ['OBS', 'DEL', 'TMP', 'FRZ'], 'signed_response']
]);
if (!empty($signedAttachment[0])) {
$args['id'] = $signedAttachment[0]['res_id'];
}
}
$convertedDocument = ConvertPdfController::getConvertedPdfById(['resId' => $args['id'], 'collId' => 'attachments_coll']);
if (empty($convertedDocument['errors'])) {
$document['docserver_id'] = $convertedDocument['docserver_id'];
......@@ -606,7 +616,6 @@ class AttachmentController
return ['errors' => 'Document not found on docserver'];
}
$encodedDocument = base64_encode($fileContent);
if (!empty($document['title'])) {
......
......@@ -644,7 +644,7 @@ class EmailController
]);
if ($fingerprint != $messageExchange['fingerprint']) {
$email['document'] = (array)json_decode($email['document']);
$email['document'] = json_decode($email['document'], true);
return ['errors' => 'Pb with fingerprint of document. ResId master : ' . $email['document']['id']];
}
......@@ -660,7 +660,7 @@ class EmailController
}
} else {
if (!empty($email['document'])) {
$email['document'] = (array)json_decode($email['document']);
$email['document'] = json_decode($email['document'], true);
if ($email['document']['isLinked']) {
$encodedDocument = ResController::getEncodedDocument(['resId' => $email['document']['id'], 'original' => $email['document']['original']]);
if (empty($encodedDocument['errors'])) {
......@@ -668,9 +668,7 @@ class EmailController
}
}
if (!empty($email['document']['attachments'])) {
$email['document']['attachments'] = (array)$email['document']['attachments'];
foreach ($email['document']['attachments'] as $attachment) {
$attachment = (array)$attachment;
$encodedDocument = AttachmentController::getEncodedDocument(['id' => $attachment['id'], 'original' => $attachment['original']]);
if (empty($encodedDocument['errors'])) {
$phpmailer->addStringAttachment(base64_decode($encodedDocument['encodedDocument']), $encodedDocument['fileName']);
......@@ -678,7 +676,6 @@ class EmailController
}
}
if (!empty($email['document']['notes'])) {
$email['document']['notes'] = (array)$email['document']['notes'];
$encodedDocument = NoteController::getEncodedPdfByIds(['ids' => $email['document']['notes']]);
if (empty($encodedDocument['errors'])) {
$phpmailer->addStringAttachment(base64_decode($encodedDocument['encodedDocument']), 'notes.pdf');
......
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