mirror of
				https://github.com/kevinveenbirkenbach/infinito.git
				synced 2025-11-04 11:17:58 +00: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