<?php
namespace App\Entity\Core;
use App\Entity\Core\Quiz\Quiz;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Table('publication')]
#[ORM\Entity(repositoryClass: PublicationRepository::class)]
class Publication
{
/**
* @var int
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
private int $id;
/**
* @var string
*/
#[ORM\Column(name: 'isbn', type: 'string', length: 32, nullable: false, unique: true)]
private string $isbn;
/**
* @var string
*/
#[ORM\Column(name: 'name', type: 'string', length: 255, nullable: false)]
private string $name;
/**
* @var int
*/
#[ORM\Column]
private int $timestamp;
/**
* @var bool
*/
#[ORM\Column]
private bool $deleted;
/**
* @var bool
*/
#[ORM\Column]
private bool $hidden;
/**
* @var bool
*/
#[ORM\Column(name: 'available_for_be_user_creation')]
private bool $availableForBackendUserCreation;
/**
* @var Publisher
*/
#[ORM\JoinColumn(name: 'publisher', referencedColumnName: 'id', nullable: false)]
#[ORM\ManyToOne(targetEntity: Publisher::class, inversedBy: 'publications', cascade: ['persist'])]
private Publisher $publisher;
/**
* @var Collection
*/
#[ORM\OneToMany(targetEntity: Quiz::class, mappedBy: 'publication', cascade: ['persist'])]
private Collection $quizzes;
public function getId(): int
{
return $this->id;
}
public function setId(int $id): void
{
$this->id = $id;
}
public function getName(): string
{
return $this->name;
}
public function setName(string $name): void
{
$this->name = $name;
}
public function getPublisher(): Publisher
{
return $this->publisher;
}
public function setPublisher(Publisher $publisher): void
{
$this->publisher = $publisher;
}
public function __toString() {
return $this->name;
}
public function getQuizzes(): Collection
{
return $this->quizzes;
}
public function setQuizzes(Collection $quizzes): void
{
$this->quizzes = $quizzes;
}
public function getIsbn(): string
{
return $this->isbn;
}
public function setIsbn(string $isbn): void
{
$this->isbn = $isbn;
}
public function getTimestamp(): int
{
return $this->timestamp;
}
public function setTimestamp(int $timestamp): void
{
$this->timestamp = $timestamp;
}
public function isDeleted(): bool
{
return $this->deleted;
}
public function setDeleted(bool $deleted): void
{
$this->deleted = $deleted;
}
public function isHidden(): bool
{
return $this->hidden;
}
public function setHidden(bool $hidden): void
{
$this->hidden = $hidden;
}
public function getNumberOfEnabledQuizzes(): int
{
$enabledQuizzes = $this->quizzes->filter(function (Quiz $quiz) {
return $quiz->getEnabled();
});
return $enabledQuizzes->count();
}
public function isAvailableForBackendUserCreation(): bool
{
return $this->availableForBackendUserCreation;
}
public function setAvailableForBackendUserCreation(bool $availableForBackendUserCreation): void
{
$this->availableForBackendUserCreation = $availableForBackendUserCreation;
}
}