<?php

namespace OfficeBrain\Bundle\AccessManagementBundle\Entity;

use Doctrine\ORM\EntityRepository;
use OfficeBrain\Bundle\AccessManagementBundle\Entity\InstanceMaster;

/**
 * @author OfficeBrain 4273 <info@officebrain.com>
 *
 */


/**
 * InstanceUserAccessMappingRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class InstanceUserAccessMappingRepository extends EntityRepository
{
    public function deleteInstanceUserAccessMappingByInstanceId(InstanceMaster $instance, $arrObjs=array())
    {
        if (count($arrObjs)>0) {
            $objIUAMs = $this->createQueryBuilder('IUAM');
            $objIUAMs->delete('OfficeBrainAccessManagementBundle:InstanceUserAccessMapping', 'IUAM')
                   ->andWhere($objIUAMs->expr()->eq('IUAM.instance', ':instance'))
                   ->setParameter('instance', $instance)
                   ->andWhere($objIUAMs->expr()->in('IUAM.instanceAccess', ':objAccess'))
                   ->setParameter('objAccess', $arrObjs)
                   ->getQuery() //-> getSQL();
                   ->execute();
            return $objIUAMs;
        }
    }
    public function deleteInstanceUserAccessMappingByAccessId($arrObjs=array())
    {
        if (count($arrObjs)>0) {
            $objIUAMs = $this->createQueryBuilder('IUAM');
            $objIUAMs->delete('OfficeBrainAccessManagementBundle:InstanceUserAccessMapping', 'IUAM')
                   ->andWhere($objIUAMs->expr()->in('IUAM.instanceAccess', ':objAccess'))
                   ->setParameter('objAccess', $arrObjs)
                   ->getQuery() //-> getSQL();
                   ->execute();
            return $objIUAMs;
        }
    }

    public function deleteSubUserInstanceUserAccessMappingByUser($arrUser=array(), $arrObjs=array())
    {
        if (count($arrUser)>0 && count($arrObjs)>0) {
            $objIUAMs = $this->createQueryBuilder('IUAM');
            $objIUAMs->delete('OfficeBrainAccessManagementBundle:InstanceUserAccessMapping', 'IUAM')
                   ->andWhere($objIUAMs->expr()->in('IUAM.user', ':objUser'))
                   ->setParameter('objUser', $arrUser)
                   ->andWhere($objIUAMs->expr()->in('IUAM.instanceAccess', ':objAccess'))
                   ->setParameter('objAccess', $arrObjs)
                   ->getQuery() //-> getSQL();
                   ->execute();
            return $objIUAMs;
        }
    }
    
    public function deleteInstanceUserAccessMappingByUser($objUser)
    {
        if (!empty($objUser)) {
            $objIUAMs = $this->createQueryBuilder('IUAM');
            $objIUAMs->delete('OfficeBrainAccessManagementBundle:InstanceUserAccessMapping', 'IUAM')
                   ->andWhere($objIUAMs->expr()->eq('IUAM.user', ':objUser'))
                   ->setParameter('objUser', $objUser)
                   ->getQuery() //-> getSQL();
                   ->execute();
            return $objIUAMs;
        }
    }

    public function getInstanceUserAccessMappingByUser($objUser)
    {
        if (!empty($objUser)) {
            $objIUAMs = $this->createQueryBuilder('IUAM');
            $objIUAMs=$objIUAMs->select('IUAM')
                    ->andWhere($objIUAMs->expr()->eq('IUAM.user', ':objUser'))
                   ->setParameter('objUser', $objUser)
                   ->getQuery() //-> getSQL();
                   ->getResult();
            return $objIUAMs;
        }
    }
}
