<?php
namespace App\Repository;
use App\Entity\Organization;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @method Organization|null find($id, $lockMode = null, $lockVersion = null)
* @method Organization|null findOneBy(array $criteria, array $orderBy = null)
* @method Organization[] findAll()
* @method Organization[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class OrganizationRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Organization::class);
}
public function getOrganisations_(string $type_id, ?string $search = null, ?int $search_id = null): mixed
{
$results = $this->createQueryBuilder('o')
->select('o')
->where('o.type_organisation = :type')
->setParameter('type', $type_id);
if ($search_id != null) {
$results
->andWhere('o.territory = :territory_id')
->setParameter('territory_id', $search_id);
} else if ($search != null) {
$results
->andWhere(
'o.title LIKE :search OR o.subtitle LIKE :search OR o.ville LIKE :search
'
)
->setParameter('search', '%' . $search . '%');
}
return $results->getQuery()->getResult();
}
public function getOrganisations(mixed $offset = null, int $per_page = 20, mixed $in_territory_ids = null): mixed
{
$results = $this->createQueryBuilder('org')
->select('org')
->addSelect('terr')
->leftJoin('org.territory', 'terr')
->setMaxResults($per_page);
if ($offset != null) {
$results->setFirstResult($offset);
}
if ($in_territory_ids != null) {
$results->andWhere('terr.id IN (:in_territories)')
->setParameter('in_territories', $in_territory_ids);
}
$r = $results->getQuery()->getResult();
return $r;
}
public function getOrganisation(int $id): mixed
{
return $this->createQueryBuilder('o')
->select('o')
->where('o.id = :id')
->setParameter('id', $id)
->getQuery()->getOneOrNullResult();
}
}