mirror of
				https://github.com/kevinveenbirkenbach/infinito.git
				synced 2025-10-31 17:29:04 +00:00 
			
		
		
		
	Created SourceMemberManager
This commit is contained in:
		| @@ -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); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -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; | ||||
| } | ||||
| @@ -103,36 +103,4 @@ abstract class AbstractSource extends AbstractEntity implements SourceInterface | ||||
|         $this->memberships = new ArrayCollection(); | ||||
|         $this->members = new ArrayCollection(); | ||||
|     } | ||||
|  | ||||
|     public function addMember(SourceInterface $member): void | ||||
|     { | ||||
|         if (!$this->members->contains($member)) { | ||||
|             $this->members[] = $member; | ||||
|             $member->addMembership($this); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public function removeMember(SourceInterface $member): void | ||||
|     { | ||||
|         if ($this->members->contains($member)) { | ||||
|             $this->members->removeElement($member); | ||||
|             $member->removeMembership($this); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public function addMembership(SourceInterface $membership): void | ||||
|     { | ||||
|         if (!$this->memberships->contains($membership)) { | ||||
|             $this->memberships[] = $membership; | ||||
|             $membership->addMember($this); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public function removeMembership(SourceInterface $membership): void | ||||
|     { | ||||
|         if ($this->memberships->contains($membership)) { | ||||
|             $this->memberships->removeElement($membership); | ||||
|             $membership->removeMember($this); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -11,29 +11,8 @@ use App\Entity\Attribut\SlugAttributInterface; | ||||
| use App\Entity\Attribut\MembersAttributInterface; | ||||
|  | ||||
| /** | ||||
|  * @todo Move the members functions to an member ship manager | ||||
|  * | ||||
|  * @author kevinfrantz | ||||
|  */ | ||||
| interface SourceInterface extends IdAttributInterface, EntityInterface, MembershipsAttributInterface, LawAttributInterface, RelationAttributInterface, SlugAttributInterface, MembersAttributInterface | ||||
| { | ||||
|     /** | ||||
|      * @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; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user