/**
  * @param ActivityList $entity
  * @param []           $targetEntityData
  *
  * @return array
  */
 public function getEntityViewModel(ActivityList $entity, $targetEntityData = [])
 {
     $entityProvider = $this->chainProvider->getProviderForEntity($entity->getRelatedActivityClass());
     $activity = $this->doctrineHelper->getEntity($entity->getRelatedActivityClass(), $entity->getRelatedActivityId());
     $ownerName = '';
     $ownerId = '';
     $owner = $entity->getOwner();
     if ($owner) {
         $ownerName = $this->entityNameResolver->getName($owner);
         if ($this->securityFacade->isGranted('VIEW', $owner)) {
             $ownerId = $owner->getId();
         }
     }
     $editorName = '';
     $editorId = '';
     $editor = $entity->getEditor();
     if ($editor) {
         $editorName = $this->entityNameResolver->getName($editor);
         if ($this->securityFacade->isGranted('VIEW', $editor)) {
             $editorId = $editor->getId();
         }
     }
     $isHead = $this->getHeadStatus($entity, $entityProvider);
     $relatedActivityEntities = $this->getRelatedActivityEntities($entity, $entityProvider);
     $numberOfComments = $this->commentManager->getCommentCount($entity->getRelatedActivityClass(), $relatedActivityEntities);
     $data = $entityProvider->getData($entity);
     if (isset($data['isHead']) && !$data['isHead']) {
         $isHead = false;
     }
     $result = ['id' => $entity->getId(), 'owner' => $ownerName, 'owner_id' => $ownerId, 'editor' => $editorName, 'editor_id' => $editorId, 'verb' => $entity->getVerb(), 'subject' => $entity->getSubject(), 'description' => $entity->getDescription(), 'data' => $data, 'relatedActivityClass' => $entity->getRelatedActivityClass(), 'relatedActivityId' => $entity->getRelatedActivityId(), 'createdAt' => $entity->getCreatedAt()->format('c'), 'updatedAt' => $entity->getUpdatedAt()->format('c'), 'editable' => $this->securityFacade->isGranted('EDIT', $activity), 'removable' => $this->securityFacade->isGranted('DELETE', $activity), 'commentCount' => $numberOfComments, 'commentable' => $this->commentManager->isCommentable(), 'targetEntityData' => $targetEntityData, 'is_head' => $isHead];
     return $result;
 }
 /**
  * @param ActivityList  $activityList
  * @param EntityManager $entityManager
  * @param bool          $update
  */
 protected function setUpdatedProperties(ActivityList $activityList, EntityManager $entityManager, $update = false)
 {
     $newUpdatedAt = new \DateTime('now', new \DateTimeZone('UTC'));
     $newUpdatedBy = $this->getUser($entityManager);
     $unitOfWork = $entityManager->getUnitOfWork();
     if ($update && $newUpdatedBy != $activityList->getEditor()) {
         $unitOfWork->propertyChanged($activityList, 'updatedAt', $activityList->getUpdatedAt(), $newUpdatedAt);
         $unitOfWork->propertyChanged($activityList, 'editor', $activityList->getEditor(), $newUpdatedBy);
     }
     $activityList->setUpdatedAt($newUpdatedAt);
     $activityList->setEditor($newUpdatedBy);
 }