From b152aa4575d994d79fe70e6991b09d10e5b805ec Mon Sep 17 00:00:00 2001
From: Guillaume Heurtier <guillaume.heurtier@maarch.org>
Date: Thu, 20 Feb 2020 15:52:11 +0100
Subject: [PATCH] FEAT #12981 TIME 1:30 send custom subject + body in ar

---
 .../AcknowledgementReceiptTrait.php           | 41 ++++++++++++-------
 1 file changed, 27 insertions(+), 14 deletions(-)

diff --git a/src/app/action/controllers/AcknowledgementReceiptTrait.php b/src/app/action/controllers/AcknowledgementReceiptTrait.php
index 981b7e05a6e..807b1e94add 100644
--- a/src/app/action/controllers/AcknowledgementReceiptTrait.php
+++ b/src/app/action/controllers/AcknowledgementReceiptTrait.php
@@ -41,6 +41,10 @@ trait AcknowledgementReceiptTrait
             return [];
         }
 
+        $contentToSend = $args['data']['content'] ?? null;
+        $subjectResource = $resource['subject'] ?? '';
+        $subjectToSend = !empty($args['data']['subject']) ? $args['data']['subject'] : $subjectResource;
+
         $contactsToProcess = ResourceContactModel::get([
             'select' => ['item_id'],
             'where' => ['res_id = ?', 'type = ?', 'mode = ?'],
@@ -89,25 +93,34 @@ trait AcknowledgementReceiptTrait
             }
 
             if (!empty($contact['email'])) {
-                if (empty($template[0]['template_content'])) {
+                if (empty($template[0]['template_content']) && empty($contentToSend)) {
                     DatabaseModel::rollbackTransaction();
                     return [];
                 }
-                $mergedDocument = MergeController::mergeDocument([
-                    'content'   => $template[0]['template_content'],
-                    'data'      => ['resId' => $args['resId'], 'senderId' => $contactToProcess, 'senderType' => 'contact', 'userId' => $currentUser['id']]
-                ]);
+                if (empty($contentToSend)) {
+                    $mergedDocument = MergeController::mergeDocument([
+                        'content' => $template[0]['template_content'],
+                        'data'    => ['resId' => $args['resId'], 'senderId' => $contactToProcess, 'senderType' => 'contact', 'userId' => $currentUser['id']]
+                    ]);
+                } else {
+                    $mergedDocument['encodedDocument'] = base64_encode($contentToSend);
+                }
                 $format = 'html';
             } else {
-                if (!file_exists($pathToDocument) || !is_file($pathToDocument)) {
-                    DatabaseModel::rollbackTransaction();
-                    return [];
+                if (empty($contentToSend)) {
+                    if (!file_exists($pathToDocument) || !is_file($pathToDocument)) {
+                        DatabaseModel::rollbackTransaction();
+                        return [];
+                    }
+
+                    $mergedDocument = MergeController::mergeDocument([
+                        'path' => $pathToDocument,
+                        'data' => ['resId' => $args['resId'], 'senderId' => $contactToProcess, 'senderType' => 'contact', 'userId' => $currentUser['id']]
+                    ]);
+                    $encodedDocument = ConvertPdfController::convertFromEncodedResource(['encodedResource' => $mergedDocument['encodedDocument']]);
+                } else {
+                    $encodedDocument = ConvertPdfController::convertFromEncodedResource(['encodedResource' => base64_encode($contentToSend)]);
                 }
-                $mergedDocument = MergeController::mergeDocument([
-                    'path'  => $pathToDocument,
-                    'data'  => ['resId' => $args['resId'], 'senderId' => $contactToProcess, 'senderType' => 'contact', 'userId' => $currentUser['id']]
-                ]);
-                $encodedDocument = ConvertPdfController::convertFromEncodedResource(['encodedResource' => $mergedDocument['encodedDocument']]);
                 $mergedDocument['encodedDocument'] = $encodedDocument["encodedResource"];
                 $format = 'pdf';
 
@@ -159,7 +172,7 @@ trait AcknowledgementReceiptTrait
                 'data'      => [
                     'sender'        => empty($entity['email']) ? ['email' => $currentUser['mail']] : ['email' => $entity['email'], 'entityId' => $entity['id']],
                     'recipients'    => [$email['email']],
-                    'object'        => '[AR] ' . (empty($resource['subject']) ? '' : substr($resource['subject'], 0, 100)),
+                    'object'        => '[AR] ' . substr($subjectToSend, 0, 100),
                     'body'          => base64_decode($email['encodedHtml']),
                     'document'      => ['id' => $args['resId'], 'isLinked' => false, 'original' => true],
                     'isHtml'        => true,
-- 
GitLab