for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/*
* This file is part of the Kreta package.
*
* (c) Beñat Espiña <[email protected]>
* (c) Gorka Laucirica <[email protected]>
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Kreta\TaskManager\Application\Command\User;
use Kreta\TaskManager\Domain\Model\User\User;
use Kreta\TaskManager\Domain\Model\User\UserAlreadyExistsException;
use Kreta\TaskManager\Domain\Model\User\UserId;
use Kreta\TaskManager\Domain\Model\User\UserRepository;
class AddUserHandler
{
private $repository;
public function __construct(UserRepository $repository)
$this->repository = $repository;
}
public function __invoke(AddUserCommand $command)
$userId = UserId::generate($command->userId());
$user = $this->repository->userOfId($userId);
if ($user instanceof User) {
throw new UserAlreadyExistsException($user->id());
$this->repository->persist(
new User($userId)
);