. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Tools\Pdf; use Espo\Core\InjectableFactory; use RuntimeException; class Builder { private ?Template $template = null; private ?string $engine = null; public function __construct(private InjectableFactory $injectableFactory) {} public function setTemplate(Template $template): self { $this->template = $template; return $this; } public function setEngine(string $engine): self { $this->engine = $engine; return $this; } public function build(): PrinterController { if (!$this->engine) { throw new RuntimeException('Engine is not set.'); } if (!$this->template) { throw new RuntimeException('Template is not set.'); } return $this->injectableFactory->createWith( PrinterController::class, [ 'template' => $this->template, 'engine' => $this->engine, ] ); } }