<?php
namespace AdminBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation\ExclusionPolicy;
use JMS\Serializer\Annotation\Expose;
/**
* VoipRecord
*
*
* @ExclusionPolicy("all")
*/
#[ORM\Table(name: 'voip_record')]
#[ORM\Entity(repositoryClass: \AdminBundle\Repository\VoipRecordRepository::class)]
class VoipRecord
{
/**
* @var int
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'AUTO')]
private $id;
/**
* @var \DateTime
*
* @Expose
*/
#[ORM\Column(name: 'createdAt', type: 'datetime')]
private $createdAt;
/**
* @var \DateTime
*
* @Expose
*/
#[ORM\Column(name: 'callStartTime', type: 'datetime')]
private $callStartTime;
/**
* @var \DateTime
*
* @Expose
*/
#[ORM\Column(name: 'callEndTime', type: 'datetime')]
private $callEndTime;
/**
* @var bool
*
* @Expose
*/
#[ORM\Column(name: 'callConnected', type: 'boolean')]
private $callConnected;
/**
* @var Booking $booking
*/
#[ORM\JoinColumn(name: 'booking_id', referencedColumnName: 'id', onDelete: 'CASCADE', nullable: false)]
#[ORM\ManyToOne(targetEntity: \AdminBundle\Entity\Booking::class, inversedBy: 'voipRecords')]
private $booking;
/**
* @var Driver $driver
*/
#[ORM\JoinColumn(name: 'driver_id', referencedColumnName: 'id', onDelete: 'CASCADE', nullable: false)]
#[ORM\ManyToOne(targetEntity: \AdminBundle\Entity\Driver::class)]
private $driver;
/**
* @var User $client
*/
#[ORM\JoinColumn(name: 'client_id', referencedColumnName: 'id', onDelete: 'CASCADE', nullable: true)]
#[ORM\ManyToOne(targetEntity: \AdminBundle\Entity\User::class)]
private $client;
/**
* VoipRecord constructor.
*/
public function __construct()
{
$this->createdAt = new \DateTime();
}
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set createdAt
*
* @param \DateTime $createdAt
*
* @return VoipRecord
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt
*
* @return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* Set callStartTime
*
* @param \DateTime $callStartTime
*
* @return VoipRecord
*/
public function setCallStartTime($callStartTime)
{
$this->callStartTime = $callStartTime;
return $this;
}
/**
* Get callStartTime
*
* @return \DateTime
*/
public function getCallStartTime()
{
return $this->callStartTime;
}
/**
* Set callEndTime
*
* @param \DateTime $callEndTime
*
* @return VoipRecord
*/
public function setCallEndTime($callEndTime)
{
$this->callEndTime = $callEndTime;
return $this;
}
/**
* Get callEndTime
*
* @return \DateTime
*/
public function getCallEndTime()
{
return $this->callEndTime;
}
/**
* Set callConnected
*
* @param boolean $callConnected
*
* @return VoipRecord
*/
public function setCallConnected($callConnected)
{
$this->callConnected = $callConnected;
return $this;
}
/**
* Get callConnected
*
* @return bool
*/
public function getCallConnected()
{
return $this->callConnected;
}
/**
* @return Booking
*/
public function getBooking()
{
return $this->booking;
}
/**
* @param Booking $booking
* @return VoipRecord
*/
public function setBooking(Booking $booking): VoipRecord
{
$this->booking = $booking;
return $this;
}
/**
* @return Driver
*/
public function getDriver()
{
return $this->driver;
}
/**
* @param Driver $driver
* @return VoipRecord
*/
public function setDriver(Driver $driver): VoipRecord
{
$this->driver = $driver;
return $this;
}
/**
* @return User
*/
public function getClient()
{
return $this->client;
}
/**
* @param User $client
* @return VoipRecord
*/
public function setClient(User $client): VoipRecord
{
$this->client = $client;
return $this;
}
/**
* @return string
*/
public function getCallDuration()
{
$diff = date_diff($this->callEndTime, $this->callStartTime);
return ($diff->h > 0 ? $diff->h.' hour'.($diff->h > 1 ? 's' : '').' ' : '').
($diff->i > 0 ? $diff->i.' minutes ' : '').
($diff->s > 0 ? $diff->s.' second'.($diff->s > 1 ? 's' : '') : '');
}
}