Your IP : 216.73.217.79


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

<?php

namespace App\ContactBundle\Repository;

use Doctrine\ORM\EntityRepository;
use App\ContactBundle\Entity\Message;
use App\UserBundle\Entity\UserList;

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

    /**
     * Get all e-mail recipients report
     *
     * @param array $conf
     * @return Object
     */
    public function getSiteListQuery($conf = array()) {

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

        if (isset($conf['message']) && is_object($conf['message'])) {
            $qb = $qb->andWhere('mr.message = :message')->setParameter('message', $conf['message']);
        }

        $qb = $qb->orderBy('mr.date_sent', 'DESC');

        return $qb->getQuery();
    }

    /**
     * Get recipients for a
     *
     * @param array $smsMessageTypes
     * @return array
     */
    public function getMessageRecipients(Message $message) {

        $qb = $this->createQueryBuilder('mr')
                ->leftJoin('mr.message_error', 'me')
                ->where('mr.message = :message')->setParameter('message', $message)
                ->andWhere('mr.sent = :sent')->setParameter('sent', false)
                ->andWhere('me.id IS NULL')
        ;

        $query = $qb->getQuery();

        return $query->execute();
    }

    /**
     * Clear all unsent messages
     */
    public function clearQueue($errorIdSelect) {

        $errorIdSelectArr = array('-1');

        foreach ($errorIdSelect as $errorId) {
            $errorIdSelectArr[] = $errorId['id'];
        }

        $qb = $this->createQueryBuilder('mr');
        $qb->delete()
                ->where($qb->expr()->notIn('mr.id', $errorIdSelectArr))
                ->andWhere('mr.sent = :sent')->setParameter('sent', 0)
        ;

        $query = $qb->getQuery();

        return $query->execute();
    }

    /**
     * Get recipients for a
     *
     * @param array $smsMessageTypes
     * @return array
     */
    public function findByMessageUser(Message $message, UserList $userList) {

        $qb = $this->createQueryBuilder('mr')
                ->join('mr.to_user', 'tu')
                ->where('mr.message = :message')->setParameter('message', $message)
                ->andWhere('tu.id = :userListId')->setParameter('userListId', $userList->getId())
                ->setMaxResults(1)
        ;

        $query = $qb->getQuery();

        return $query->getOneOrNullResult();
    }

}