예제 #1
0
 /**
  * @param int           $calendarId
  * @param AbstractQuery $query
  *
  * @return array
  */
 public function getTasks($calendarId, AbstractQuery $query)
 {
     $result = [];
     $items = $query->getArrayResult();
     foreach ($items as $item) {
         /** @var \DateTime $start */
         $start = $item['dueDate'];
         $end = clone $start;
         $end = $end->add(new \DateInterval('PT30M'));
         $result[] = ['calendar' => $calendarId, 'id' => $item['id'], 'title' => $item['subject'], 'description' => $item['description'], 'start' => $start->format('c'), 'end' => $end->format('c'), 'allDay' => false, 'createdAt' => $item['createdAt']->format('c'), 'updatedAt' => $item['updatedAt']->format('c'), 'editable' => false, 'removable' => false];
     }
     $this->reminderManager->applyReminders($result, 'OroCRM\\Bundle\\TaskBundle\\Entity\\Task');
     return $result;
 }
 /**
  * Converts calendar events returned by the given query to form that can be used in API
  *
  * @param int           $calendarId The target calendar id
  * @param AbstractQuery $query      The query that should be used to get events
  *
  * @return array
  */
 public function getCalendarEvents($calendarId, AbstractQuery $query)
 {
     $result = [];
     $rawData = $query->getArrayResult();
     foreach ($rawData as $rawDataItem) {
         $result[] = $this->transformEntity($rawDataItem);
     }
     $this->applyAdditionalData($result, $calendarId);
     foreach ($result as &$resultItem) {
         $this->applyPermissions($resultItem, $calendarId);
     }
     $this->reminderManager->applyReminders($result, 'Oro\\Bundle\\CalendarBundle\\Entity\\CalendarEvent');
     return $result;
 }
예제 #3
0
 /**
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 public function testApplyReminders()
 {
     $entityClassName = 'Oro\\Bundle\\ReminderBundle\\Tests\\Unit\\Fixtures\\RemindableEntity';
     $items = [['id' => 1, 'subject' => 'item1'], ['id' => 2, 'subject' => 'item2'], ['id' => 3, 'subject' => 'item3']];
     $query = $this->getMockBuilder('Doctrine\\ORM\\AbstractQuery')->disableOriginalConstructor()->setMethods(['getArrayResult'])->getMockForAbstractClass();
     $qb = $this->getMockBuilder('Doctrine\\ORM\\QueryBuilder')->disableOriginalConstructor()->getMock();
     $reminderRepo = $this->getReminderRepository();
     $this->entityManager->expects($this->once())->method('getRepository')->with('OroReminderBundle:Reminder')->will($this->returnValue($reminderRepo));
     $reminderRepo->expects($this->once())->method('findRemindersByEntitiesQueryBuilder')->with($entityClassName, [1, 2, 3])->will($this->returnValue($qb));
     $qb->expects($this->once())->method('select')->with('reminder.relatedEntityId, reminder.method, reminder.intervalNumber, reminder.intervalUnit')->will($this->returnSelf());
     $qb->expects($this->once())->method('getQuery')->will($this->returnValue($query));
     $query->expects($this->once())->method('getArrayResult')->will($this->returnValue([['relatedEntityId' => 3, 'method' => 'email', 'intervalNumber' => 1, 'intervalUnit' => ReminderInterval::UNIT_HOUR], ['relatedEntityId' => 2, 'method' => 'email', 'intervalNumber' => 15, 'intervalUnit' => ReminderInterval::UNIT_MINUTE], ['relatedEntityId' => 2, 'method' => 'flash', 'intervalNumber' => 10, 'intervalUnit' => ReminderInterval::UNIT_MINUTE]]));
     $this->manager->applyReminders($items, $entityClassName);
     $this->assertEquals([['id' => 1, 'subject' => 'item1'], ['id' => 2, 'subject' => 'item2', 'reminders' => [['method' => 'email', 'interval' => ['number' => 15, 'unit' => ReminderInterval::UNIT_MINUTE]], ['method' => 'flash', 'interval' => ['number' => 10, 'unit' => ReminderInterval::UNIT_MINUTE]]]], ['id' => 3, 'subject' => 'item3', 'reminders' => [['method' => 'email', 'interval' => ['number' => 1, 'unit' => ReminderInterval::UNIT_HOUR]]]]], $items);
 }