Отправка на почту уведомлений о новых сообщениях#
-
Система с периодичностью SPA_NOTIFICATION_UNREAD_MESSAGES_SCHEDULE рассылает на почту
уведомление о наличии новых сообщений в заявке. -
Если найдено больше одной заявки, по которым необходимо отправить уведомление, то на каждую заявку формируется отдельное уведомление.
Кто и какие уведомления получает#
Для роли CONTRACTOR рассылка выполняется только ответственным за тему исполнителям. (CONTRACTOR в таблице - ответственный за тему в которой находится сообщение):
| Отправитель сообщения в переписку | Приватное / публичное | Кто получает уведомление в почту |
|---|---|---|
| CUSTOMER | Публичное | Все активные пользователи с ролью CONTRACTOR |
| CONTRACTOR | Публичное | Пользователь с ролью CUSTOMER, клиента в заявке |
| AGENT | Публичное | Пользователь с ролью CUSTOMER, клиента в заявке |
| Все активные пользователи с ролью CONTRACTOR | ||
| CUSTOMER | Приватное | отсутствует, клиент не может отправлять приватные сообщения |
| CONTRACTOR | Приватное | Все активные пользователи AGENT, агента в заявке |
| AGENT | Приватное | Все активные пользователи с ролью CONTRACTOR |
Алгоритм определения необходимости отправить уведомление#
Для роли CUSTOMER#
Уведомления отправляются только для публичных сообщений, которые не прочитаны пользователем с ролью CUSTOMER
Для каждой не заявки, в которой есть неприватные сообщения (isPrivate == false) у которых есть notReadBy[] с ролью CUSTOMER,
- система находит самое старое (по
sentAt) непрочитанное ролью CUSTOMER сообщение, - если в ней
notReadBy[].isNotifiacationSent == false, то отправляет уведомление на почту.
При отправке уведомления на почту, устанавливает этому сообщению notReadBy[].isNotifiacationSent == true
Для роли CONTRACTOR#
Уведомления отправляются только ответственным за тему исполнителям для публичных и приватных сообщений, которые не прочитаны ответственным за тему пользователем с ролью CONTRACTOR
Для каждой заявки, в которой есть notReadBy[], с ролью CONTRACTOR:
- система находит самое старое (по
sentAt) непрочитанное ролью CONTRACTOR сообщение, - если в ней
notReadBy[].isNotifiacationSent == false, то отправляет уведомление на почту.
При отправке уведомления на почту, устанавливает этому сообщению notReadBy[].isNotifiacationSent == true
Для роли AGENT#
Уведомления отправляются только для только для приватных сообщений, которые не прочитаны пользователем с ролью AGENT
Для каждой заявки, в которой есть неприватные сообщения (isPrivate == true) у которых есть notReadBy[], с ролью AGENT:
- система находит самое старое (по
sentAt) непрочитанное ролью AGENT сообщение, - если в ней
notReadBy[].isNotifiacationSent == false, то отправляет уведомление на почту.
При отправке уведомления на почту, устанавливает этому сообщению notReadBy[].isNotifiacationSent == true