src/AdminBundle/Entity/VoipRecord.php line 18

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Entity;
  3. use Doctrine\Common\Collections\ArrayCollection;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use JMS\Serializer\Annotation\ExclusionPolicy;
  6. use JMS\Serializer\Annotation\Expose;
  7. /**
  8. * VoipRecord
  9. *
  10. *
  11. * @ExclusionPolicy("all")
  12. */
  13. #[ORM\Table(name: 'voip_record')]
  14. #[ORM\Entity(repositoryClass: \AdminBundle\Repository\VoipRecordRepository::class)]
  15. class VoipRecord
  16. {
  17. /**
  18. * @var int
  19. */
  20. #[ORM\Column(name: 'id', type: 'integer')]
  21. #[ORM\Id]
  22. #[ORM\GeneratedValue(strategy: 'AUTO')]
  23. private $id;
  24. /**
  25. * @var \DateTime
  26. *
  27. * @Expose
  28. */
  29. #[ORM\Column(name: 'createdAt', type: 'datetime')]
  30. private $createdAt;
  31. /**
  32. * @var \DateTime
  33. *
  34. * @Expose
  35. */
  36. #[ORM\Column(name: 'callStartTime', type: 'datetime')]
  37. private $callStartTime;
  38. /**
  39. * @var \DateTime
  40. *
  41. * @Expose
  42. */
  43. #[ORM\Column(name: 'callEndTime', type: 'datetime')]
  44. private $callEndTime;
  45. /**
  46. * @var bool
  47. *
  48. * @Expose
  49. */
  50. #[ORM\Column(name: 'callConnected', type: 'boolean')]
  51. private $callConnected;
  52. /**
  53. * @var Booking $booking
  54. */
  55. #[ORM\JoinColumn(name: 'booking_id', referencedColumnName: 'id', onDelete: 'CASCADE', nullable: false)]
  56. #[ORM\ManyToOne(targetEntity: \AdminBundle\Entity\Booking::class, inversedBy: 'voipRecords')]
  57. private $booking;
  58. /**
  59. * @var Driver $driver
  60. */
  61. #[ORM\JoinColumn(name: 'driver_id', referencedColumnName: 'id', onDelete: 'CASCADE', nullable: false)]
  62. #[ORM\ManyToOne(targetEntity: \AdminBundle\Entity\Driver::class)]
  63. private $driver;
  64. /**
  65. * @var User $client
  66. */
  67. #[ORM\JoinColumn(name: 'client_id', referencedColumnName: 'id', onDelete: 'CASCADE', nullable: true)]
  68. #[ORM\ManyToOne(targetEntity: \AdminBundle\Entity\User::class)]
  69. private $client;
  70. /**
  71. * VoipRecord constructor.
  72. */
  73. public function __construct()
  74. {
  75. $this->createdAt = new \DateTime();
  76. }
  77. /**
  78. * Get id
  79. *
  80. * @return int
  81. */
  82. public function getId()
  83. {
  84. return $this->id;
  85. }
  86. /**
  87. * Set createdAt
  88. *
  89. * @param \DateTime $createdAt
  90. *
  91. * @return VoipRecord
  92. */
  93. public function setCreatedAt($createdAt)
  94. {
  95. $this->createdAt = $createdAt;
  96. return $this;
  97. }
  98. /**
  99. * Get createdAt
  100. *
  101. * @return \DateTime
  102. */
  103. public function getCreatedAt()
  104. {
  105. return $this->createdAt;
  106. }
  107. /**
  108. * Set callStartTime
  109. *
  110. * @param \DateTime $callStartTime
  111. *
  112. * @return VoipRecord
  113. */
  114. public function setCallStartTime($callStartTime)
  115. {
  116. $this->callStartTime = $callStartTime;
  117. return $this;
  118. }
  119. /**
  120. * Get callStartTime
  121. *
  122. * @return \DateTime
  123. */
  124. public function getCallStartTime()
  125. {
  126. return $this->callStartTime;
  127. }
  128. /**
  129. * Set callEndTime
  130. *
  131. * @param \DateTime $callEndTime
  132. *
  133. * @return VoipRecord
  134. */
  135. public function setCallEndTime($callEndTime)
  136. {
  137. $this->callEndTime = $callEndTime;
  138. return $this;
  139. }
  140. /**
  141. * Get callEndTime
  142. *
  143. * @return \DateTime
  144. */
  145. public function getCallEndTime()
  146. {
  147. return $this->callEndTime;
  148. }
  149. /**
  150. * Set callConnected
  151. *
  152. * @param boolean $callConnected
  153. *
  154. * @return VoipRecord
  155. */
  156. public function setCallConnected($callConnected)
  157. {
  158. $this->callConnected = $callConnected;
  159. return $this;
  160. }
  161. /**
  162. * Get callConnected
  163. *
  164. * @return bool
  165. */
  166. public function getCallConnected()
  167. {
  168. return $this->callConnected;
  169. }
  170. /**
  171. * @return Booking
  172. */
  173. public function getBooking()
  174. {
  175. return $this->booking;
  176. }
  177. /**
  178. * @param Booking $booking
  179. * @return VoipRecord
  180. */
  181. public function setBooking(Booking $booking): VoipRecord
  182. {
  183. $this->booking = $booking;
  184. return $this;
  185. }
  186. /**
  187. * @return Driver
  188. */
  189. public function getDriver()
  190. {
  191. return $this->driver;
  192. }
  193. /**
  194. * @param Driver $driver
  195. * @return VoipRecord
  196. */
  197. public function setDriver(Driver $driver): VoipRecord
  198. {
  199. $this->driver = $driver;
  200. return $this;
  201. }
  202. /**
  203. * @return User
  204. */
  205. public function getClient()
  206. {
  207. return $this->client;
  208. }
  209. /**
  210. * @param User $client
  211. * @return VoipRecord
  212. */
  213. public function setClient(User $client): VoipRecord
  214. {
  215. $this->client = $client;
  216. return $this;
  217. }
  218. /**
  219. * @return string
  220. */
  221. public function getCallDuration()
  222. {
  223. $diff = date_diff($this->callEndTime, $this->callStartTime);
  224. return ($diff->h > 0 ? $diff->h.' hour'.($diff->h > 1 ? 's' : '').' ' : '').
  225. ($diff->i > 0 ? $diff->i.' minutes ' : '').
  226. ($diff->s > 0 ? $diff->s.' second'.($diff->s > 1 ? 's' : '') : '');
  227. }
  228. }