/**
  * @param Entity\Message $message
  *
  * @return Entity\QueueItem[]
  */
 protected function getOldAckedQueue(Entity\Message $message)
 {
     $longAgo = new \DateTime('-1 hour');
     $queueItems = [];
     foreach ($this->getSubscribers() as $subscriber) {
         $queueItem = new Entity\QueueItem();
         $queueItem->setSystemMessage(false);
         $queueItem->setAckedAt($longAgo);
         $queueItem->setSubscriber($subscriber);
         $queueItem->setMessage($message);
         $queueItem->setSecurityKey();
         $queueItems[] = $queueItem;
     }
     return $queueItems;
 }
 /**
  * @param array $messages    Entity\Message[]
  * @param array $subscribers Entity\Subscriber[]
  *
  * @return array Entity\Queue[]
  */
 protected function getQueue(array $messages, array $subscribers)
 {
     $time = time();
     $queue = [];
     /** @var Entity\Message $message */
     foreach ($messages as $message) {
         if (!$message->getQueuedAt()) {
             continue;
         }
         $queuedAt = $message->getQueuedAt()->format('U');
         if ($queuedAt > $time) {
             continue;
         }
         foreach ($subscribers as $subscriber) {
             if (!$this->isSubscriberSubscribedToCampaign($message, $subscriber)) {
                 continue;
             }
             $queueItem = new Entity\QueueItem();
             $this->queueItemId++;
             $queueItem->setMessage($message);
             $queueItem->setSubscriber($subscriber);
             $queueItem->setSecurityKey($this->getUniqueSecurityKey());
             $queueItem->setSystemMessage($this->isSystemMessage());
             if ($queuedAt + 300 < $time) {
                 $ackedAt = new \DateTime();
                 $ackedAt->setTimestamp($queuedAt + 300);
                 $queueItem->setAckedAt($ackedAt);
             }
             if ($queuedAt + 600 < $time && $message->getClosedAt()) {
                 $sentAt = new \DateTime();
                 $sentAt->setTimestamp($queuedAt + 600);
                 $queueItem->setSentAt($sentAt);
             }
             $queue[] = $queueItem;
         }
     }
     return $queue;
 }