src/Repository/Common/CompanyRepository.php line 19

Open in your IDE?
  1. <?php
  2. namespace Harmonizely\Repository\Common;
  3. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  4. use Doctrine\ORM\OptimisticLockException;
  5. use Doctrine\ORM\ORMException;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use Harmonizely\Entity\Common\CompanyEntity;
  8. use Harmonizely\Repository\Common\Contract\ICompanyRepository;
  9. use Harmonizely\Types\Common\CompanyStatus;
  10. class CompanyRepository extends ServiceEntityRepository implements ICompanyRepository
  11. {
  12.     /**
  13.      * @param ManagerRegistry $registry
  14.      */
  15.     public function __construct(ManagerRegistry $registry)
  16.     {
  17.         parent::__construct($registryCompanyEntity::class);
  18.     }
  19.     /**
  20.      * @param CompanyEntity $entity
  21.      * @return CompanyEntity
  22.      * @throws ORMException
  23.      * @throws OptimisticLockException
  24.      */
  25.     public function save(CompanyEntity $entity): CompanyEntity
  26.     {
  27.         $this->getEntityManager()->persist($entity);
  28.         $this->getEntityManager()->flush();
  29.         return $entity;
  30.     }
  31.     /**
  32.      * @param string $login
  33.      * @return CompanyEntity|null
  34.      */
  35.     public function getCompanyByLogin(string $login): ?CompanyEntity
  36.     {
  37.         return $this->findOneBy(['login' => $login]);
  38.     }
  39.     /**
  40.      * @return array|string[]
  41.      */
  42.     public function getActiveCompanyLogins(): array
  43.     {
  44.         $qb $this->createQueryBuilder('company');
  45.         $qb
  46.             ->select('company.login')
  47.             ->where('company.status = :status')
  48.             ->setParameter('status'CompanyStatus::STATUS_ACTIVE);
  49.         $rows $qb->getQuery()->getScalarResult();
  50.         $res = [];
  51.         foreach ($rows as $row) {
  52.             $res[] = $row['login'];
  53.         }
  54.         return $res;
  55.     }
  56.     /**
  57.      * @return array|string[]
  58.      */
  59.     public function getAllCompanyLogins(): array
  60.     {
  61.         $qb $this->createQueryBuilder('company');
  62.         $qb
  63.             ->select('company.login')
  64.             ->orderBy('company.id''DESC');
  65.         $rows $qb->getQuery()->getScalarResult();
  66.         $res = [];
  67.         foreach ($rows as $row) {
  68.             $res[] = $row['login'];
  69.         }
  70.         return $res;
  71.     }
  72. }