/** * {@inheritdoc} */ public function load(ObjectManager $manager) { /** @var UserManager $userManager */ $userManager = $this->container->get('oro_user.manager'); $admin = $userManager->findUserByEmail(LoadAdminUserData::DEFAULT_ADMIN_EMAIL); $organization = $manager->getRepository('OroOrganizationBundle:Organization')->getFirst(); /** @var Store $store */ $store = $this->getReference('store'); /** @var Channel $channel */ $channel = $this->getReference('default_channel'); /** @var Integration $integration */ $integration = $this->getReference('integration'); $className = ExtendHelper::buildEnumValueClassName('mage_subscr_status'); $enumRepo = $manager->getRepository($className); foreach ($this->subscriberData as $data) { $subscriber = new NewsletterSubscriber(); $date = new \DateTime(); $date->modify('-1 day'); /** @var AbstractEnumValue $status */ $status = $enumRepo->find($data['status']); $subscriber->setEmail($data['email'])->setStatus($status)->setConfirmCode(uniqid())->setStore($store)->setOwner($admin)->setOrganization($organization)->setOriginId($data['originId'])->setChangeStatusAt($date)->setCreatedAt($date)->setUpdatedAt($date)->setChannel($integration)->setDataChannel($channel); if (!empty($data['customer'])) { /** @var Customer $customer */ $customer = $this->getReference($data['customer']); $subscriber->setCustomer($customer); } $this->setReference($data['reference'], $subscriber); $manager->persist($subscriber); } $manager->flush(); }
/** * @param Customer $customer * * @return NewsletterSubscriber */ public function getOrCreateFromCustomer(Customer $customer) { $newsletterSubscriber = $customer->getNewsletterSubscriber(); if (null === $newsletterSubscriber) { $newsletterSubscriber = new NewsletterSubscriber(); $newsletterSubscriber->setCustomer($customer)->setEmail($customer->getEmail())->setChannel($customer->getChannel())->setStore($customer->getStore())->setOrganization($customer->getOrganization())->setOwner($customer->getOwner())->setStatus($this->getStatus(NewsletterSubscriber::STATUS_UNSUBSCRIBED))->setDataChannel($customer->getDataChannel()); } return $newsletterSubscriber; }
/** * @param Customer $customer * * @return NewsletterSubscriber[]|Collection */ public function getOrCreateFromCustomer(Customer $customer) { $newsletterSubscribers = $customer->getNewsletterSubscribers(); if (count($newsletterSubscribers) === 0) { $newsletterSubscriber = new NewsletterSubscriber(); $newsletterSubscriber->setCustomer($customer)->setEmail($customer->getEmail())->setChannel($customer->getChannel())->setStore($customer->getStore())->setOrganization($customer->getOrganization())->setOwner($customer->getOwner())->setStatus($this->getStatus(NewsletterSubscriber::STATUS_UNSUBSCRIBED))->setDataChannel($customer->getDataChannel()); $newsletterSubscribers = new ArrayCollection([$newsletterSubscriber]); } return $newsletterSubscribers; }
/** * {@inheritdoc} */ public function load(ObjectManager $manager) { $newsletterSubscribers = []; $customers = new ArrayCollection($manager->getRepository('OroCRMMagentoBundle:Customer')->findAll()); $className = ExtendHelper::buildEnumValueClassName('mage_subscr_status'); $statuses = new ArrayCollection($manager->getRepository($className)->findAll()); /** @var Customer $customer */ foreach ($customers as $customer) { $newsletterSubscriber = new NewsletterSubscriber(); $newsletterSubscriber->setOwner($customer->getOwner())->setOrganization($customer->getOrganization())->setChangeStatusAt($customer->getCreatedAt())->setCreatedAt($customer->getCreatedAt())->setUpdatedAt($customer->getUpdatedAt())->setConfirmCode(uniqid('', true))->setChannel($customer->getChannel())->setEmail($customer->getEmail())->setStore($customer->getStore())->setStatus($statuses->get(array_rand($statuses->toArray())))->setDataChannel($customer->getDataChannel()); if (rand(0, 1)) { $newsletterSubscriber->setCustomer($customer); } $newsletterSubscribers[] = $newsletterSubscriber; } foreach ($newsletterSubscribers as $newsletterSubscriber) { $manager->persist($newsletterSubscriber); } if ($newsletterSubscribers) { $manager->flush($newsletterSubscribers); } }