Your IP : 216.73.217.79


Current Path : /var/www/v3.cesa.co.za/src/UserBundle/Repository/
Upload File :
Current File : /var/www/v3.cesa.co.za/src/UserBundle/Repository/UserGroupRepository.php

<?php

namespace App\UserBundle\Repository;

use Doctrine\ORM\EntityRepository;
use App\UserBundle\Entity\UserGroup;
use App\UserBundle\Entity\UserList;

/**
 * UserGroupRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class UserGroupRepository extends EntityRepository {

    /**
     * Get a user which is linked to a group
     *
     * @return UserGroup
     */
    public function getLinkedUser(UserGroup $userGroup, UserList $userList) {

        $qb = $this->createQueryBuilder('ug')
                        ->join('ug.user_list', 'ul')
                        ->where('ug.id = :userGroupId')->setParameter('userGroupId', $userGroup->getId())
                        ->andWhere('ul.id = :userListId')->setParameter('userListId', $userList->getId());

        return $qb->getQuery()->getOneOrNullResult();
    }

    /**
     * Get the user group list query
     *
     * @param array $conf
     * @return Object
     */
    public function getSiteListQuery($conf = array()) {

        $qb = $this->createQueryBuilder('ug')
                ->where('1 = 1');

        if (isset($conf['user_list']) && is_object($conf['user_list'])) {
            $conf['company_id'] = $conf['user_list']->getCompanyId();
        }

        if (!isset($conf['user_type_id'])) {
            $conf['user_type_id'] = '';
        }

        if (isset($conf['company_id']) && strlen($conf['company_id']) > 0) {

//            $users = $this->getEntityManager()->getRepository(UserList::class)->findBySearchCompany('', $conf['company_id'], array('user_type_id' => $conf['user_type_id']));
            $users = $this->getEntityManager()->getRepository(UserList::class)->findBySearchCompany('', $conf['company_id']);
            $userIDArray = array();

            foreach ($users as $user) {
//                echo $user->getId() . '<br />';
                $userIDArray[] = $user->getId();
            }

            $qb = $qb->andWhere('ug.created_by IN (:userIDs)')->setParameter('userIDs', $userIDArray);
        }

        if ((isset($conf['mobile']) && $conf['mobile']) || (isset($conf['e_mail']) && $conf['e_mail'])) {
            $qb->join('ug.user_list', 'ul');
        }

        if (isset($conf['mobile']) && $conf['mobile']) {
            $qb->join('ul.user_tel_no_mobile', 'ulm')
                    ->andWhere('ulm.tel_fax_number <> :telNum')->setParameter('telNum', '');
        } elseif (isset($conf['e_mail']) && $conf['e_mail']) {
            $qb->join('ul.user_e_mail_address', 'uem')
                    ->andWhere('uem.e_mail_address <> :eMail')->setParameter('eMail', '')
                    ->andWhere('uem.e_mail_address LIKE :atSign')->setParameter('atSign', '%@%');
        }

        if (isset($conf['include_ids']) && is_array($conf['include_ids']) && count($conf['include_ids']) > 0) {
            $qb->orWhere('ug.id IN (:includeIds)')->setParameter('includeIds', $conf['include_ids']);
        }

        if (isset($conf['search_text']) && strlen($conf['search_text']) > 0) {
            $qb = $qb->andWhere('ug.group_name LIKE :searchText')->setParameter('searchText', '%' . $conf['search_text'] . '%');
        }

        $qb->orderBy('ug.group_name', 'ASC');

        echo '<!-- ' . $qb->getQuery()->getSQL() . ' -->';

        if (isset($conf['return_qb']) && $conf['return_qb']) {
            return $qb;
        }

        return $qb->getQuery();
    }

    /**
     * Get the user groups
     *
     * @param array $conf
     * @return array
     */
    public function findForSelect($conf = array()) {
        return $this->getSiteListQuery($conf)->execute();
    }

}