<?php
namespace CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use JsonSerializable;
use UserBundle\Entity\User;
/**
* @ORM\Table("dictate_session")
* @ORM\Entity(repositoryClass="CoreBundle\Entity\DictateSessionRepository")
*/
class DictateSession implements JsonSerializable
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var Dictate
*
* @ORM\ManyToOne(targetEntity="CoreBundle\Entity\Dictate")
* @ORM\JoinColumn(name="dictate", referencedColumnName="id")
*/
private $dictate;
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="UserBundle\Entity\User")
* @ORM\JoinColumn(name="created_by", referencedColumnName="id")
*/
private $createdBy;
/**
* @var Classroom
*
* @ORM\ManyToOne(targetEntity="CoreBundle\Entity\Classroom")
*/
private $classroom;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, nullable=true)
*/
private $name;
/**
* @var \DateTime
*
* @ORM\Column(name="startTime", type="datetime", nullable=true)
*/
private $startTime;
/**
* @var \DateTime
* @ORM\Column(name="deadline", type="datetime", nullable=true)
*/
private $deadline;
/**
* @var \DateTime
*
* @ORM\Column(name="createdAt", type="datetime", nullable=false)
*/
private $createdAt;
/**
* @var DictateUnit[]
*
* @ORM\OneToMany(targetEntity="CoreBundle\Entity\DictateUnit", mappedBy="dictateSession", cascade={"persist"})
*/
private $dictateUnits;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private ?bool $deleted;
/**
* @var int
*
* @ORM\Column(type="smallint", nullable=true)
*/
private ?int $duration;
/**
* DictateSession constructor.
* @throws \Exception
*/
public function __construct()
{
$this->createdAt = new \DateTime('now', new \DateTimeZone('Europe/Copenhagen'));
$this->dictateUnits = new ArrayCollection();
$this->startTime = new \DateTime("now");
$this->deadline = new \DateTime("+1DAY");
}
/**
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* @param int $id
*/
public function setId(int $id): void
{
$this->id = $id;
}
/**
* @return Dictate
*/
public function getDictate()
{
return $this->dictate;
}
/**
* @param Dictate $dictate
*/
public function setDictate(Dictate $dictate): void
{
$this->dictate = $dictate;
}
/**
* @return User
*/
public function getCreatedBy()
{
return $this->createdBy;
}
/**
* @param User $createdBy
*/
public function setCreatedBy(User $createdBy): void
{
$this->createdBy = $createdBy;
}
/**
* @return Classroom
*/
public function getClassroom()
{
return $this->classroom;
}
/**
* @param Classroom $classroom
*/
public function setClassroom(Classroom $classroom): void
{
$this->classroom = $classroom;
}
/**
* @return string
*/
public function getName()
{
return $this->name;
}
public function setName(?string $name): void
{
$this->name = $name;
}
/**
* @return \DateTime
*/
public function getStartTime()
{
return $this->startTime;
}
/**
* @param \DateTime $startTime
*/
public function setStartTime(\DateTime $startTime): void
{
$this->startTime = $startTime;
}
/**
* @return \DateTime
*/
public function getDeadline()
{
return $this->deadline;
}
/**
* @param \DateTime $deadline
*/
public function setDeadline(\DateTime $deadline): void
{
$this->deadline = $deadline;
}
/**
* @return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* @param \DateTime $createdAt
*/
public function setCreatedAt(\DateTime $createdAt): void
{
$this->createdAt = $createdAt;
}
/**
* @return DictateUnit[]
*/
public function getDictateUnits()
{
return $this->dictateUnits;
}
/**
* @param DictateUnit[] $dictateUnits
*/
public function setDictateUnits(array $dictateUnits): void
{
$this->dictateUnits = $dictateUnits;
}
public function isDeleted(): ?bool
{
return $this->deleted;
}
public function setDeleted(bool $deleted): void
{
$this->deleted = $deleted;
}
public function getDuration(): ?int
{
return $this->duration;
}
public function setDuration(?int $duration)
{
$this->duration = $duration;
}
public function jsonSerialize(): array
{
return [
'id' => $this->getId(),
'name' => $this->getName(),
'deadline' => $this->getDeadline(),
'startTime' => $this->getStartTime(),
'duration' => $this->getDuration(),
// Add other fields as needed
];
}
}