Created SourceMemberManager

This commit is contained in:
Kevin Frantz
2018-11-25 21:27:25 +01:00
parent 6ebcb28dd0
commit a72b9b0357
7 changed files with 138 additions and 77 deletions

View File

@@ -0,0 +1,50 @@
<?php
namespace App\Domain\SourceManagement;
use App\Entity\Source\SourceInterface;
final class SourceMemberManager implements SourceMemberManagerInterface
{
/**
* @var SourceInterface
*/
private $source;
public function __construct(SourceInterface $source)
{
$this->source = $source;
}
public function addMember(SourceInterface $member): void
{
if (!$this->source->getMembers()->contains($member)) {
$this->source->getMembers()[] = $member;
(new self($member))->addMembership($this->source);
}
}
public function removeMember(SourceInterface $member): void
{
if ($this->source->getMembers()->contains($member)) {
$this->source->getMembers()->removeElement($member);
(new self($member))->removeMembership($this->source);
}
}
public function addMembership(SourceInterface $membership): void
{
if (!$this->source->getMemberships()->contains($membership)) {
$this->source->getMemberships()[] = $membership;
(new self($membership))->addMember($this->source);
}
}
public function removeMembership(SourceInterface $membership): void
{
if ($this->source->getMemberships()->contains($membership)) {
$this->source->getMemberships()->removeElement($membership);
(new self($membership))->removeMember($this->source);
}
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Domain\SourceManagement;
use App\Entity\Source\SourceInterface;
interface SourceMemberManagerInterface
{
/**
* @param SourceInterface $member
*/
public function addMember(SourceInterface $member): void;
/**
* @param SourceInterface $member
*/
public function removeMember(SourceInterface $member): void;
/**
* @param SourceInterface $membership
*/
public function addMembership(SourceInterface $membership): void;
/**
* @param SourceInterface $membership
*/
public function removeMembership(SourceInterface $membership): void;
}