Repository URL to install this package:
|
Version:
6.2.6 ▾
|
<?php
namespace DigitalAscetic\NotificationsBundle\Service;
use DigitalAscetic\NotificationsBundle\Entity\Notification;
use DigitalAscetic\NotificationsBundle\Entity\NotificationObject;
use DigitalAscetic\QueryFilterBundle\QueryFilter\Doctrine\AbstractDoctrineQueryFilter;
class NotificationQueryFilter extends AbstractDoctrineQueryFilter
{
/** @var int */
private $receiverId;
/** @var string */
private $status;
/** @var bool */
private $pending;
protected function applyFilter()
{
$alias = self::getBaseClassAlias();
if ($this->receiverId) {
$this->qb->andWhere($alias . '.receiver.id = :receiver')
->setParameter('receiver', $this->receiverId);
}
if ($this->status) {
$this->qb->andWhere($alias . '.status = :status')
->setParameter('status', $this->status);
}
if ($this->pending) {
$this->qb->andWhere($alias . '.status != :read')
->setParameter('read', Notification::STATUS_READ);
}
}
protected function getBaseClass(): string
{
return Notification::class;
}
protected function getBaseClassAlias(): string
{
return Notification::ALIAS;
}
protected function getJoins(): array
{
$joins = parent::getJoins();
return array_merge($joins, [
['type' => 'inner', 'prop' => self::getBaseClassAlias() . '.notificationObject', 'alias' => NotificationObject::ALIAS]
]);
}
/**
* @return int
*/
public function getReceiverId(): int
{
return $this->receiverId;
}
/**
* @param int $receiverId
*/
public function setReceiverId(int $receiverId): void
{
$this->receiverId = $receiverId;
}
/**
* @return string
*/
public function getStatus(): string
{
return $this->status;
}
/**
* @param string $status
*/
public function setStatus(string $status): void
{
$this->status = $status;
}
/**
* @return bool
*/
public function isPending(): bool
{
return $this->pending;
}
/**
* @param bool $pending
*/
public function setPending(bool $pending): void
{
$this->pending = $pending;
}
}