<?php
namespace App\Entity\ChannelUserData\Cursus;
use Nellapp\Bundle\SDKBundle\TrackData\Attribute\TrackEntity;
use Nellapp\Bundle\SDKBundle\TrackData\Attribute\TrackFIeld;
use App\Enum\ChannelUserData\Activity\CursusActivityTagEnum;
use App\Repository\ChannelUserData\Cursus\ExamRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
#[
ORM\Entity(repositoryClass: ExamRepository::class),
ORM\Table(name: 'channel_user_data_cursus_exam'),
TrackEntity(
name: 'exam.entity.track_data.entity.name',
fieldGroups: [
'exam' => [
'tags' => [ CursusActivityTagEnum::EXAM ]
]
],
)
]
class Exam
{
const ORAL_TYPE = 0;
const WRITE_TYPE = 1;
#[ORM\Id, ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private ?int $id = null;
#[ORM\Column(type: 'integer', nullable: false)]
private ?int $examOrder = null;
#[ORM\ManyToOne(targetEntity: AbstractCursus::class, inversedBy: 'exams')]
#[ORM\JoinColumn(nullable: false, onDelete: "CASCADE")]
private ?AbstractCursus $cursus = null;
#[ORM\Column(type: 'integer')]
private ?int $type = null;
#[ORM\Column(type: 'date')]
#[Assert\NotBlank]
#[TrackFIeld(name: 'exam.entity.happenAt.label', fieldKey: 'exam', callable: 'format', callableParams: ['d/m/Y'])]
private ?\DateTimeInterface $happenAt = null;
#[ORM\Column(type: 'time')]
#[Assert\NotBlank]
#[TrackFIeld(name: 'exam.entity.startAt.label', fieldKey: 'exam', callable: 'format', callableParams: ['H:i'])]
private ?\DateTimeInterface $startAt = null;
#[ORM\Column(type: 'time')]
#[Assert\NotBlank]
#[TrackFIeld(name: 'exam.entity.endAt.label', fieldKey: 'exam', callable: 'format', callableParams: ['H:i'])]
private ?\DateTimeInterface $endAt = null;
public function __toString(): string
{
return $this->getExamOrder();
}
public function getId(): ?int
{
return $this->id;
}
public function getType(): ?int
{
return $this->type;
}
public function setType(?int $type): Exam
{
$this->type = $type;
return $this;
}
public function getHappenAt(): ?\DateTimeInterface
{
return $this->happenAt;
}
public function setHappenAt(?\DateTimeInterface $happenAt): Exam
{
$this->happenAt = $happenAt;
return $this;
}
public function getStartAt(): ?\DateTimeInterface
{
return $this->startAt;
}
public function setStartAt(?\DateTimeInterface $startAt): Exam
{
$this->startAt = $startAt;
return $this;
}
public function getEndAt(): ?\DateTimeInterface
{
return $this->endAt;
}
public function setEndAt(?\DateTimeInterface $endAt): Exam
{
$this->endAt = $endAt;
return $this;
}
public function getCursus(): ?AbstractCursus
{
return $this->cursus;
}
public function setCursus(?AbstractCursus $cursus): Exam
{
$this->cursus = $cursus;
return $this;
}
public function getExamOrder(): ?int
{
return $this->examOrder;
}
public function setExamOrder(?int $examOrder): Exam
{
$this->examOrder = $examOrder;
return $this;
}
}