diff --git a/src/Service/ActionService.php b/src/Service/ActionService.php index 27825b0..52f8c57 100644 --- a/src/Service/ActionService.php +++ b/src/Service/ActionService.php @@ -2,9 +2,19 @@ namespace App\Service; -class ActionService +use App\Entity\Actions; +use App\Entity\Organizations; +use App\Entity\User; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Security\Core\User\UserInterface; + +readonly class ActionService { + public function __construct(private EntityManagerInterface $entityManager) + { + } + public function getActivityColor(\DateTimeImmutable $activityTime): string { $now = new \DateTimeImmutable(); @@ -19,4 +29,35 @@ class ActionService } return '#C76633'; } + + 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'); + } + } }