public function __invoke(FilterProjectsQuery $query) { $organizations = $this->repository->query($this->specificationFactory->buildFilterableSpecification(UserId::generate($query->userId()), null === $query->organizationId() ? null : OrganizationId::generate($query->organizationId()), null === $query->name() ? null : new ProjectName($query->name()), $query->offset(), $query->limit())); return array_map(function (Project $organization) { $this->dataTransformer->write($organization); return $this->dataTransformer->read(); }, $organizations); }
function it_does_not_serialize_organization_member_because_it_does_not_exist(OrganizationMemberOfIdQuery $query, OrganizationRepository $repository, Organization $organization) { $query->organizationId()->shouldBeCalled()->willReturn('organization-id'); $repository->organizationOfId(OrganizationId::generate('organization-id'))->shouldBeCalled()->willReturn($organization); $query->userId()->shouldBeCalled()->willReturn('user-id'); $organization->isOrganizationMember(UserId::generate('user-id'))->shouldBeCalled()->willReturn(false); $this->shouldThrow(OrganizationMemberDoesNotExistException::class)->during__invoke($query); }
function it_does_not_edits_an_organization_because_the_owner_does_not_authorized(EditOrganizationCommand $command, OrganizationRepository $repository, Organization $organization) { $command->id()->shouldBeCalled()->willReturn('organization-id'); $repository->organizationOfId(OrganizationId::generate('organization-id'))->shouldBeCalled()->willReturn($organization); $command->userId()->shouldBeCalled()->willReturn('editor-id'); $organization->isOwner(UserId::generate('editor-id'))->shouldBeCalled()->willReturn(false); $this->shouldThrow(UnauthorizedEditOrganizationException::class)->during__invoke($command); }
function it_does_not_add_organization_member_to_organization_because_it_is_not_allowed(AddOrganizationMemberToOrganizationCommand $command, OrganizationRepository $repository, Organization $organization) { $organizationId = OrganizationId::generate('organization-id'); $command->organizationId()->shouldBeCalled()->willReturn('organization-id'); $repository->organizationOfId($organizationId)->shouldBeCalled()->willReturn($organization); $command->adderId()->shouldBeCalled()->willReturn('adder-id'); $organization->isOwner(UserId::generate('adder-id'))->shouldBeCalled()->willReturn(false); $this->shouldThrow(UnauthorizedOrganizationActionException::class)->during__invoke($command); }
public function __invoke(OrganizationOfIdQuery $query) { $organization = $this->repository->organizationOfId(OrganizationId::generate($query->organizationId())); if (!$organization instanceof Organization) { throw new OrganizationDoesNotExistException(); } $this->dataTransformer->write($organization); return $this->dataTransformer->read(); }
function it_transform_organization_to_plain_dto(MemberDataTransformer $memberDataTransformer) { $userId = UserId::generate('user-id'); $organization = new Organization(OrganizationId::generate('organization-id'), new OrganizationName('Organization name'), new Slug('Organization name'), $userId); $this->write($organization); $memberDataTransformer->write($organization->owner($userId))->shouldBeCalled(); $memberDataTransformer->read()->shouldBeCalled()->willReturn(['id' => 'owner-id', 'created_on' => '2016-10-24', 'updated_on' => '2016-10-24', 'user_id' => 'user-id', 'organization' => [['id' => 'organization-id', 'name' => 'Organization name', 'slug' => 'organization-name', 'created_on' => '2016-10-24', 'updated_on' => '2016-10-24']]]); $this->read()->shouldReturn(['id' => 'organization-id', 'name' => 'Organization name', 'slug' => 'organization-name', 'created_on' => (new \DateTimeImmutable())->format('Y-m-d'), 'updated_on' => (new \DateTimeImmutable())->format('Y-m-d'), 'owners' => [['id' => 'owner-id', 'created_on' => '2016-10-24', 'updated_on' => '2016-10-24', 'user_id' => 'user-id', 'organization' => [['id' => 'organization-id', 'name' => 'Organization name', 'slug' => 'organization-name', 'created_on' => '2016-10-24', 'updated_on' => '2016-10-24']]]], 'organizationMembers' => []]); }
public function __invoke(AddOrganizationMemberToOrganizationCommand $command) { $organization = $this->repository->organizationOfId(OrganizationId::generate($command->organizationId())); if (!$organization instanceof Organization) { throw new OrganizationDoesNotExistException(); } if (!$organization->isOwner(UserId::generate($command->adderId()))) { throw new UnauthorizedOrganizationActionException(); } $organization->addOrganizationMember(UserId::generate($command->userId())); $this->repository->persist($organization); }
public function __invoke(EditOrganizationCommand $command) { $organization = $this->repository->organizationOfId(OrganizationId::generate($command->id())); if (!$organization instanceof Organization) { throw new OrganizationDoesNotExistException(); } if (!$organization->isOwner(UserId::generate($command->userId()))) { throw new UnauthorizedEditOrganizationException(); } $organization->edit(new OrganizationName($command->name()), new Slug(null === $command->slug() ? $command->name() : $command->slug())); $this->repository->persist($organization); }
public function __invoke(CreateOrganizationCommand $command) { if (null !== ($id = $command->id())) { $organization = $this->repository->organizationOfId(OrganizationId::generate($id)); if ($organization instanceof Organization) { throw new OrganizationAlreadyExistsException(); } } $user = $this->userRepository->userOfId(UserId::generate($command->creatorId())); if (!$user instanceof User) { throw new UserDoesNotExistException(); } $organizationId = OrganizationId::generate($command->id()); $organization = new Organization($organizationId, new OrganizationName($command->name()), new Slug(null === $command->slug() ? $command->name() : $command->slug()), $user->id()); $this->repository->persist($organization); }
public function __invoke(CreateProjectCommand $command) { $project = $this->projectRepository->projectOfId(ProjectId::generate($command->id())); if ($project instanceof Project) { throw new ProjectAlreadyExists($project->id()); } $organizationId = OrganizationId::generate($command->organizationId()); $organization = $this->organizationRepository->organizationOfId($organizationId); if (!$organization instanceof Organization) { throw new OrganizationDoesNotExistException(); } if (!$organization->isOwner(UserId::generate($command->creatorId()))) { throw new UnauthorizedCreateProjectException(); } $project = new Project(ProjectId::generate($command->id()), new ProjectName($command->name()), new Slug(null === $command->slug() ? $command->name() : $command->slug()), $organization->id()); $this->projectRepository->persist($project); }
public function convertToPHPValue($value, AbstractPlatform $platform) : OrganizationId { return OrganizationId::generate($value); }
function it_does_not_serialize_organization_because_the_organization_does_not_exist(OrganizationOfIdQuery $query, OrganizationRepository $repository) { $query->organizationId()->shouldBeCalled()->willReturn('organization-id'); $repository->organizationOfId(OrganizationId::generate('organization-id'))->shouldBeCalled()->willReturn(null); $this->shouldThrow(OrganizationDoesNotExistException::class)->during__invoke($query); }
public function __invoke(CountProjectsQuery $query) { return $this->repository->count($this->specificationFactory->buildFilterableSpecification(UserId::generate($query->userId()), null === $query->organizationId() ? null : OrganizationId::generate($query->organizationId()), null === $query->name() ? null : new ProjectName($query->name()))); }