mirror of
https://github.com/kevinveenbirkenbach/infinito.git
synced 2025-09-13 13:57:10 +02:00
Optimized draft for MemberRelation
This commit is contained in:
50
application/src/Domain/MemberManagement/MemberManager.php
Normal file
50
application/src/Domain/MemberManagement/MemberManager.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace App\Domain\MemberManagement;
|
||||
|
||||
use App\Entity\Meta\Relation\Member\MemberRelationInterface;
|
||||
|
||||
final class MemberManager implements MemberManagerInterface
|
||||
{
|
||||
/**
|
||||
* @var MemberRelationInterface
|
||||
*/
|
||||
private $memberRelation;
|
||||
|
||||
public function __construct(MemberRelationInterface $memberRelation)
|
||||
{
|
||||
$this->memberRelation = $memberRelation;
|
||||
}
|
||||
|
||||
public function addMember(MemberRelationInterface $member): void
|
||||
{
|
||||
if (!$this->memberRelation->getMembers()->contains($member)) {
|
||||
$this->memberRelation->getMembers()[] = $member;
|
||||
(new self($member))->addMembership($this->memberRelation);
|
||||
}
|
||||
}
|
||||
|
||||
public function removeMember(MemberRelationInterface $member): void
|
||||
{
|
||||
if ($this->memberRelation->getMembers()->contains($member)) {
|
||||
$this->memberRelation->getMembers()->removeElement($member);
|
||||
(new self($member))->removeMembership($this->memberRelation);
|
||||
}
|
||||
}
|
||||
|
||||
public function addMembership(MemberRelationInterface $membership): void
|
||||
{
|
||||
if (!$this->memberRelation->getMemberships()->contains($membership)) {
|
||||
$this->memberRelation->getMemberships()[] = $membership;
|
||||
(new self($membership))->addMember($this->memberRelation);
|
||||
}
|
||||
}
|
||||
|
||||
public function removeMembership(MemberRelationInterface $membership): void
|
||||
{
|
||||
if ($this->memberRelation->getMemberships()->contains($membership)) {
|
||||
$this->memberRelation->getMemberships()->removeElement($membership);
|
||||
(new self($membership))->removeMember($this->memberRelation);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Domain\MemberManagement;
|
||||
|
||||
use App\Entity\Meta\Relation\Member\MemberRelationInterface;
|
||||
|
||||
interface MemberManagerInterface
|
||||
{
|
||||
/**
|
||||
* @param MemberRelationInterface $member
|
||||
*/
|
||||
public function addMember(MemberRelationInterface $member): void;
|
||||
|
||||
/**
|
||||
* @param MemberRelationInterface $member
|
||||
*/
|
||||
public function removeMember(MemberRelationInterface $member): void;
|
||||
|
||||
/**
|
||||
* @param MemberRelationInterface $membership
|
||||
*/
|
||||
public function addMembership(MemberRelationInterface $membership): void;
|
||||
|
||||
/**
|
||||
* @param MemberRelationInterface $membership
|
||||
*/
|
||||
public function removeMembership(MemberRelationInterface $membership): void;
|
||||
}
|
Reference in New Issue
Block a user