comment; } public function getEndDate(): ?DateTimeImmutable { return $this->endDate; } public function getHousehold(): ?Household { return $this->household; } public function getId(): ?int { return $this->id; } public function getPerson(): ?Person { return $this->person; } public function getPosition(): ?Position { return $this->position; } /** * @Serializer\Groups({"read"}) */ public function getShareHousehold(): ?bool { return $this->shareHousehold; } public function getStartDate(): ?DateTimeImmutable { return $this->startDate; } public function isCurrent(?DateTimeImmutable $at = null): bool { $at = null === $at ? new DateTimeImmutable('now') : $at; return $this->getStartDate() < $at && ( null === $this->getEndDate() || $this->getEndDate() > $at ); } public function isHolder(): bool { return $this->holder; } public function setComment(?string $comment): self { $this->comment = $comment; return $this; } public function setEndDate(?DateTimeImmutable $endDate = null): self { $this->endDate = $endDate; return $this; } public function setHolder(bool $holder): self { $this->holder = $holder; return $this; } public function setHousehold(?Household $household): self { if ($this->household instanceof Household) { throw new LogicException('You cannot change household ' . 'on a membership'); } $this->household = $household; return $this; } public function setPerson(?Person $person): self { if ($this->person instanceof Person) { throw new LogicException('You cannot change person ' . 'on a membership'); } $this->person = $person; $this->person->addHouseholdParticipation($this); return $this; } public function setPosition(?Position $position): self { if ($this->position instanceof Position && $this->position !== $position) { throw new LogicException('The position is already set. You cannot change ' . 'a position of a membership'); } $this->position = $position; if (null !== $position) { $this->shareHousehold = $position->getShareHousehold(); } return $this; } public function setShareHousehold(bool $shareHousehold): self { $this->shareHousehold = $shareHousehold; return $this; } public function setStartDate(DateTimeImmutable $startDate): self { $this->startDate = $startDate; return $this; } }