notification: add notification sent to widget which list notifications

ont an entity
This commit is contained in:
Julien Fastré 2022-01-04 17:14:09 +01:00
parent a8fe049ecd
commit 160d382e07
3 changed files with 17 additions and 6 deletions

View File

@ -36,11 +36,13 @@ class NotificationPresence
*/
public function getNotificationsForClassAndEntity(string $relatedEntityClass, int $relatedEntityId): array
{
if ($this->security->getUser() instanceof User) {
return $this->notificationRepository->findNotificationAsAddresseeByRelatedEntityAndUser(
$user = $this->security->getUser();
if ($user instanceof User) {
return $this->notificationRepository->findNotificationByRelatedEntityAndUserAssociated(
$relatedEntityClass,
$relatedEntityId,
$this->security->getUser()
$user
);
}

View File

@ -148,7 +148,7 @@ final class NotificationRepository implements ObjectRepository
/**
* @return array|Notification[]
*/
public function findNotificationAsAddresseeByRelatedEntityAndUser(string $relatedEntityClass, int $relatedEntityId, User $user): array
public function findNotificationByRelatedEntityAndUserAssociated(string $relatedEntityClass, int $relatedEntityId, User $user): array
{
$qb = $this->repository->createQueryBuilder('n');
@ -156,7 +156,12 @@ final class NotificationRepository implements ObjectRepository
->select('n')
->where($qb->expr()->eq('n.relatedEntityClass', ':relatedEntityClass'))
->andWhere($qb->expr()->eq('n.relatedEntityId', ':relatedEntityId'))
->andWhere($qb->expr()->isMemberOf(':user', 'n.addressees'))
->andWhere(
$qb->expr()->orX(
$qb->expr()->isMemberOf(':user', 'n.addressees'),
$qb->expr()->eq('n.sender', ':user')
)
)
->setParameter('relatedEntityClass', $relatedEntityClass)
->setParameter('relatedEntityId', $relatedEntityId)
->setParameter('user', $user);

View File

@ -2,7 +2,11 @@
{% for notification in notifications %}
<div class="notification {% if notification.isReadBy(app.user) %}read{% else %}unread{% endif %}">
{% if not notification.isSystem %}
{% if notification.sender == app.user %}
<div>You sent notification to: {% for a in notification.addressees %}{{ a|chill_entity_render_string }}{% if not loop.last %}, {% endif %}{% endfor %}</div>
{% else %}
<div>{{ 'notification.you were notified by %sender%'|trans({'%sender%': notification.sender|chill_entity_render_string }) }}</div>
{% endif %}
{% else %}
<div>{{ 'notification.you were notified by system'|trans }}</div>
{% endif %}