mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
Add entity workflow title to notification
Introduced `EntityWorkflowManager` to `NotificationOnTransition` to fetch and include the entity workflow title in notifications. Updated relevant tests to support the new functionality and verify the entity title retrieval process.
This commit is contained in:
parent
9012e68b70
commit
3a1947df9e
@ -16,6 +16,8 @@ use Chill\MainBundle\Entity\User;
|
|||||||
use Chill\MainBundle\Entity\UserGroup;
|
use Chill\MainBundle\Entity\UserGroup;
|
||||||
use Chill\MainBundle\Entity\Workflow\EntityWorkflow;
|
use Chill\MainBundle\Entity\Workflow\EntityWorkflow;
|
||||||
use Chill\MainBundle\Entity\Workflow\EntityWorkflowStep;
|
use Chill\MainBundle\Entity\Workflow\EntityWorkflowStep;
|
||||||
|
use Chill\MainBundle\Workflow\EntityWorkflowHandlerInterface;
|
||||||
|
use Chill\MainBundle\Workflow\EntityWorkflowManager;
|
||||||
use Chill\MainBundle\Workflow\EventSubscriber\NotificationOnTransition;
|
use Chill\MainBundle\Workflow\EventSubscriber\NotificationOnTransition;
|
||||||
use Chill\MainBundle\Workflow\Helper\MetadataExtractor;
|
use Chill\MainBundle\Workflow\Helper\MetadataExtractor;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
@ -91,12 +93,18 @@ final class NotificationOnTransitionTest extends TestCase
|
|||||||
$security = $this->prophesize(Security::class);
|
$security = $this->prophesize(Security::class);
|
||||||
$security->getUser()->willReturn($currentUser);
|
$security->getUser()->willReturn($currentUser);
|
||||||
|
|
||||||
|
$entityWorkflowHandler = $this->prophesize(EntityWorkflowHandlerInterface::class);
|
||||||
|
$entityWorkflowHandler->getEntityTitle($entityWorkflow)->willReturn('workflow title');
|
||||||
|
$entityWorkflowManager = $this->prophesize(EntityWorkflowManager::class);
|
||||||
|
$entityWorkflowManager->getHandler($entityWorkflow)->willReturn($entityWorkflowHandler->reveal());
|
||||||
|
|
||||||
$notificationOnTransition = new NotificationOnTransition(
|
$notificationOnTransition = new NotificationOnTransition(
|
||||||
$em->reveal(),
|
$em->reveal(),
|
||||||
$engine->reveal(),
|
$engine->reveal(),
|
||||||
$extractor->reveal(),
|
$extractor->reveal(),
|
||||||
$security->reveal(),
|
$security->reveal(),
|
||||||
$registry->reveal()
|
$registry->reveal(),
|
||||||
|
$entityWorkflowManager->reveal(),
|
||||||
);
|
);
|
||||||
|
|
||||||
$event = new Event($entityWorkflow, new Marking(), new Transition('dummy_transition', ['from_state'], ['to_state']), $workflow);
|
$event = new Event($entityWorkflow, new Marking(), new Transition('dummy_transition', ['from_state'], ['to_state']), $workflow);
|
||||||
|
@ -15,6 +15,7 @@ use Chill\MainBundle\Entity\Notification;
|
|||||||
use Chill\MainBundle\Entity\User;
|
use Chill\MainBundle\Entity\User;
|
||||||
use Chill\MainBundle\Entity\UserGroup;
|
use Chill\MainBundle\Entity\UserGroup;
|
||||||
use Chill\MainBundle\Entity\Workflow\EntityWorkflow;
|
use Chill\MainBundle\Entity\Workflow\EntityWorkflow;
|
||||||
|
use Chill\MainBundle\Workflow\EntityWorkflowManager;
|
||||||
use Chill\MainBundle\Workflow\Helper\MetadataExtractor;
|
use Chill\MainBundle\Workflow\Helper\MetadataExtractor;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
@ -30,6 +31,7 @@ class NotificationOnTransition implements EventSubscriberInterface
|
|||||||
private readonly MetadataExtractor $metadataExtractor,
|
private readonly MetadataExtractor $metadataExtractor,
|
||||||
private readonly Security $security,
|
private readonly Security $security,
|
||||||
private readonly Registry $registry,
|
private readonly Registry $registry,
|
||||||
|
private EntityWorkflowManager $entityWorkflowManager,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public static function getSubscribedEvents(): array
|
public static function getSubscribedEvents(): array
|
||||||
@ -62,6 +64,8 @@ class NotificationOnTransition implements EventSubscriberInterface
|
|||||||
/** @var array<string, User> $dests array of unique values, where keys is the object's hash */
|
/** @var array<string, User> $dests array of unique values, where keys is the object's hash */
|
||||||
$dests = [];
|
$dests = [];
|
||||||
|
|
||||||
|
$title = $this->entityWorkflowManager->getHandler($entityWorkflow)->getEntityTitle($entityWorkflow);
|
||||||
|
|
||||||
foreach (array_merge(
|
foreach (array_merge(
|
||||||
// the subscriber to each step
|
// the subscriber to each step
|
||||||
$entityWorkflow->getSubscriberToStep()->toArray(),
|
$entityWorkflow->getSubscriberToStep()->toArray(),
|
||||||
@ -112,6 +116,7 @@ class NotificationOnTransition implements EventSubscriberInterface
|
|||||||
static fn (User $u) => $u->getId(),
|
static fn (User $u) => $u->getId(),
|
||||||
$entityWorkflow->getCurrentStep()->getDestUser()->toArray()
|
$entityWorkflow->getCurrentStep()->getDestUser()->toArray()
|
||||||
), true),
|
), true),
|
||||||
|
'title' => $title,
|
||||||
];
|
];
|
||||||
|
|
||||||
$notification = new Notification();
|
$notification = new Notification();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user