Ejemplo n.º 1
0
 /**
  * {@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;
 }
Ejemplo n.º 3
0
 /**
  * @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);
     }
 }