/**
  * @return ViewModel|Response
  */
 public function updateAction()
 {
     $campaignId = $this->params('entityId');
     /** @var Campaign $campaign */
     $campaign = $this->campaignRepository->getOneById($campaignId);
     if (!$campaign) {
         return $this->redirect()->toRoute(static::BASE_ROUTE);
     }
     $message = $this->messageRepository->getSystemMessage($campaignId);
     if (!$message) {
         $message = $this->messageRepository->getNewEntity();
     }
     try {
         if ($this->manager->handlePost($campaign, $message)) {
             $msg = $this->userText->getMessage(EntityName::CAMPAIGN, Message::UPDATE_SUCCESS);
             $this->flashMessenger()->addSuccessMessage($msg);
             $this->addSystemMessageMessages();
             return $this->redirect()->toRoute(static::BASE_ROUTE);
         }
     } catch (Manager\Exception\Db $exc) {
         $campaignMsg = $this->userText->getMessage(EntityName::CAMPAIGN, Message::SAVE_FAILED);
         $messageMsg = $this->userText->getMessage(EntityName::MESSAGE, Message::SAVE_FAILED);
         $this->currentMessages[FeedbackType::DANGER][] = $campaignMsg;
         $this->currentMessages[FeedbackType::DANGER][] = $messageMsg;
     }
     $this->layout()->currentMessages = $this->currentMessages;
     return new ViewModel(['form' => $this->manager->getForm(), 'tinyMceLang' => $this->tinyMceLang]);
 }
 /**
  * @param Message $message
  *
  * @return bool
  */
 private function closeSentMessage(Message $message)
 {
     $queue = $message->getQueue();
     if (empty($queue)) {
         return false;
     }
     $allSent = true;
     foreach ($queue as $queueItem) {
         if (null === $queueItem->getSentAt()) {
             $allSent = false;
             break;
         }
     }
     if ($this->isVerbose()) {
         $messageAsString = $this->messageToString($message, count($queue));
         if ($allSent) {
             $this->logger->info('Message to be closed: ' . $messageAsString);
         } else {
             $this->logger->info('Message is still being sent: ' . $messageAsString);
         }
     }
     if ($allSent) {
         $this->messageRepository->closeMessage($message);
         return true;
     }
     return false;
 }
Example #3
0
 /**
  * @param Entity\Subscriber $subscriber
  * @param Entity\Campaign   $campaign
  *
  * @return bool
  */
 public function handlePost(Entity\Subscriber $subscriber, Entity\Campaign $campaign)
 {
     $form = $this->getForm();
     if (!$this->request->isPost()) {
         return false;
     }
     $form->setData($this->request->getPost());
     if (!$form->isValid()) {
         return false;
     }
     $subscriber->populate($form->getData());
     if (!$subscriber->hasCampaign($campaign)) {
         $subscriber->addCampaign($campaign);
     }
     $systemMessage = $this->messageRepository->getSystemMessage($campaign->getId());
     $this->queueMessage($subscriber, $systemMessage);
     return $this->saveEntity($subscriber);
 }
Example #4
0
 /**
  * @return array
  */
 private function getReadyMessagesCount()
 {
     $count = $this->messageRepo->getReadyMessagesCount();
     $kpiType = self::INFO;
     if ($count > 40) {
         $kpiType = self::DANGER;
     } elseif ($count > 8) {
         $kpiType = self::WARNING;
     }
     return [self::READY_MESSAGE_COUNT => [self::VALUE => $count, self::TYPE => $kpiType]];
 }
Example #5
0
 /**
  * @covers DmMailer\Repository\QueueItem
  */
 public function testQueueMessage()
 {
     $oldQueueSize = count($this->sut->findAll());
     $campaign = $this->campaignRepo->findOneBy(['entityId' => 1]);
     $message = $this->messageRepo->getNewEntity();
     $message->setSubject('Subject');
     $message->setBody('Body');
     $message->setCampaign($campaign);
     $this->sut->queueMessage($message);
     $newQueueSize = count($this->sut->findAll());
     $this->assertGreaterThan($oldQueueSize, $newQueueSize);
     $this->assertEquals($oldQueueSize + count($campaign->getSubscribers()), $newQueueSize);
 }
 /**
  * @return JsonModel
  */
 public function toggleOnHaltAction()
 {
     /** @var EntityMessage $message */
     $message = $this->messageRepository->getOneById($this->params('entityId'));
     if (!$message) {
         return $this->redirect()->toRoute(static::BASE_ROUTE);
     }
     $message->setOnHalt(!$message->isOnHalt());
     $response = $this->getResponse();
     try {
         if ($this->manager->saveEntity($message)) {
             $response->setContent('true');
             return $response;
         }
     } catch (DbException $exc) {
         $msg = $this->userText->getMessage(EntityName::MESSAGE, DmCommonMessage::SAVE_FAILED);
         $this->flashMessenger()->addErrorMessage($msg);
     }
     $this->flashMessenger()->clearCurrentMessages();
     $response->setContent('false');
     return $response;
 }
Example #7
0
 /**
  * @covers DmMailer\Repository\Message
  */
 public function testGetReadyMessagesCount()
 {
     $actualResult = $this->sut->getReadyMessagesCount();
     $this->assertEquals(3, $actualResult);
 }