<?php
namespace MedBrief\MSR\Entity;
use DH\Auditor\Provider\Doctrine\Auditing\Annotation as Audit;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection as DoctrineCollection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use MedBrief\MSR\Entity\Embeddable\RecordsReceived;
use MedBrief\MSR\Entity\Serviceable\ServiceableInterface;
use MedBrief\MSR\Entity\Serviceable\ServiceableTrait;
use MedBrief\MSR\Repository\AdditionalRequestRepository;
/**
* @ORM\Table(name="AdditionalRequest")
*
* @ORM\Entity(repositoryClass=AdditionalRequestRepository::class)
*
* @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false)
*
* @Audit\Auditable
*
* @Audit\Security(view={"ROLE_ALLOWED_TO_AUDIT"})
*/
class AdditionalRequest implements ServiceableInterface
{
use ServiceableTrait;
/**
* @var ServiceRequest
*
* @ORM\OneToOne(targetEntity="MedBrief\MSR\Entity\ServiceRequest", mappedBy="additionalRequest", cascade={"persist"})
*/
protected $serviceRequest;
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
*
* @ORM\Id
*
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $id;
/**
* @var \DateTime|null
*
* @ORM\Column(name="dateReceived", type="date", nullable=true)
*/
protected $dateReceived;
/**
* @var \DateTime|null
*
* @ORM\Column(name="dateProcessed", type="date", nullable=true)
*/
protected $dateProcessed;
/**
* @var \DateTime|null
*
* @ORM\Column(name="dateDestroyedOrReturned", type="date", nullable=true)
*/
protected $dateDestroyedOrReturned;
/**
* @var int|null
*
* @ORM\Column(name="numberOfUnits", type="integer", nullable=true)
*/
protected $numberOfUnits;
/**
* @var string|null
*
* @ORM\Column(name="receivedFrom", type="string", nullable=true)
*/
protected $receivedFrom;
/**
* @var BillingItem
*
* @ORM\ManyToOne(targetEntity="MedBrief\MSR\Entity\BillingItem")
*
* @ORM\JoinColumns({
*
* @ORM\JoinColumn(name="serviceItem_id", referencedColumnName="id")
* })
*/
protected $serviceItem;
/**
* @var Project
*
* @ORM\ManyToOne(targetEntity="MedBrief\MSR\Entity\Project", inversedBy="additionalRequests")
*
* @ORM\JoinColumns({
*
* @ORM\JoinColumn(name="project_id", referencedColumnName="id")
* })
*/
protected $project;
/**
* @var RecordsReceived
*
* @ORM\Embedded(class="MedBrief\MSR\Entity\Embeddable\RecordsReceived", columnPrefix="recordsReceived_")
*/
protected $recordsReceived;
/**
* @var \DateTime
*
* @ORM\Column(name="created", type="datetime")
*
* @Gedmo\Timestampable(on="create")
*/
protected $created;
/**
* @var \DateTime
*
* @ORM\Column(name="updated", type="datetime")
*
* @Gedmo\Timestampable(on="update")
*/
protected $updated;
/**
* @var \DateTime|null
*
* @ORM\Column(name="deletedAt", type="datetime", nullable=true)
*/
protected $deletedAt;
/**
* @ORM\OneToMany(targetEntity=InterpartyDisclosureRecipientFirm::class, mappedBy="additionalRequest")
*/
private ?DoctrineCollection $recipientFirms;
/**
* Constructor
*
* @return void
*/
public function __construct()
{
$this->recordsReceived = new RecordsReceived();
$this->recipientFirms = new ArrayCollection();
}
/**
* __toString
*
* @return string
*/
public function __toString()
{
return (string) $this->getId();
}
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set dateReceived
*
* @param \DateTime $dateReceived
*
* @return AdditionalRequest
*/
public function setDateReceived($dateReceived)
{
$this->dateReceived = $dateReceived;
return $this;
}
/**
* Get dateReceived
*
* @return \DateTime
*/
public function getDateReceived()
{
return $this->dateReceived;
}
/**
* Set dateProcessed
*
* @param \DateTime $dateProcessed
*
* @return AdditionalRequest
*/
public function setDateProcessed($dateProcessed)
{
$this->dateProcessed = $dateProcessed;
return $this;
}
/**
* Get dateProcessed
*
* @return \DateTime
*/
public function getDateProcessed()
{
return $this->dateProcessed;
}
/**
* Set dateDestroyedOrReturned
*
* @param \DateTime $dateDestroyedOrReturned
*
* @return AdditionalRequest
*/
public function setDateDestroyedOrReturned($dateDestroyedOrReturned)
{
$this->dateDestroyedOrReturned = $dateDestroyedOrReturned;
return $this;
}
/**
* Get dateDestroyedOrReturned
*
* @return \DateTime
*/
public function getDateDestroyedOrReturned()
{
return $this->dateDestroyedOrReturned;
}
/**
* Set numberOfUnits
*
* @param int $numberOfUnits
*
* @return AdditionalRequest
*/
public function setNumberOfUnits($numberOfUnits)
{
$this->numberOfUnits = $numberOfUnits;
return $this;
}
/**
* Get numberOfUnits
*
* @return int
*/
public function getNumberOfUnits()
{
return $this->numberOfUnits;
}
/**
* Set receivedFrom
*
* @param string $receivedFrom
*
* @return AdditionalRequest
*/
public function setReceivedFrom($receivedFrom)
{
$this->receivedFrom = $receivedFrom;
return $this;
}
/**
* Get receivedFrom
*
* @return string
*/
public function getReceivedFrom()
{
return $this->receivedFrom;
}
/**
* Set created
*
* @param \DateTime $created
*
* @return AdditionalRequest
*/
public function setCreated($created)
{
$this->created = $created;
return $this;
}
/**
* Get created
*
* @return \DateTime
*/
public function getCreated()
{
return $this->created;
}
/**
* Set updated
*
* @param \DateTime $updated
*
* @return AdditionalRequest
*/
public function setUpdated($updated)
{
$this->updated = $updated;
return $this;
}
/**
* Get updated
*
* @return \DateTime
*/
public function getUpdated()
{
return $this->updated;
}
/**
* Set deletedAt
*
* @param \DateTime $deletedAt
*
* @return AdditionalRequest
*/
public function setDeletedAt($deletedAt)
{
$this->deletedAt = $deletedAt;
return $this;
}
/**
* Get deletedAt
*
* @return \DateTime
*/
public function getDeletedAt()
{
return $this->deletedAt;
}
/**
* Set serviceItem
*
* @param BillingItem $serviceItem
*
* @return AdditionalRequest
*/
public function setServiceItem(?BillingItem $serviceItem = null)
{
$this->serviceItem = $serviceItem;
return $this;
}
/**
* Get serviceItem
*
* @return BillingItem
*/
public function getServiceItem()
{
return $this->serviceItem;
}
/**
* Set project
*
* @param Project $project
*
* @return AdditionalRequest
*/
public function setProject(?Project $project = null)
{
$this->project = $project;
return $this;
}
/**
* Get project
*
* @return Project
*/
public function getProject()
{
return $this->project;
}
/**
* Set recordsReceived
*
* @param RecordsReceived $recordsReceived
*
* @return AdditionalRequest
*/
public function setRecordsReceived(RecordsReceived $recordsReceived)
{
$this->recordsReceived = $recordsReceived;
return $this;
}
/**
* Get recordsReceived
*
* @return RecordsReceived
*/
public function getRecordsReceived()
{
return $this->recordsReceived;
}
/**
* @return DoctrineCollection<int, InterpartyDisclosureRecipientFirm>
*/
public function getRecipientFirms(): DoctrineCollection
{
return $this->recipientFirms;
}
public function addRecipientFirm(InterpartyDisclosureRecipientFirm $recipientFirm): self
{
if (!$this->recipientFirms->contains($recipientFirm)) {
$this->recipientFirms[] = $recipientFirm;
$recipientFirm->setAdditionalRequest($this);
}
return $this;
}
public function removeRecipientFirm(InterpartyDisclosureRecipientFirm $recipientFirm): self
{
if ($this->recipientFirms->removeElement($recipientFirm)) {
// set the owning side to null (unless already changed)
if ($recipientFirm->getAdditionalRequest() === $this) {
$recipientFirm->setAdditionalRequest(null);
}
}
return $this;
}
}