Files
InvoiceShelf/app/Platform/Pdf/Rules/PdfTemplateExists.php
T
Darko Gjorgjijoski 5ef7804e60 refactor: adopt modular domain architecture (#747)
* refactor: stabilize model identities for domain migration

* refactor: extract module platform context

* refactor: assign models to domain contexts

* refactor: extract ai platform context

* refactor: extract storage platform context

* refactor: extract mail platform context

* refactor: extract pdf platform context

* refactor: extract operations platform context

* refactor: move installation into operations platform

* refactor: extract money domain context

* refactor: extract taxation domain context

* refactor: extract catalog domain context

* refactor: extract metadata domain context

* refactor: extract reporting domain context

* refactor: extract purchases domain context

* refactor: extract receivables domain context

* refactor: extract accounts domain context

* refactor: complete reporting statement boundary

* refactor: extract contacts domain context

* refactor: extract sales domain context

* refactor: remove legacy application layers

* fix: migrate legacy bouncer role identities
2026-08-05 17:40:03 +02:00

36 lines
1.2 KiB
PHP

<?php
namespace App\Platform\Pdf\Rules;
use App\Platform\Pdf\Rendering\PdfTemplateUtils;
use Closure;
use Illuminate\Contracts\Validation\ValidationRule;
/**
* The template must be one the picker actually offers.
*
* template_name was validated only as `required`, so any string was accepted and
* stored. findFormattedTemplate() returns null for an unknown name, the null is
* read as "not custom", and rendering falls through to `app.pdf.{type}.{name}` —
* a raw "view not found" 500 at PDF time, long after the save that caused it.
*/
class PdfTemplateExists implements ValidationRule
{
public function __construct(private readonly string $templateType) {}
public function validate(string $attribute, mixed $value, Closure $fail): void
{
if (! is_string($value) || $value === '') {
return;
}
// The image is not needed to answer this, and building base64 previews
// for every template just to validate a name would be wasteful.
$names = array_column(PdfTemplateUtils::getFormattedTemplates($this->templateType, ''), 'name');
if (! in_array($value, $names, true)) {
$fail("The selected :attribute is not an available {$this->templateType} template.");
}
}
}