<?php
namespace App\Entity\ChannelUserData\AdminChannelUserData\Document;
use App\Enum\ChannelUserData\Activity\AdminChannelUserDataActivityTagEnum;
use App\Enum\ChannelUserData\Document\AdminChannelUserDataDocumentTypeEnum;
use App\Enum\ChannelUserData\Document\AgreementStatusEnum;
use App\Repository\ChannelUserData\AdminChannelUserData\Document\AdminChannelUserDataAgreementRepository;
use Doctrine\ORM\Mapping as ORM;
use Nellapp\Bundle\SDKBundle\TrackData\Attribute\TrackEntity;
use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Entity(repositoryClass: AdminChannelUserDataAgreementRepository::class)]
#[ORM\Table('file_admin_channel_user_data_agreement')]
#[TrackEntity(fieldGroups: [
'documents' => [
'tags' => [AdminChannelUserDataActivityTagEnum::FILES],
]
])]
class AdminChannelUserDataAgreement extends AdminChannelUserDataDocument
{
public const VALIDITY_INTERVAL = '1 year';
#[ORM\Column(type: 'string', nullable: true)]
#[Assert\Choice(
callback: [AgreementStatusEnum::class, 'getChoices'],
message: 'adminChannelUser.document.choice.message',
)]
private ?string $status = null;
#[ORM\Column(type: 'datetime_immutable', nullable: true)]
private ?\DateTimeImmutable $signedAt = null;
#[ORM\Column(type: 'string', nullable: true)]
private ?string $refusalReason = null;
public function getDocumentType(): ?string
{
return AdminChannelUserDataDocumentTypeEnum::AGREEMENT;
}
public function getStatus(): ?string
{
return $this->status;
}
public function setStatus(?string $status): AdminChannelUserDataAgreement
{
$this->status = $status;
return $this;
}
public function getRefusalReason(): ?string
{
return $this->refusalReason;
}
public function setRefusalReason(?string $refusalReason): AdminChannelUserDataAgreement
{
$this->refusalReason = $refusalReason;
return $this;
}
public function getSignedAt(): ?\DateTimeImmutable
{
return $this->signedAt;
}
public function setSignedAt(?\DateTimeImmutable $signedAt): AdminChannelUserDataAgreement
{
$this->signedAt = $signedAt;
return $this;
}
public function getValidityInterval(): string
{
return self::VALIDITY_INTERVAL;
}
}