From 7c01b3bb6460bced36b23ab53f6ccc9672d6617d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Wed, 10 Mar 2021 16:55:49 +0100 Subject: [PATCH] Support for custom fields in company details section --- app/Services/PdfMaker/Design.php | 4 +++ .../Designs/Utilities/DesignHelpers.php | 33 +++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/app/Services/PdfMaker/Design.php b/app/Services/PdfMaker/Design.php index 476440a9d7ea..1107f2003f9f 100644 --- a/app/Services/PdfMaker/Design.php +++ b/app/Services/PdfMaker/Design.php @@ -137,6 +137,10 @@ class Design extends BaseDesign $elements[] = ['element' => 'p', 'content' => $variable, 'show_empty' => false, 'properties' => ['data-ref' => 'company_details-' . substr($variable, 1)]]; } + foreach (['company1', 'company2', 'company3', 'company4'] as $field) { + $elements[] = ['element' => 'p', 'content' => $this->getCustomFieldValue($field), 'show_empty' => false, 'properties' => ['data-ref' => 'company_details-' . $field]]; + } + return $elements; } diff --git a/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php b/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php index 5877f3804c1a..c27e68fc3130 100644 --- a/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php +++ b/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php @@ -12,9 +12,7 @@ namespace App\Services\PdfMaker\Designs\Utilities; -use App\Models\Task; use App\Utils\Traits\MakesHash; -use Carbon\Carbon; use DOMDocument; use DOMXPath; use Exception; @@ -273,4 +271,35 @@ trait DesignHelpers array_splice($this->context['pdf_variables']["{$type}_columns"], $key + 1, 0, $custom_columns); } } + + public function getCustomFieldValue(string $field): string + { + // In custom_fields column we store fields like: company1-4, + // while in settings, they're stored in custom_value1-4 format. + // That's why we need this mapping. + + $fields = [ + 'company1' => 'custom_value1', + 'company2' => 'custom_value2', + 'company3' => 'custom_value3', + 'company4' => 'custom_value4', + ]; + + if (!array_key_exists($field, $fields)) { + return ''; + } + + if (!property_exists($this->client->company->custom_fields, $field)) { + return ''; + } + + $value = $this->client->company->getSetting($fields[$field]); + + return (new \App\Utils\Helpers)->formatCustomFieldValue( + $this->client->company->custom_fields, + $field, + $value, + $this->client + ); + } }