[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];
}
}
Примечание
Вы можете использовать любой тип объекта при реализации точки расширения, например, справочник, тип задачи, проект, взаимоотношение и так далее. Главное при реализации данной точки расширения – составить список пользователей, которые получат оповещение.