getTimestamp() - $activityTime->getTimestamp(); if ($diffInSeconds < 15 * 60) { // less than 15 minutes return '#086572'; } if ($diffInSeconds < 60 * 60) { // less than 1 hour return '#247208'; } return '#cc664c'; } /** * Format activities to include the computed color. * * @param Actions[] $activities * @return array> */ public function formatActivities(array $activities): array { return array_map(function (Actions $activity) { return [ 'date' => $activity->getDate()->format('d/m/Y H:i'), 'actionType' => $activity->getActionType(), 'userName' => $activity->getUsers()->getName(), // 'organization' => $activity->getOrganization(), // 'description' => $activity->getDescription(), 'color' => $this->getActivityColor($activity->getDate()) ]; }, $activities); } public function createAction( string $actionType, User $user, Organizations $organizations = null, string $target = null): void { $action = new Actions(); $action->setActionType($actionType); $action->setUsers($user); if ($organizations !== null) { $action->setOrganization($organizations); } if ($target !== null) { $this->descriptionAction($action, $target); } $this->entityManager->persist($action); $this->entityManager->flush(); } public function descriptionAction(&$action, string $target): void{ if ($action instanceof Actions) { if(!$action->getUsers()){ throw new \InvalidArgumentException('Action must have a user set'); } $description = "{$action->getActionType()} by {$action->getUsers()->getUserIdentifier()} onto {$target}"; $action->setDescription($description); } else { throw new \InvalidArgumentException('Action must be an instance of Actions'); } } }