From 1ad4c10538227bbb459ca5428cd506445f17ccbc Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 22 Sep 2023 23:59:03 +1000 Subject: [PATCH] Template Service --- app/Services/Template/TemplateService.php | 28 ++-------- tests/Feature/Template/TemplateTest.php | 65 +++++++++++++++++++++++ 2 files changed, 68 insertions(+), 25 deletions(-) diff --git a/app/Services/Template/TemplateService.php b/app/Services/Template/TemplateService.php index 7640713dde94..d2dbd94e688d 100644 --- a/app/Services/Template/TemplateService.php +++ b/app/Services/Template/TemplateService.php @@ -32,6 +32,7 @@ use App\Transformers\PaymentTransformer; use App\Transformers\ProjectTransformer; use App\Transformers\PurchaseOrderTransformer; use League\Fractal\Serializer\ArraySerializer; +use League\Fractal\Serializer\JsonApiSerializer; class TemplateService { @@ -40,30 +41,6 @@ class TemplateService private string $compiled_html = ''; - private array $standard_excludes = [ - 'id', - 'client_id', - 'assigned_user_id', - 'project_id', - 'vendor_id', - 'design_id', - 'company_id', - 'recurring_id', - 'subscription_id' - ]; - - private array $purchase_excludes = [ - 'id', - 'vendor_id', - 'assigned_user_id', - 'project_id', - 'vendor_id', - 'design_id', - 'company_id', - 'recurring_id', - 'subscription_id' - ]; - public function __construct(public Design $template) { $this->template = $template; @@ -114,7 +91,7 @@ class TemplateService { $data = $this->preProcessDataBlocks($data); $replacements = []; -nlog($data); + $contents = $this->document->getElementsByTagName('ninja'); foreach ($contents as $content) { @@ -253,6 +230,7 @@ nlog($data); $it = new InvoiceTransformer(); $it->setDefaultIncludes(['client']); $manager = new Manager(); + // $manager->setSerializer(new JsonApiSerializer()); $resource = new \League\Fractal\Resource\Collection($invoices, $it, Invoice::class); $i = $manager->createData($resource)->toArray(); return $i['data']; diff --git a/tests/Feature/Template/TemplateTest.php b/tests/Feature/Template/TemplateTest.php index dbd4e6bd02fa..aa391d69d747 100644 --- a/tests/Feature/Template/TemplateTest.php +++ b/tests/Feature/Template/TemplateTest.php @@ -67,6 +67,40 @@ class TemplateTest extends TestCase '; + private string $nested_body = ' + + + $company.name + + + + + + + + + + + + {% for entity in invoices %} + Client Name: {{ entity.client.name }} + Client Name with variables = $client.name + {% for item in entity.line_items|filter(item => item.type_id == "1") %} + + + + + + + + {% endfor %} + {% endfor %} + +
Item #DescriptionOrderedDeliveredOutstanding
{{ item.product_key }}{{ item.notes }}{{ item.quantity }}{{ item.quantity }}0
+
+ + '; + protected function setUp() :void { parent::setUp(); @@ -79,6 +113,37 @@ class TemplateTest extends TestCase } + public function testDoubleEntityNestedDataTemplateServiceBuild() + { + $design_model = Design::find(2); + + $replicated_design = $design_model->replicate(); + $design = $replicated_design->design; + $design->body .= $this->nested_body; + $replicated_design->design = $design; + $replicated_design->is_custom = true; + $replicated_design->save(); + + $i2 = Invoice::factory() + ->for($this->client) + ->create([ + 'company_id' => $this->company->id, + 'user_id' => $this->user->id, + 'status_id' => Invoice::STATUS_SENT, + 'design_id' => $replicated_design->id, + 'balance' => 100, + ]); + + $data = []; + $data['invoices'] = collect([$this->invoice, $i2]); + + $ts = $replicated_design->service()->build($data); + + nlog("results = "); + nlog($ts->getHtml()); + $this->assertNotNull($ts->getHtml()); + } + public function testDoubleEntityTemplateServiceBuild() { $design_model = Design::find(2);