Feature: [docgen][stored object] handler for request generator and required fixes

This commit is contained in:
2023-02-14 23:26:00 +01:00
parent 55918bcafb
commit 91d21ba939
18 changed files with 307 additions and 110 deletions

View File

@@ -0,0 +1,50 @@
<?php
namespace Chill\DocGeneratorBundle\Service\Messenger;
use Chill\DocGeneratorBundle\Repository\DocGeneratorTemplateRepository;
use Chill\DocGeneratorBundle\Service\Generator\Generator;
use Chill\DocStoreBundle\Repository\StoredObjectRepository;
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
/**
* Handle the request of document generation
*/
class RequestGenerationHandler implements MessageHandlerInterface
{
private StoredObjectRepository $storedObjectRepository;
private DocGeneratorTemplateRepository $docGeneratorTemplateRepository;
private Generator $generator;
public function __construct(
StoredObjectRepository $storedObjectRepository,
DocGeneratorTemplateRepository $docGeneratorTemplateRepository,
Generator $generator
) {
$this->storedObjectRepository = $storedObjectRepository;
$this->docGeneratorTemplateRepository = $docGeneratorTemplateRepository;
$this->generator = $generator;
}
public function __invoke(RequestGenerationMessage $message)
{
if (null === $template = $this->docGeneratorTemplateRepository->find($message->getTemplateId())) {
throw new \RuntimeException('template not found: ' . $message->getTemplateId());
}
if (null === $destinationStoredObject = $this->storedObjectRepository->find($message->getDestinationStoredObjectId())) {
throw new \RuntimeException('destination stored object not found : ' . $message->getDestinationStoredObjectId());
}
$this->generator->generateDocFromTemplate(
$template,
$message->getEntityClassName(),
$message->getEntityId(),
$message->getContextGenerationData(),
$destinationStoredObject
);
}
}