|
- <?php
-
- namespace Lc\SovBundle\Builder\User;
-
- use Doctrine\ORM\EntityManagerInterface;
- use Lc\CaracoleBundle\Model\Address\AddressInterface;
- use Lc\SovBundle\Doctrine\EntityInterface;
- use Lc\SovBundle\Doctrine\Extension\BlameableInterface;
- use Lc\SovBundle\Factory\User\UserFactory;
- use Lc\SovBundle\Model\Newsletter\NewsletterInterface;
- use Lc\SovBundle\Model\Ticket\TicketInterface;
- use Lc\SovBundle\Model\User\UserInterface;
- use Lc\SovBundle\Repository\RepositoryQueryInterface;
- use Lc\SovBundle\Repository\User\UserStore;
- use Lc\SovBundle\Solver\User\UserSolver;
-
- class UserBuilder
- {
- protected EntityManagerInterface $entityManager;
- protected UserStore $userStore;
- protected UserSolver $userSolver;
- protected UserFactory $userFactory;
-
- public function __construct(EntityManagerInterface $entityManager, UserStore $userStore, UserSolver $userSolver, UserFactory $userFactory)
- {
- $this->entityManager = $entityManager;
- $this->userStore = $userStore;
- $this->userSolver = $userSolver;
- $this->userFactory = $userFactory;
- }
-
-
- public function create(string $email, string $password, array $roles = [])
- {
- $user = $this->userFactory->create();
- $user->setEmail($email);
- $user->setPassword($password);
-
- $user->setRoles($roles);
- $this->entityManager->create($user);
- $this->entityManager->flush();
-
- return $user;
-
- }
-
- 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);
- }
- }
-
- public function setLastLogin(?UserInterface $user)
- {
- if ($user instanceof UserInterface) {
- $user->setLastLogin(new \DateTime());
- $this->entityManager->update($user);
- $this->entityManager->flush();
- }
- }
- }
|