. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Modules\Crm\Entities; use Espo\Core\Field\DateTimeOptional; use Espo\Core\Field\Link; use Espo\Core\Field\LinkMultiple; use Espo\Core\Field\LinkParent; use Espo\Core\Name\Field; use Espo\Core\ORM\Entity; use Espo\Entities\Attachment; use Espo\Entities\User; use Espo\ORM\Collection; class Task extends Entity { public const ENTITY_TYPE = 'Task'; public const STATUS_NOT_STARTED = 'Not Started'; public const STATUS_STARTED = 'Started'; public const STATUS_COMPLETED = 'Completed'; public const STATUS_CANCELED = 'Canceled'; public const STATUS_DEFERRED = 'Deferred'; public function getStatus(): ?string { return $this->get('status'); } public function getDateStart(): ?DateTimeOptional { /** @var ?DateTimeOptional */ return $this->getValueObject('dateStart'); } public function setDateStart(?DateTimeOptional $dateStart): void { $this->setValueObject('dateStart', $dateStart); } public function getDateEnd(): ?DateTimeOptional { /** @var ?DateTimeOptional */ return $this->getValueObject('dateEnd'); } public function setDateEnd(?DateTimeOptional $dateEnd): void { $this->setValueObject('dateEnd', $dateEnd); } public function getAssignedUser(): ?Link { /** @var ?Link */ return $this->getValueObject(Field::ASSIGNED_USER); } public function getTeams(): LinkMultiple { /** @var LinkMultiple */ return $this->getValueObject(Field::TEAMS); } /** * @return string[] */ public function getAttachmentIdList(): array { /** @var string[] */ return $this->getLinkMultipleIdList('attachments'); } public function setParent(Entity|LinkParent|null $parent): self { if ($parent instanceof LinkParent) { $this->setValueObject(Field::PARENT, $parent); return $this; } $this->relations->set(Field::PARENT, $parent); return $this; } /** * @return iterable */ public function getAttachments(): iterable { /** @var Collection */ return $this->relations->getMany('attachments'); } public function setAssignedUser(Link|User|null $assignedUser): self { return $this->setRelatedLinkOrEntity('assignedUser', $assignedUser); } public function setTeams(LinkMultiple $teams): self { $this->setValueObject('teams', $teams); return $this; } }