/**
  * @param Member $member
  * @return MarketingListStateItemInterface[]
  */
 protected function getMarketingListStateItems(Member $member)
 {
     $entities = [];
     if (!($subscribersList = $member->getSubscribersList())) {
         return $entities;
     }
     $marketingLists = $this->getMarketingListIterator($subscribersList);
     foreach ($marketingLists as $marketingList) {
         $marketingListEntities = $this->getMarketingListEntitiesByEmail($marketingList, $member->getEmail());
         /** @var MarketingList $marketingListEntity */
         foreach ($marketingListEntities as $marketingListEntity) {
             $entityId = $this->doctrineHelper->getSingleEntityIdentifier($marketingListEntity);
             $criteria = ['entityId' => $entityId, 'marketingList' => $marketingList->getId()];
             if ($this->getMarketingListStateItem($criteria)) {
                 continue;
             }
             /** @var MarketingListStateItemInterface $marketingListStateItem */
             $marketingListStateItem = new $this->marketingListStateItemClassName();
             $marketingListStateItem->setEntityId($entityId)->setMarketingList($marketingList);
             $entities[$marketingList->getEntity()][] = $marketingListStateItem;
         }
     }
     return $entities;
 }
 /**
  * @param Member $member
  * @param Channel $channel
  * @param Campaign $campaign
  * @return Member
  */
 protected function findExistingMember(Member $member, Channel $channel, Campaign $campaign)
 {
     $searchCondition = ['channel' => $channel, 'subscribersList' => $campaign->getSubscribersList()];
     if ($originId = $member->getOriginId()) {
         $searchCondition['originId'] = $originId;
     } else {
         $searchCondition['email'] = $member->getEmail();
     }
     return $this->findEntityByIdentityValues(ClassUtils::getClass($member), $searchCondition);
 }
 /**
  * @param Member $entity
  *
  * @return bool
  */
 protected function isEntityProcessed($entity)
 {
     return !empty($this->processedMembers[$entity->getSubscribersList()->getId()][$entity->getEmail()]);
 }
 /**
  * @param Member $entity
  *
  * @return bool
  */
 protected function isEntityProcessed($entity)
 {
     $jobContext = $this->getJobContext();
     $processedMembers = (array) $jobContext->get('processed_members');
     return !empty($processedMembers[$entity->getSubscribersList()->getId()][$entity->getEmail()]);
 }