feat(directory) : add CommercialReport entity with dual ownership and author

This commit is contained in:
Matthieu
2026-06-22 11:51:19 +02:00
parent 8d63735bd8
commit 5af529d1b2
5 changed files with 271 additions and 0 deletions
@@ -0,0 +1,26 @@
<?php
declare(strict_types=1);
namespace App\Module\Directory\Infrastructure\Doctrine;
use App\Module\Directory\Domain\Entity\CommercialReport;
use App\Module\Directory\Domain\Repository\CommercialReportRepositoryInterface;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<CommercialReport>
*/
final class DoctrineCommercialReportRepository extends ServiceEntityRepository implements CommercialReportRepositoryInterface
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, CommercialReport::class);
}
public function findById(int $id): ?CommercialReport
{
return $this->find($id);
}
}
@@ -0,0 +1,28 @@
<?php
declare(strict_types=1);
namespace App\Module\Directory\Infrastructure\EventListener;
use App\Module\Directory\Domain\Entity\CommercialReport;
use App\Shared\Domain\Contract\UserInterface;
use Doctrine\ORM\Event\PrePersistEventArgs;
use Symfony\Bundle\SecurityBundle\Security;
final readonly class CommercialReportAuthorListener
{
public function __construct(private Security $security) {}
public function prePersist(CommercialReport $report, PrePersistEventArgs $args): void
{
if (null !== $report->getAuthor()) {
return;
}
$user = $this->security->getUser();
if ($user instanceof UserInterface) {
$report->setAuthor($user);
}
}
}