| Current Path : /var/www/v3.cesa.co.za/src/MemberBundle/Repository/ |
| Current File : /var/www/v3.cesa.co.za/src/MemberBundle/Repository/HRForumRepository.php |
<?php
namespace App\MemberBundle\Repository;
use App\MemberBundle\Entity\HRForum;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<HRForum>
*
* @method HRForum|null find($id, $lockMode = null, $lockVersion = null)
* @method HRForum|null findOneBy(array $criteria, array $orderBy = null)
* @method HRForum[] findAll()
* @method HRForum[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class HRForumRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, HRForum::class);
}
/**
* Get the list of IDs
* @return array
*/
public function findAllIds()
{
return $this->createQueryBuilder('h')
->select('h.hrForumID')
->getQuery()->getArrayResult()
;
}
/**
* Find HR Forum members by email
*
* @param string $email
* @return HRForum|null
*/
public function findByEmail(string $email): ?HRForum
{
return $this->createQueryBuilder('h')
->andWhere('h.email = :email')
->setParameter('email', $email)
->getQuery()
->getOneOrNullResult();
}
/**
* Find HR Forum members by company
*
* @param string $company
* @return HRForum[]
*/
public function findByCompany(string $company): array
{
return $this->createQueryBuilder('h')
->andWhere('h.company = :company')
->setParameter('company', $company)
->orderBy('h.firstName', 'ASC')
->getQuery()
->getResult();
}
/**
* Find subscribed HR Forum members
*
* @return HRForum[]
*/
public function findSubscribed(): array
{
return $this->createQueryBuilder('h')
->andWhere('h.subscribed = :subscribed')
->setParameter('subscribed', true)
->orderBy('h.firstName', 'ASC')
->getQuery()
->getResult();
}
/**
* Find HR Forum members by firm ID
*
* @param int $firmID
* @return HRForum[]
*/
public function findByFirmID(int $firmID): array
{
return $this->createQueryBuilder('h')
->andWhere('h.firmID = :firmID')
->setParameter('firmID', $firmID)
->orderBy('h.firstName', 'ASC')
->getQuery()
->getResult();
}
/**
* Search HR Forum members by name or email
*
* @param string $searchTerm
* @return HRForum[]
*/
public function searchByNameOrEmail(string $searchTerm): array
{
return $this->createQueryBuilder('h')
->andWhere('h.firstName LIKE :search OR h.surname LIKE :search OR h.email LIKE :search')
->setParameter('search', '%' . $searchTerm . '%')
->orderBy('h.firstName', 'ASC')
->getQuery()
->getResult();
}
/**
* Count total HR Forum members
*
* @return int
*/
public function countTotal(): int
{
return $this->createQueryBuilder('h')
->select('COUNT(h.hrForumID)')
->getQuery()
->getSingleScalarResult();
}
/**
* Count subscribed HR Forum members
*
* @return int
*/
public function countSubscribed(): int
{
return $this->createQueryBuilder('h')
->select('COUNT(h.hrForumID)')
->andWhere('h.subscribed = :subscribed')
->setParameter('subscribed', true)
->getQuery()
->getSingleScalarResult();
}
}