<?php
namespace App\Entity;
use App\Repository\PartnerCertificatesRepository;
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=PartnerCertificatesRepository::class)
*/
class PartnerCertificates
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Groups({
* "partner.manage.base",
* "partner.certificate.manage",
*
* "partner_certificate@core"
* })
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity=Partner::class, inversedBy="partnerCertificates")
*/
private $partner;
/**
* @ORM\ManyToOne(targetEntity=Certificates::class, inversedBy="partnerCertificates")
* @Groups({
* "partner.manage.base",
* "partner.certificate.manage",
*
* "partner_certificate@certificate"
* })
*/
private $certificate;
/**
* @ORM\Column(type="datetime_immutable")
* @Groups({
* "partner_certificate@core"
* })
*/
private $created_at;
/**
* @ORM\OneToMany(targetEntity=PartnerCertificateHistories::class, mappedBy="partner_certificate", cascade={"persist", "remove"}, fetch="EXTRA_LAZY")
* @ORM\OrderBy({"valid_from_at": "DESC"})
* @Groups({
* "partner.manage.base",
* "partner.certificate.manage",
*
* "partner_certificate@histories"
* })
*/
private $partner_certificate_histories;
// private $partnerCertificateLastHistory;
public function __construct()
{
$this->partner_certificate_histories = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getPartner(): ?Partner
{
return $this->partner;
}
public function setPartner(?Partner $partner): self
{
$this->partner = $partner;
return $this;
}
public function getCertificate(): ?Certificates
{
return $this->certificate;
}
public function setCertificate(?Certificates $certificate): self
{
$this->certificate = $certificate;
return $this;
}
public function getCreatedAt(): ?\DateTimeImmutable
{
return $this->created_at;
}
public function setCreatedAt(\DateTimeImmutable $created_at): self
{
$this->created_at = $created_at;
return $this;
}
/**
* @return Collection<int, PartnerCertificateHistories>
*/
public function getPartnerCertificatehistories(): Collection
{
return $this->partner_certificate_histories;
return $this->partner_certificate_histories->map( function( /**@var $partnerCertificateHistory PartnerCertificateHistories*/ $partnerCertificateHistory ){
return [
'id' => $partnerCertificateHistory->getId(),
'createdAt' => $partnerCertificateHistory->getCreatedAt(),
'partnerCertificateDocuments' => $partnerCertificateHistory->getPartnerCertificatedocuments()
];
});
}
// public function getPartnerCertificateLastHistory(): ?PartnerCertificateHistories {
// if( $this->partnerCertificateHistories->first() instanceof PartnerCertificateHistories ){
// $this->partnerCertificateLastHistory = $this->partnerCertificateHistories->first();
// return $this->partnerCertificateLastHistory;
// }
// return null;
// }
public function addPartnerCertificateHistory(PartnerCertificateHistories $partnerCertificateHistory): self
{
if (!$this->partner_certificate_histories->contains($partnerCertificateHistory)) {
$this->partner_certificate_histories[] = $partnerCertificateHistory;
$partnerCertificateHistory->setPartnerCertificate($this);
}
return $this;
}
public function removePartnerCertificateHistory(PartnerCertificateHistories $partnerCertificateHistory): self
{
if ($this->partner_certificate_histories->removeElement($partnerCertificateHistory)) {
// set the owning side to null (unless already changed)
if ($partnerCertificateHistory->getPartnerCertificate() === $this) {
$partnerCertificateHistory->setPartnerCertificate(null);
}
}
return $this;
}
}