validation = $validator; $this->household = $household; } public function addMovement(\DateTimeImmutable $date, Person $person, Position $position, ?bool $holder = false, ?string $comment = null): self { if (NULL === $this->household) { throw new \LogicException("You must define a household first"); } $membership = (new HouseholdMember()) ->setStartDate($date) ->setPerson($person) ->setPosition($position) ->setHolder($holder) ->setHousehold($this->household) ->setComment($comment) ; if ($position->getShareHousehold()) { foreach ($person->getHouseholdParticipations() as $participation) { if (FALSE === $participation->getShareHousehold()) { continue; } if ($participation === $membership) { continue; } if ($participation->getEndDate() === NULL || $participation->getEndDate() > $date) { $participation->setEndDate($date); $this->membershipsAffected[] = $participation; } } } $this->membershipsAffected[] = $membership; $this->persistables[] = $membership; return $this; } public function validate(): ConstraintViolationListInterface { } public function getPersistable(): array { return $this->persistables; } public function getHousehold(): Household { return $this->household; } }