/**
  * @param Channel $channel
  */
 public function findBy(Channel $channel)
 {
     $criteria = array('channel' => array('builder' => function ($alias) {
         return sprintf("%s.channel", $alias);
     }, 'value' => $channel));
     return $this->entityManager->findBy(Listing::class, $criteria);
 }
 /**
  * @param Channel $channel
  * @param \DateTimeImmutable $specifiedDate
  * @return array
  */
 public function getListingsOf(Channel $channel, \DateTimeImmutable $specifiedDate)
 {
     $criteria = array('channel' => array('builder' => function ($alias) {
         return sprintf("%s.channel", $alias);
     }, 'value' => $channel), 'programDate' => array('builder' => function ($alias) {
         return sprintf("DATE(%s.programDate)", $alias);
     }, 'value' => $specifiedDate->format('Y-m-d')), 'orderBy' => array('builder' => function ($alias) {
         return sprintf("%s.programDate", $alias);
     }, 'value' => 'ASC'));
     return $this->entityManager->findBy(Listing::class, $criteria);
 }
 /**
  * @param string $source
  * @return string
  */
 public function createFromSource($source)
 {
     $videoProxy = new VideoProxy($source);
     $this->entityManager->persist($videoProxy);
     return (string) $videoProxy->getUuid();
 }
 /**
  * @param string $uuid
  */
 public function find($uuid)
 {
     return $this->entityManager->findOneBy(VideoProxy::class, 'uuid', $uuid);
 }