Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

65 lines
1.9KB

  1. <?php
  2. namespace Lc\SovBundle\Builder\User;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Lc\SovBundle\Doctrine\EntityInterface;
  5. use Lc\SovBundle\Doctrine\Extension\BlameableInterface;
  6. use Lc\SovBundle\Model\Newsletter\NewsletterInterface;
  7. use Lc\SovBundle\Model\User\UserInterface;
  8. use Lc\SovBundle\Repository\User\UserStore;
  9. class UserBuilder
  10. {
  11. protected EntityManagerInterface $entityManager;
  12. protected UserStore $userStore;
  13. public function __construct(EntityManagerInterface $entityManager, UserStore $userStore)
  14. {
  15. $this->entityManager = $entityManager;
  16. $this->userStore = $userStore;
  17. }
  18. public function setNewsletter(UserInterface $user, NewsletterInterface $newsletter, bool $subscribeNewsletter): void
  19. {
  20. if ($subscribeNewsletter) {
  21. $user->addNewsletter($newsletter);
  22. } else {
  23. $user->removeNewsletter($newsletter);
  24. }
  25. $this->entityManager->persist($user);
  26. $this->entityManager->flush();
  27. }
  28. public function initBlameableSystem(EntityInterface $entity)
  29. {
  30. $userSystem = $this->userStore->getOneByDevAlias('system');
  31. $this->initBlameable($entity, $userSystem);
  32. return $entity;
  33. }
  34. public function initBlameableUpdatedSystem(EntityInterface $entity)
  35. {
  36. $userSystem = $this->userStore->getOneByDevAlias('system');
  37. $this->initBlameableUpdated($entity, $userSystem);
  38. return $entity;
  39. }
  40. public function initBlameable(EntityInterface $entity, UserInterface $user)
  41. {
  42. if ($entity instanceof BlameableInterface) {
  43. $entity->setCreatedBy($user);
  44. }
  45. $this->initBlameableUpdated($entity, $user);
  46. }
  47. public function initBlameableUpdated(EntityInterface $entity, UserInterface $user)
  48. {
  49. if ($entity instanceof BlameableInterface) {
  50. $entity->setUpdatedBy($user);
  51. }
  52. }
  53. }