. * * 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\Link; use Espo\Core\Field\LinkMultiple; use Espo\Core\Name\Field; use Espo\Core\ORM\Entity; use Espo\Entities\Attachment; use Espo\Entities\User; use RuntimeException; class Document extends Entity { public const ENTITY_TYPE = 'Document'; public const STATUS_ACTIVE = 'Active'; public const STATUS_DRAFT = 'Draft'; public function getName(): ?string { return $this->get(Field::NAME); } public function setFile(?Attachment $file): self { $this->relations->set('file', $file); return $this; } public function getFileId(): ?string { return $this->get('fileId'); } public function getFile(): ?Attachment { $file = $this->relations->getOne('file'); if ($file && !$file instanceof Attachment) { throw new RuntimeException(); } return $file; } public function getStatus(): ?string { return $this->get('status'); } public function setStatus(string $status): self { return $this->set('status', $status); } public function getAssignedUser(): ?Link { /** @var ?Link */ return $this->getValueObject(Field::ASSIGNED_USER); } public function getTeams(): LinkMultiple { /** @var LinkMultiple */ return $this->getValueObject(Field::TEAMS); } public function setAssignedUser(Link|User|null $assignedUser): self { return $this->setRelatedLinkOrEntity(Field::ASSIGNED_USER, $assignedUser); } public function setTeams(LinkMultiple $teams): self { $this->setValueObject(Field::TEAMS, $teams); return $this; } }