public function testGetMessageParamsForRemindersSetupCorrectParams()
 {
     $expectedId = 42;
     $expectedSubject = 'testSubject';
     $expectedExpireAt = new \DateTime();
     $expectedFormattedExpireAt = 'formatted date time';
     $expectedUrl = 'www.tests.com';
     $reminder = $this->getMock('Oro\\Bundle\\ReminderBundle\\Entity\\Reminder');
     $reminder->expects($this->once())->method('getId')->will($this->returnValue($expectedId));
     $reminder->expects($this->exactly(2))->method('getExpireAt')->will($this->returnValue($expectedExpireAt));
     $reminder->expects($this->once())->method('getSubject')->will($this->returnValue($expectedSubject));
     $this->dateTimeFormatter->expects($this->at(0))->method('formatDate')->will($this->returnValue(new \DateTime()));
     $this->dateTimeFormatter->expects($this->once())->method('format')->with($expectedExpireAt)->will($this->returnValue($expectedFormattedExpireAt));
     $this->urlProvider->expects($this->once())->method('getUrl')->will($this->returnValue($expectedUrl));
     $expectedIdentifier = 'test_template_identifier';
     $expectedRelatedClassName = 'Tasks';
     $reminder->expects($this->exactly(2))->method('getRelatedEntityClassName')->will($this->returnValue($expectedRelatedClassName));
     $configInterface = $this->getMockForAbstractClass('Oro\\Bundle\\EntityConfigBundle\\Config\\ConfigInterface');
     $configInterface->expects($this->once())->method('get')->will($this->returnValue($expectedIdentifier));
     $this->configProvider->expects($this->once())->method('getConfig')->with($expectedRelatedClassName)->will($this->returnValue($configInterface));
     $params = $this->messageParamsProvider->getMessageParamsForReminders(array($reminder));
     $this->assertCount(1, $params);
     $this->assertEquals($expectedId, $params[0]['id']);
     $this->assertEquals($expectedUrl, $params[0]['url']);
     $this->assertEquals($expectedSubject, $params[0]['subject']);
     $this->assertEquals($expectedFormattedExpireAt, $params[0]['expireAt']);
     $this->assertEquals($expectedIdentifier, $params[0]['templateId']);
 }
 /**
  * Get requested reminders
  *
  * @return string
  */
 public function getRequestedRemindersData()
 {
     /** @var User|null */
     $user = $this->securityContext->getToken() ? $this->securityContext->getToken()->getUser() : null;
     if (is_object($user) && $user instanceof User) {
         $reminders = $this->entityManager->getRepository('OroReminderBundle:Reminder')->findRequestedReminders($user);
         return $this->messageParamsProvider->getMessageParamsForReminders($reminders);
     }
     return array();
 }
 /**
  * Send group of reminders to recipient
  *
  * @param Reminder[] $reminders
  * @param integer $recipientId
  */
 protected function processRecipientReminders(array $reminders, $recipientId)
 {
     $messageData = array();
     // Collect message data
     foreach ($reminders as $reminder) {
         $messageData[] = $this->messageParamsProvider->getMessageParams($reminder);
     }
     // Send message
     try {
         $this->sendMessage($messageData, $recipientId);
         // Change state
         foreach ($reminders as $reminder) {
             $reminder->setState(Reminder::STATE_REQUESTED);
         }
     } catch (\Exception $exception) {
         foreach ($reminders as $reminder) {
             $reminder->setState(Reminder::STATE_FAIL);
             $reminder->setFailureException($exception);
         }
     }
 }