<?php
namespace MedBrief\MSR\Entity;
use DH\Auditor\Provider\Doctrine\Auditing\Annotation as Audit;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* ExpertAgency
*
* @ORM\Table(name="expert_agency", uniqueConstraints={@ORM\UniqueConstraint(name="reference_idx", columns={"contact_email", "deletedAt"})})
*
* @ORM\Entity
*
* @ORM\HasLifecycleCallbacks
*
* @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false)
*
* @Audit\Auditable
*
* @Audit\Security(view={"ROLE_ALLOWED_TO_AUDIT"})
*/
class ExpertAgency
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
*
* @ORM\Id
*
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var \DateTime|null
*
* @ORM\Column(name="deletedAt", type="datetime", nullable=true)
*/
private $deletedAt;
/**
* @var string
*
* @ORM\Column(name="name", type="string", nullable=false)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="contact_email", type="string", nullable=false)
*/
private $contact_email;
/**
* @var \DateTime
*
* @ORM\Column(name="created", type="datetime")
*
* @Gedmo\Timestampable(on="create")
*/
private $created;
/**
* @var \DateTime
*
* @ORM\Column(name="updated", type="datetime")
*
* @Gedmo\Timestampable(on="update")
*/
private $updated;
/**
* @var string
*
* @ORM\Column(name="search_index", type="text", nullable=false)
*/
private $search_index;
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\OneToMany(targetEntity="MedBrief\MSR\Entity\User", mappedBy="expertAgency")
*/
private $users;
/**
* Constructor
*/
public function __construct()
{
$this->users = new \Doctrine\Common\Collections\ArrayCollection();
}
public function __toString()
{
return $this->getName();
}
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set deletedAt
*
* @param \DateTime $deletedAt
*
* @return ExpertAgency
*/
public function setDeletedAt($deletedAt)
{
$this->deletedAt = $deletedAt;
return $this;
}
/**
* Get deletedAt
*
* @return \DateTime
*/
public function getDeletedAt()
{
return $this->deletedAt;
}
/**
* Set name
*
* @param string $name
*
* @return ExpertAgency
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set contactEmail
*
* @param string $contactEmail
*
* @return ExpertAgency
*/
public function setContactEmail($contactEmail)
{
$this->contact_email = $contactEmail;
return $this;
}
/**
* Get contactEmail
*
* @return string
*/
public function getContactEmail()
{
return $this->contact_email;
}
/**
* Set created
*
* @param \DateTime $created
*
* @return ExpertAgency
*/
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 ExpertAgency
*/
public function setUpdated($updated)
{
$this->updated = $updated;
return $this;
}
/**
* Get updated
*
* @return \DateTime
*/
public function getUpdated()
{
return $this->updated;
}
/**
* Add user
*
* @param User $user
*
* @return ExpertAgency
*/
public function addUser(User $user)
{
$this->users[] = $user;
return $this;
}
/**
* Remove user
*
* @param User $user
*/
public function removeUser(User $user)
{
$this->users->removeElement($user);
}
/**
* Get users
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getUsers()
{
return $this->users;
}
/**
* Set searchIndex
*
* @param string $searchIndex
*
* @return ExpertAgency
*/
public function setSearchIndex($searchIndex)
{
$this->search_index = $searchIndex;
return $this;
}
/**
* Get searchIndex
*
* @return string
*/
public function getSearchIndex()
{
return $this->search_index;
}
/**
* Updates the Search Index field with internal data. The Search Index Field
* provides an easy way to perform a 'like' query for a generalised search.
*
* @ORM\PrePersist
* @ORM\PrePersist
*/
public function updateSearchIndex()
{
$searchIndex
= $this->getName()
. ' '
. $this->getId()
. ' '
. $this->getContactEmail();
$this->setSearchIndex($searchIndex);
}
}