<?php
namespace App\Entity;
use App\Repository\StudentScolarityRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation\Groups;
#[ORM\Entity(repositoryClass: StudentScolarityRepository::class)]
class StudentScolarity
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
#[Groups(['getScolarity', 'getScolarityHistory'])]
private ?int $id = null;
#[ORM\ManyToOne(inversedBy: 'studentScolarities', cascade: ["persist"])]
#[ORM\JoinColumn(nullable: false)]
#[Groups(['getScolarity'])]
private ?StudentYear $student = null;
#[ORM\ManyToOne(inversedBy: 'studentScolarities', cascade: ["persist"])]
#[ORM\JoinColumn(nullable: false)]
#[Groups(['getScolarity', 'getScolarityHistory'])]
private ?Scolarity $scolarity = null;
#[ORM\Column]
#[Groups(['getScolarity'])]
private ?int $amount = null;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
#[Groups(['getScolarity'])]
private ?\DateTimeInterface $datePaid = null;
#[ORM\ManyToMany(targetEntity: ScolarityHistory::class, mappedBy: 'scolarities', cascade: ["persist"])]
#[Groups(['getScolarity'])]
private Collection $scolarityHistories;
#[ORM\OneToMany(mappedBy: 'scolarity', targetEntity: ScolarityHistoryEdition::class)]
private Collection $scolarityHistoryEditions;
public function __construct()
{
$this->scolarityHystories = new ArrayCollection();
$this->scolarityHistoryEditions = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getStudent(): ?StudentYear
{
return $this->student;
}
public function setStudent(?StudentYear $student): static
{
$this->student = $student;
return $this;
}
public function getScolarity(): ?Scolarity
{
return $this->scolarity;
}
public function setScolarity(?Scolarity $scolarity): static
{
$this->scolarity = $scolarity;
return $this;
}
public function getAmount(): ?int
{
return $this->amount;
}
public function setAmount(int $amount): static
{
$this->amount = $amount;
return $this;
}
public function getDatePaid(): ?\DateTimeInterface
{
return $this->datePaid;
}
public function setDatePaid(?\DateTimeInterface $datePaid): static
{
$this->datePaid = $datePaid;
return $this;
}
/**
* @return Collection<int, ScolarityHystory>
*/
public function getScolarityHistories(): Collection
{
return $this->scolarityHistories;
}
public function addScolarityHistory(ScolarityHistory $scolarityHistory): static
{
if (!$this->scolarityHistories->contains($scolarityHistory)) {
$this->scolarityHistories->add($scolarityHistory);
$scolarityHistory->addScolarity($this);
}
return $this;
}
public function removeScolarityHystory(ScolarityHistory $scolarityHistory): static
{
if ($this->scolarityHistories->removeElement($scolarityHistory)) {
$scolarityHistory->removeScolarity($this);
}
return $this;
}
/**
* @return Collection<int, ScolarityHistoryEdition>
*/
public function getScolarityHistoryEditions(): Collection
{
return $this->scolarityHistoryEditions;
}
public function addScolarityHistoryEditon(ScolarityHistoryEdition $scolarityHistoryEdition): static
{
if (!$this->scolarityHistoryEditions->contains($scolarityHistoryEdition)) {
$this->scolarityHistoryEditions->add($scolarityHistoryEdition);
$scolarityHistoryEdition->setScolarity($this);
}
return $this;
}
public function removeScolarityHistoryEditon(ScolarityHistoryEdition $scolarityHistoryEdition): static
{
if ($this->scolarityHistoryEditions->removeElement($scolarityHistoryEdition)) {
// set the owning side to null (unless already changed)
if ($scolarityHistoryEdition->getScolarity() === $this) {
$scolarityHistoryEdition->setScolarity(null);
}
}
return $this;
}
}