<?php
namespace App\Core\Entity;
use App\Core\Entity\Subscripciones\HistorialPagoSubscripcion;
use App\Core\Entity\Subscripciones\PagoSubscripcion;
use App\Entity\EstudianteCursoNotaFinal;
use App\Entity\FichaEstudiantil;
use App\Entity\NotaFinal;
use App\Entity\TareaEstudiante;
use App\Entity\TareaEstudianteArchivo;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass="App\Core\Repository\EstudianteRepository")
*/
class Estudiante
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Groups("main")
*/
private $id;
/**
* @ORM\OneToOne(targetEntity="App\Core\Entity\User", inversedBy="estudiante", cascade={"persist", "remove"})
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @ORM\OneToMany(targetEntity="App\Core\Entity\EstudianteCurso", mappedBy="estudiante")
*/
private $estudianteCursos;
/**
* @ORM\OneToMany(targetEntity=PuntuacionEstudiante::class, mappedBy="estudiante", orphanRemoval=true)
*/
private $puntuaciones;
/**
* @ORM\Column(type="float", nullable=true)
*/
private $puntuacionPromedio;
/**
* @ORM\OneToMany(targetEntity=PagoSubscripcion::class, mappedBy="estudiante")
*/
private $pagosSubscripcion;
/**
* @ORM\OneToMany(targetEntity=HistorialPagoSubscripcion::class, mappedBy="estudiante")
*/
private $historialPagosSubscripcion;
/**
* @ORM\OneToMany(targetEntity=EstudianteCursoRol::class, mappedBy="estudiante")
*/
private $estudianteCursoRols;
/**
* @ORM\OneToMany(targetEntity=TareaEstudiante::class, mappedBy="estudiante")
*/
private $tareaEstudiantes;
/**
* @ORM\OneToMany(targetEntity=EstudianteCursoNotaFinal::class, mappedBy="estudiante")
*/
private $estudianteCursoNotaFinals;
/**
* @ORM\OneToOne(targetEntity=FichaEstudiantil::class, mappedBy="estudiante", cascade={"persist", "remove"})
*/
private $fichaEstudiantil;
public function __construct()
{
$this->estudianteCursos = new ArrayCollection();
$this->puntuaciones = new ArrayCollection();
$this->pagosSubscripcion = new ArrayCollection();
$this->historialPagosSubscripcion = new ArrayCollection();
$this->estudianteCursoRols = new ArrayCollection();
$this->tareaEstudiantes = new ArrayCollection();
$this->estudianteCursoNotaFinals = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(User $user): self
{
$this->user = $user;
return $this;
}
/**
* @return Collection|EstudianteCurso[]
*/
public function getEstudianteCursos(): Collection
{
return $this->estudianteCursos;
}
public function addEstudianteCurso(EstudianteCurso $estudianteCurso): self
{
if (!$this->estudianteCursos->contains($estudianteCurso)) {
$this->estudianteCursos[] = $estudianteCurso;
$estudianteCurso->setEstudiante($this);
}
return $this;
}
public function removeEstudianteCurso(EstudianteCurso $estudianteCurso): self
{
if ($this->estudianteCursos->contains($estudianteCurso)) {
$this->estudianteCursos->removeElement($estudianteCurso);
// set the owning side to null (unless already changed)
if ($estudianteCurso->getEstudiante() === $this) {
$estudianteCurso->setEstudiante(null);
}
}
return $this;
}
public function getCantidadCursosActivos() {
$relaciones = $this->getEstudianteCursos();
$cantidad = 0;
for ($i = 0; $i < count($relaciones); $i++) {
$curso = $relaciones[$i]->getCurso();
if($curso->getEstado()) {
$cantidad++;
}
}
return $cantidad;
}
public function getCantidadCursosActivosPrivados() {
$relaciones = $this->getEstudianteCursos();
$cantidad = 0;
for ($i = 0; $i < count($relaciones); $i++) {
$curso = $relaciones[$i]->getCurso();
if($curso->getEstado() && $curso->getPrivado()) {
$cantidad++;
}
}
return $cantidad;
}
public function getCantidadCursosActivosAbiertos() {
$relaciones = $this->getEstudianteCursos();
$cantidad = 0;
for ($i = 0; $i < count($relaciones); $i++) {
$curso = $relaciones[$i]->getCurso();
if($curso->getEstado() && !$curso->getPrivado()) {
$cantidad++;
}
}
return $cantidad;
}
public function getCantidadCursosArchivados() {
return count($this->getEstudianteCursos()) - $this->getCantidadCursosActivos();
}
/**
* @return Collection|PuntuacionEstudiante[]
*/
public function getPuntuaciones(): Collection
{
return $this->puntuaciones;
}
public function addPuntuacione(PuntuacionEstudiante $puntuacion): self
{
if (!$this->puntuaciones->contains($puntuacion)) {
$this->puntuaciones[] = $puntuacion;
$puntuacion->setEstudiante($this);
}
return $this;
}
public function removePuntuacione(PuntuacionEstudiante $puntuacion): self
{
if ($this->puntuaciones->contains($puntuacion)) {
$this->puntuaciones->removeElement($puntuacion);
// set the owning side to null (unless already changed)
if ($puntuacion->getEstudiante() === $this) {
$puntuacion->setEstudiante(null);
}
}
return $this;
}
/**
* @return Collection|PagoSubscripcion[]
*/
public function getPagosSubscripcion(): Collection
{
return $this->pagosSubscripcion;
}
public function addPagosSubscripcion(PagoSubscripcion $pagosSubscripcion): self
{
if (!$this->pagosSubscripcion->contains($pagosSubscripcion)) {
$this->pagosSubscripcion[] = $pagosSubscripcion;
$pagosSubscripcion->setEstudiante($this);
}
return $this;
}
public function removePagosSubscripcion(PagoSubscripcion $pagosSubscripcion): self
{
if ($this->pagosSubscripcion->removeElement($pagosSubscripcion)) {
// set the owning side to null (unless already changed)
if ($pagosSubscripcion->getEstudiante() === $this) {
$pagosSubscripcion->setEstudiante(null);
}
}
return $this;
}
/**
* @return Collection|HistorialPagoSubscripcion[]
*/
public function getHistorialPagosSubscripcion(): Collection
{
return $this->historialPagosSubscripcion;
}
/**
* @return ?float
*/
public function getPuntuacionPromedio(): ?float
{
return $this->puntuacionPromedio;
}
/**
* @param float $puntuacionPromedio
*/
public function setPuntuacionPromedio(float $puntuacionPromedio): void
{
$this->puntuacionPromedio = $puntuacionPromedio;
}
/**
* @return Collection<int, EstudianteCursoRol>
*/
public function getEstudianteCursoRols(): Collection
{
return $this->estudianteCursoRols;
}
public function addEstudianteCursoRol(EstudianteCursoRol $estudianteCursoRol): self
{
if (!$this->estudianteCursoRols->contains($estudianteCursoRol)) {
$this->estudianteCursoRols[] = $estudianteCursoRol;
$estudianteCursoRol->setEstudiante($this);
}
return $this;
}
public function removeEstudianteCursoRol(EstudianteCursoRol $estudianteCursoRol): self
{
if ($this->estudianteCursoRols->removeElement($estudianteCursoRol)) {
// set the owning side to null (unless already changed)
if ($estudianteCursoRol->getEstudiante() === $this) {
$estudianteCursoRol->setEstudiante(null);
}
}
return $this;
}
/**
* @return Collection<int, TareaEstudiante>
*/
public function getTareaEstudiantes(): Collection
{
return $this->tareaEstudiantes;
}
public function addTareaEstudiante(TareaEstudiante $tareaEstudiante): self
{
if (!$this->tareaEstudiantes->contains($tareaEstudiante)) {
$this->tareaEstudiantes[] = $tareaEstudiante;
$tareaEstudiante->setEstudiante($this);
}
return $this;
}
public function removeTareaEstudiante(TareaEstudiante $tareaEstudiante): self
{
if ($this->tareaEstudiantes->removeElement($tareaEstudiante)) {
// set the owning side to null (unless already changed)
if ($tareaEstudiante->getEstudiante() === $this) {
$tareaEstudiante->setEstudiante(null);
}
}
return $this;
}
/**
* @return Collection<int, EstudianteCursoNotaFinal>
*/
public function getEstudianteCursoNotaFinals(): Collection
{
return $this->estudianteCursoNotaFinals;
}
public function addEstudianteCursoNotaFinal(EstudianteCursoNotaFinal $estudianteCursoNotaFinal): self
{
if (!$this->estudianteCursoNotaFinals->contains($estudianteCursoNotaFinal)) {
$this->estudianteCursoNotaFinals[] = $estudianteCursoNotaFinal;
$estudianteCursoNotaFinal->setEstudiante($this);
}
return $this;
}
public function removeEstudianteCursoNotaFinal(EstudianteCursoNotaFinal $estudianteCursoNotaFinal): self
{
if ($this->estudianteCursoNotaFinals->removeElement($estudianteCursoNotaFinal)) {
// set the owning side to null (unless already changed)
if ($estudianteCursoNotaFinal->getEstudiante() === $this) {
$estudianteCursoNotaFinal->setEstudiante(null);
}
}
return $this;
}
public function getNotaFinalCurso(Curso $curso, NotaFinal $notaFinal){
}
public function getFichaEstudiantil(): ?FichaEstudiantil
{
return $this->fichaEstudiantil;
}
public function setFichaEstudiantil(?FichaEstudiantil $fichaEstudiantil): self
{
// unset the owning side of the relation if necessary
if ($fichaEstudiantil === null && $this->fichaEstudiantil !== null) {
$this->fichaEstudiantil->setEstudiante(null);
}
// set the owning side of the relation if necessary
if ($fichaEstudiantil !== null && $fichaEstudiantil->getEstudiante() !== $this) {
$fichaEstudiantil->setEstudiante($this);
}
$this->fichaEstudiantil = $fichaEstudiantil;
return $this;
}
}