/**
  * @param array $contactInfoFields
  * @param array $contactInfoFields
  * @param object $entity
  * @param string $type
  * @param array $expected
  *
  * @dataProvider fieldsDataProvider
  */
 public function testGetQueryContactInformationFields($contactInfoFields, $definition, $entity, $type, $expected)
 {
     $queryDesigner = $this->getMockForAbstractClass('Oro\\Bundle\\QueryDesignerBundle\\Model\\AbstractQueryDesigner');
     $queryDesigner->expects($this->any())->method('getDefinition')->will($this->returnValue($definition));
     $this->helper->expects($this->once())->method('getEntityContactInformationColumns')->will($this->returnValue($contactInfoFields));
     $this->assertEquals($expected, $this->provider->getQueryContactInformationFields($queryDesigner, $entity, $type));
 }
Exemplo n.º 2
0
 public function send()
 {
     $this->assertTransport();
     $marketingList = $this->emailCampaign->getMarketingList();
     /** @var EntityManager $manager */
     $manager = $this->registry->getManager();
     foreach ($this->getIterator() as $entity) {
         $to = $this->contactInformationFieldsProvider->getQueryContactInformationFields($marketingList->getSegment(), $entity, ContactInformationFieldsProvider::CONTACT_INFORMATION_SCOPE_EMAIL);
         try {
             $manager->beginTransaction();
             // Do actual send
             $this->transport->send($this->emailCampaign, $entity, [$this->getSenderEmail() => $this->getSenderName()], $to);
             // Mark marketing list item as contacted
             $marketingListItem = $this->marketingListItemConnector->contact($marketingList, $entity->getId());
             // Record email campaign contact statistic
             $statisticsRecord = new EmailCampaignStatistics();
             $statisticsRecord->setEmailCampaign($this->emailCampaign)->setMarketingListItem($marketingListItem);
             $manager->persist($statisticsRecord);
             $manager->flush();
             $manager->commit();
         } catch (\Exception $e) {
             $manager->rollback();
             if ($this->logger) {
                 $this->logger->error(sprintf('Email sending to "%s" failed.', implode(', ', $to)), array('exception' => $e));
             }
         }
     }
     $this->emailCampaign->setSent(true);
     $manager->persist($this->emailCampaign);
     $manager->flush();
 }