<?php
namespace App\Repository;
use App\Entity\Company;
use App\Entity\ExclusionsVideo;
use App\Entity\Video;
use App\Repository\Model\IExclusionRepository;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\ORM\NonUniqueResultException;
use Doctrine\Persistence\ManagerRegistry;
/**
* @method ExclusionsVideo|null find($id, $lockMode = null, $lockVersion = null)
* @method ExclusionsVideo|null findOneBy(array $criteria, array $orderBy = null)
* @method ExclusionsVideo[] findAll()
* @method ExclusionsVideo[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class ExclusionsVideoRepository extends ServiceEntityRepository implements IExclusionRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, ExclusionsVideo::class);
}
/**
* Checks if an exclusion for said company exists
* @param Company $company
* @param Video $video
* @return bool
*/
public function isExclusion(Company $company, Video $video): bool
{
try {
$result = $this->createQueryBuilder('e')
->andWhere('e.company = :company')
->andWhere('e.video = :video')
->setParameter('company', $company)
->setParameter('video', $video)
->getQuery()
->getOneOrNullResult();
} catch (NonUniqueResultException $e) {
$result = null;
}
return ($result instanceof ExclusionsVideo);
}
/**
* @param Company $company
* @return int|mixed|string|null
*/
public function getExcludedIds(Company $company): array
{
$result = $this->createQueryBuilder('e')
->select('e')
->andWhere('e.company = :company')
->setParameter('company', $company)
->getQuery()
->getResult();
foreach ($result as $key=>$item){
$result[$key] = $item->getVideo()->getId();
}
return $result;
}
}