public/plugin/zoom/Entity/Registrant.php
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\PluginBundle\Zoom;
use Chamilo\PluginBundle\Zoom\API\CreatedRegistration;
use Chamilo\PluginBundle\Zoom\API\MeetingRegistrant;
use Chamilo\PluginBundle\Zoom\API\MeetingRegistrantListItem;
use Chamilo\UserBundle\Entity\User;
use Doctrine\ORM\Mapping as ORM;
use Exception;
/**
* Class RegistrantEntity.
*
* @ORM\Entity(repositoryClass="RegistrantRepository")
* @ORM\Table(
* name="plugin_zoom_registrant",
* indexes={
* @ORM\Index(name="user_id_index", columns={"user_id"}),
* @ORM\Index(name="meeting_id_index", columns={"meeting_id"}),
* }
* )
* @ORM\HasLifecycleCallbacks
*/
class Registrant
{
/** @var string */
public $fullName;
/**
* @var string
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var User
* @ORM\ManyToOne(targetEntity="Chamilo\UserBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
*/
protected $user;
/**
* @var Meeting
* @ORM\ManyToOne(targetEntity="Meeting", inversedBy="registrants")
* @ORM\JoinColumn(name="meeting_id", referencedColumnName="id")
*/
protected $meeting;
/**
* @var string
* @ORM\Column(type="text", name="created_registration_json", nullable=true)
*/
protected $createdRegistrationJson;
/**
* @var string
* @ORM\Column(type="text", name="meeting_registrant_list_item_json", nullable=true)
*/
protected $meetingRegistrantListItemJson;
/**
* @var string
* @ORM\Column(type="text", name="meeting_registrant_json", nullable=true)
*/
protected $meetingRegistrantJson;
/** @var CreatedRegistration */
protected $createdRegistration;
/** @var MeetingRegistrant */
protected $meetingRegistrant;
/** @var MeetingRegistrantListItem */
protected $meetingRegistrantListItem;
/**
* @return string
*/
public function __toString()
{
return sprintf('Registrant %d', $this->id);
}
/**
* @return Meeting
*/
public function getMeeting()
{
return $this->meeting;
}
/**
* @param Meeting $meeting
*
* @return $this
*/
public function setMeeting($meeting)
{
$this->meeting = $meeting;
$this->meeting->getRegistrants()->add($this);
return $this;
}
/**
* @return User
*/
public function getUser()
{
return $this->user;
}
/**
* @param User $user
*
* @return $this
*/
public function setUser($user)
{
$this->user = $user;
return $this;
}
/**
* @throws Exception
*
* @return MeetingRegistrantListItem
*/
public function getMeetingRegistrantListItem()
{
return $this->meetingRegistrantListItem;
}
/**
* @param MeetingRegistrantListItem $meetingRegistrantListItem
*
* @throws Exception
*
* @return $this
*/
public function setMeetingRegistrantListItem($meetingRegistrantListItem)
{
if (!is_null($this->meeting) && $this->meeting->getId() != $meetingRegistrantListItem->id) {
throw new Exception('RegistrantEntity meeting id differs from MeetingRegistrantListItem id');
}
$this->meetingRegistrantListItem = $meetingRegistrantListItem;
$this->computeFullName();
return $this;
}
public function computeFullName()
{
$this->fullName = api_get_person_name(
$this->meetingRegistrant->first_name,
$this->meetingRegistrant->last_name
);
}
public function getJoinUrl()
{
if (!$this->createdRegistration) {
return '';
}
return $this->createdRegistration->join_url;
}
/**
* @throws Exception
*
* @return CreatedRegistration
*/
public function getCreatedRegistration()
{
return $this->createdRegistration;
}
/**
* @param CreatedRegistration $createdRegistration
*
* @throws Exception
*
* @return $this
*/
public function setCreatedRegistration($createdRegistration)
{
if (null === $this->id) {
$this->id = $createdRegistration->registrant_id;
} elseif ($this->id != $createdRegistration->registrant_id) {
throw new Exception('RegistrantEntity id differs from CreatedRegistration identifier');
}
$this->createdRegistration = $createdRegistration;
return $this;
}
/**
* @throws Exception
*
* @return MeetingRegistrant
*/
public function getMeetingRegistrant()
{
return $this->meetingRegistrant;
}
/**
* @param MeetingRegistrant $meetingRegistrant
*
* @throws Exception
*
* @return $this
*/
public function setMeetingRegistrant($meetingRegistrant)
{
$this->meetingRegistrant = $meetingRegistrant;
$this->computeFullName();
return $this;
}
/**
* @ORM\PostLoad
*
* @throws Exception
*/
public function postLoad()
{
if (null !== $this->meetingRegistrantJson) {
$this->meetingRegistrant = MeetingRegistrant::fromJson($this->meetingRegistrantJson);
}
if (null !== $this->createdRegistrationJson) {
$this->createdRegistration = CreatedRegistration::fromJson($this->createdRegistrationJson);
}
if (null !== $this->meetingRegistrantListItemJson) {
$this->meetingRegistrantListItem = MeetingRegistrantListItem::fromJson(
$this->meetingRegistrantListItemJson
);
}
$this->computeFullName();
}
/**
* @ORM\PreFlush
*/
public function preFlush()
{
if (null !== $this->meetingRegistrant) {
$this->meetingRegistrantJson = json_encode($this->meetingRegistrant);
}
if (null !== $this->createdRegistration) {
$this->createdRegistrationJson = json_encode($this->createdRegistration);
}
if (null !== $this->meetingRegistrantListItem) {
$this->meetingRegistrantListItemJson = json_encode($this->meetingRegistrantListItem);
}
}
}