<?php
namespace App\Entity;
use App\Asistencia\Entity\Anuncio;
use App\Asistencia\Entity\Clase;
use App\Asistencia\Entity\Evaluacion;
use App\Core\Entity\CategoriaCurso;
use App\Core\Entity\Chat\Conversacion;
use App\Core\Entity\Color;
use App\Core\Entity\Curso;
use App\Core\Entity\Direccion;
use App\Core\Entity\EstudianteCurso;
use App\Core\Entity\EstudianteCursoRol;
use App\Core\Entity\Horario;
use App\Core\Entity\Institucion\Nivel;
use App\Core\Entity\Maestro;
use App\Core\Entity\MaestroCurso;
use App\Core\Entity\Notificacion;
use App\Core\Entity\PuntuacionCurso;
use App\Core\Entity\SolicitudAsignacion;
use App\Core\Entity\Subscripciones\HistorialPagoSubscripcion;
use App\Core\Entity\Subscripciones\PagoSubscripcion;
use App\Repository\MateriaRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\Serializer\Annotation\Groups;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @ORM\Entity(repositoryClass=MateriaRepository::class)
*/
class Materia
{
const JSON_FIELDS = ['id', 'nombre', 'abreviatura', 'curso' => ["id", "nivel"]];
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Groups("materia")
*/
private $id;
/**
* @ORM\Column(type="string", length=100)
* @Groups("materia")
*/
private $nombre;
/**
* @ORM\Column(type="text")
* @Groups("materia")
*/
private $abreviatura;
/**
* @ORM\OneToOne(targetEntity=Curso::class, mappedBy="materia", cascade={"persist", "remove"})
*/
private $curso;
/**
* @ORM\ManyToOne(targetEntity=Materia::class, inversedBy="MateriaClon")
*/
private $materia;
/**
* @ORM\OneToMany(targetEntity=Materia::class, mappedBy="materia")
*/
private $MateriaClon;
public function __construct()
{
$this->MateriaClon = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getNombre(): ?string
{
return $this->nombre;
}
public function setNombre(string $nombre): self
{
$this->nombre = $nombre;
return $this;
}
public function getAbreviatura(): ?string
{
return $this->abreviatura;
}
public function setAbreviatura(string $abreviatura): self
{
$this->abreviatura = $abreviatura;
return $this;
}
public function getCurso(): ?Curso
{
return $this->curso;
}
public function setCurso(?Curso $curso): self
{
$this->curso = $curso;
return $this;
}
public function getMateria(): ?self
{
return $this->materia;
}
public function setMateria(?self $materia): self
{
$this->materia = $materia;
return $this;
}
/**
* @return Collection<int, self>
*/
public function getMateriaClon(): Collection
{
return $this->MateriaClon;
}
public function addMateriaClon(self $materiaClon): self
{
if (!$this->MateriaClon->contains($materiaClon)) {
$this->MateriaClon[] = $materiaClon;
$materiaClon->setMateria($this);
}
return $this;
}
public function removeMateriaClon(self $materiaClon): self
{
if ($this->MateriaClon->removeElement($materiaClon)) {
// set the owning side to null (unless already changed)
if ($materiaClon->getMateria() === $this) {
$materiaClon->setMateria(null);
}
}
return $this;
}
}