Esempio n. 1
0
 /**
  * @param object $entity
  * @param bool $expected
  *
  * @dataProvider entityDataProvider
  */
 public function testPostPersist($entity, $expected)
 {
     $event = new LifecycleEventArgs($entity, $this->entityManager);
     if ($expected) {
         $this->reminderManager->expects($this->once())->method('saveReminders')->with($entity);
     }
     $this->listener->postPersist($event);
 }
Esempio n. 2
0
 /**
  * Save reminders for new entities
  *
  * @param LifecycleEventArgs $event
  */
 public function postPersist(LifecycleEventArgs $event)
 {
     $entity = $event->getEntity();
     if (!$entity instanceof RemindableInterface) {
         return;
     }
     $this->reminderManager->saveReminders($entity);
 }
Esempio n. 3
0
 /**
  * Set form data
  *
  * @param FormEvent $event
  */
 public function postSubmit(FormEvent $event)
 {
     $form = $event->getForm();
     $entity = $form->getData();
     if (!$form->isValid() || !$entity instanceof RemindableInterface || !$form->has('reminders')) {
         return;
     }
     $this->manager->saveReminders($entity);
 }
Esempio n. 4
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;
 }
Esempio n. 6
0
 public function testInvalidEntityIdentifier()
 {
     $entity = $this->getMockBuilder('Oro\\Bundle\\ReminderBundle\\Entity\\RemindableInterface')->disableOriginalConstructor()->setMockClassName('Reminder_Mock')->getMock();
     $metadata = $this->getMockBuilder('Doctrine\\ORM\\Mapping\\ClassMetadata')->disableOriginalConstructor()->getMock();
     $this->entityManager->expects($this->once())->method('getClassMetadata')->with(get_class($entity))->will($this->returnValue($metadata));
     $metadata->expects($this->once())->method('getIdentifierValues')->with($entity)->will($this->returnValue(array('foo' => 100, 'bar' => 200)));
     $this->manager->saveReminders($entity);
 }
Esempio n. 7
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);
 }