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;
 }
Ejemplo n.º 4
0
 /**
  * {@inheritdoc}
  */
 protected function getPermissionForAttribute($class, $identifier, $attribute)
 {
     if (is_a($this->object, $this->className, true) && ($this->object->getCustomer() && !$this->object->getCustomer()->getOriginId())) {
         return self::ACCESS_DENIED;
     }
     if (is_a($this->object, $this->className, true) && $this->object->getChannel() && !$this->settingsProvider->isChannelApplicable($this->object->getChannel()->getId())) {
         return self::ACCESS_DENIED;
     }
     if (!$this->settingsProvider->hasApplicableChannels()) {
         return self::ACCESS_DENIED;
     }
     return self::ACCESS_ABSTAIN;
 }
 /**
  * @param NewsletterSubscriber $newsletterSubscriber
  * @return bool
  */
 protected function isProcessingAllowed(NewsletterSubscriber $newsletterSubscriber)
 {
     $customer = null;
     $customerOriginId = null;
     $isProcessingAllowed = true;
     if ($newsletterSubscriber->getCustomer()) {
         $customerOriginId = $newsletterSubscriber->getCustomer()->getOriginId();
         $customer = $this->databaseHelper->findOneByIdentity($newsletterSubscriber->getCustomer());
     }
     if (!$customer && $customerOriginId) {
         $this->appendDataToContext(ContextCustomerReader::CONTEXT_POST_PROCESS_CUSTOMERS, $customerOriginId);
         $isProcessingAllowed = false;
     }
     return $isProcessingAllowed;
 }
Ejemplo n.º 6
0
 /**
  * @param NewsletterSubscriber $entity
  */
 protected function processChangeStatusAt(NewsletterSubscriber $entity)
 {
     if (!$entity->getChangeStatusAt()) {
         $now = new \DateTime('now', new \DateTimeZone('UTC'));
         $entity->setCreatedAt($now)->setUpdatedAt($now);
     } else {
         $entity->setUpdatedAt($entity->getChangeStatusAt());
         if (!$entity->getId()) {
             $entity->setCreatedAt($entity->getChangeStatusAt());
         }
     }
 }
 /**
  * {@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);
     }
 }
 /**
  * @param NewsletterSubscriber $newsletterSubscriber
  * @param int $statusIdentifier
  *
  * @return array
  */
 protected function doJob(NewsletterSubscriber $newsletterSubscriber, $statusIdentifier)
 {
     $jobResult = $this->get('oro_importexport.job_executor')->executeJob('export', 'magento_newsletter_subscriber_export', ['channel' => $newsletterSubscriber->getChannel()->getId(), 'entity' => $newsletterSubscriber, 'statusIdentifier' => $statusIdentifier, 'writer_skip_clear' => true, 'processorAlias' => 'orocrm_magento']);
     return ['successful' => $jobResult->isSuccessful(), 'error' => $jobResult->getFailureExceptions(), 'state' => $jobResult->isSuccessful() ? $statusIdentifier : $newsletterSubscriber->getStatus()->getId()];
 }
 /**
  * @depends testUnsubscribeByCustomer
  */
 public function testSubscribeByCustomer()
 {
     $this->client->request('GET', $this->getUrl('orocrm_magento_newsletter_subscriber_subscribe_customer', ['id' => $this->subscriber->getCustomer()->getId()]));
     $result = $this->getJsonResponseContent($this->client->getResponse(), 200);
     $this->assertEquals(NewsletterSubscriber::STATUS_SUBSCRIBED, $result['state']);
 }
 public function testUnsubscribeByCustomer()
 {
     $this->client->request('GET', $this->getUrl('orocrm_magento_newsletter_subscriber_unsubscribe_customer', ['id' => $this->subscriber->getCustomer()->getId()]));
     $result = $this->getJsonResponseContent($this->client->getResponse(), 200);
     $this->assertTrue($result['successful']);
 }