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\Organization;
use Kreta\TaskManager\Domain\Model\Organization\Organization;
use Kreta\TaskManager\Domain\Model\Organization\OrganizationDoesNotExistException;
use Kreta\TaskManager\Domain\Model\Organization\OrganizationId;
use Kreta\TaskManager\Domain\Model\Organization\OrganizationRepository;
use Kreta\TaskManager\Domain\Model\Organization\UnauthorizedOrganizationActionException;
use Kreta\TaskManager\Domain\Model\User\UserId;
class RemoveOwnerToOrganizationHandler
{
private $repository;
public function __construct(OrganizationRepository $repository)
$this->repository = $repository;
}
public function __invoke(RemoveOwnerToOrganizationCommand $command)
$organization = $this->repository->organizationOfId(
OrganizationId::generate(
$command->organizationId()
)
);
if (!$organization instanceof Organization) {
throw new OrganizationDoesNotExistException();
if (!$organization->isOwner(UserId::generate($command->removerId()))) {
throw new UnauthorizedOrganizationActionException();
$organization->removeOwner(
UserId::generate(
$command->userId()
$this->repository->persist($organization);