logo

[ELMA3] Создание собственного типа данных для списка получателей оповещений

В данной статье приведен пример создания собственного типа данных для списка получателей оповещений. В системе существует множество типов данных для списка получателей оповещений, о которых Вы можете прочитать в следующей статье. В данном примере показан пример создания типа данных, принимающего группу пользователей, затем выбирает всех пользователей этой группы и добавляет их в список оповещаемых.

Пример использования

<RecipientSet>
  <Group>{$New.GruppaPoljzovateley}</Group> <!-- Где New – Ваш объект, а GruppaPoljzovateley – свойство в объекте типа Группа пользователей -->
</RecipientSet>

Методы интерфейса

/// <summary>
/// Имя типа получателя сообщения (соответствует имени в шаблоне)
/// </summary>
string Name { get; }

/// <summary>
/// Получить список получателей (пользователей)
/// </summary>
/// <param name="value">Значение</param>
/// <returns>Список получателей (пользователей)</returns>
IEnumerable<object> GetRecipients(object value);

Пример реализации точки расширения (интерфейса)

[Component]
public class GroupNotificationType : INotificationRecipientTypeHandler
{
    public string Name
    {
        get { return "Group"; }
    }

    public IEnumerable<object> GetRecipients(object value)
    {
        if (value == null)
        {
            return new object[0];
        }

        var group = value as IUserGroup;

        if (group != null)
        {
            var recipients = new List<object>();
            if (group.Users.Count > 0)
            {
                foreach (var user in group.Users)
                {
                    recipients.Add(user);
                }
                return recipients;
            }
        }
        return new object[0];
    }
}
Примечание
Вы можете использовать любой тип объекта при реализации точки расширения, например, справочник, тип задачи, проект, взаимоотношение и так далее. Главное при реализации данной точки расширения – составить список пользователей, которые получат оповещение.

Ссылки на элементы API

INotificationRecipientTypeHandler (для версий 3.13, 3.15, 4.0)