|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- <?php
-
- namespace Lc\SovBundle\Builder\User;
-
- use Doctrine\ORM\EntityManagerInterface;
- use Lc\SovBundle\Doctrine\EntityInterface;
- use Lc\SovBundle\Doctrine\Extension\BlameableInterface;
- use Lc\SovBundle\Model\Newsletter\NewsletterInterface;
- use Lc\SovBundle\Model\User\UserInterface;
- use Lc\SovBundle\Repository\User\UserStore;
- use Lc\SovBundle\Solver\User\UserSolver;
-
- class UserBuilder
- {
- protected EntityManagerInterface $entityManager;
- protected UserStore $userStore;
- protected UserSolver $userSolver;
- public function __construct(EntityManagerInterface $entityManager, UserStore $userStore, UserSolver $userSolver)
- {
- $this->entityManager = $entityManager;
- $this->userStore = $userStore;
- $this->userSolver = $userSolver;
- }
-
- public function setNewsletter(UserInterface $user, NewsletterInterface $newsletter, bool $subscribeNewsletter): void
- {
- if ($subscribeNewsletter) {
- $user->addNewsletter($newsletter);
- } else {
- $user->removeNewsletter($newsletter);
- }
-
- $this->entityManager->persist($user);
- $this->entityManager->flush();
- }
-
- public function initBlameableSystem(EntityInterface $entity)
- {
- $userSystem = $this->userStore->getOneByDevAlias('system');
- $this->initBlameable($entity, $userSystem);
-
- return $entity;
- }
- public function initBlameableUpdatedSystem(EntityInterface $entity)
- {
- $userSystem = $this->userStore->getOneByDevAlias('system');
- $this->initBlameableUpdated($entity, $userSystem);
-
- return $entity;
- }
-
- public function initBlameable(EntityInterface $entity, UserInterface $user)
- {
- if ($entity instanceof BlameableInterface) {
- $entity->setCreatedBy($user);
- }
- $this->initBlameableUpdated($entity, $user);
- }
-
- public function initBlameableUpdated(EntityInterface $entity, UserInterface $user)
- {
- if ($entity instanceof BlameableInterface) {
- $entity->setUpdatedBy($user);
- }
- }
- }
|