-
Notifications
You must be signed in to change notification settings - Fork 3.8k
/
NotificationInfo.cs
155 lines (133 loc) · 5.14 KB
/
NotificationInfo.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Abp.Domain.Entities.Auditing;
using Abp.MultiTenancy;
namespace Abp.Notifications
{
/// <summary>
/// Used to store a notification request.
/// This notification is distributed to tenants and users by <see cref="INotificationDistributer"/>.
/// </summary>
[Serializable]
[Table("AbpNotifications")]
[MultiTenancySide(MultiTenancySides.Host)]
public class NotificationInfo : CreationAuditedEntity<Guid>
{
/// <summary>
/// Indicates all tenant ids for <see cref="TenantIds"/> property.
/// Value: "0".
/// </summary>
public const string AllTenantIds = "0";
/// <summary>
/// Maximum length of <see cref="NotificationName"/> property.
/// Value: 96.
/// </summary>
public const int MaxNotificationNameLength = 96;
/// <summary>
/// Maximum length of <see cref="Data"/> property.
/// Value: 1048576 (1 MB).
/// </summary>
public const int MaxDataLength = 1024 * 1024;
/// <summary>
/// Maximum length of <see cref="DataTypeName"/> property.
/// Value: 512.
/// </summary>
public const int MaxDataTypeNameLength = 512;
/// <summary>
/// Maximum length of <see cref="EntityTypeName"/> property.
/// Value: 250.
/// </summary>
public const int MaxEntityTypeNameLength = 250;
/// <summary>
/// Maximum length of <see cref="EntityTypeAssemblyQualifiedName"/> property.
/// Value: 512.
/// </summary>
public const int MaxEntityTypeAssemblyQualifiedNameLength = 512;
/// <summary>
/// Maximum length of <see cref="EntityId"/> property.
/// Value: 96.
/// </summary>
public const int MaxEntityIdLength = 96;
/// <summary>
/// Maximum length of <see cref="UserIds"/> property.
/// Value: 131072 (128 KB).
/// </summary>
public const int MaxUserIdsLength = 128 * 1024;
/// <summary>
/// Maximum length of <see cref="TenantIds"/> property.
/// Value: 131072 (128 KB).
/// </summary>
public const int MaxTenantIdsLength = 128 * 1024;
/// <summary>
/// Unique notification name.
/// </summary>
[Required]
[MaxLength(MaxNotificationNameLength)]
public virtual string NotificationName { get; set; }
/// <summary>
/// Notification data as JSON string.
/// </summary>
[MaxLength(MaxDataLength)]
public virtual string Data { get; set; }
/// <summary>
/// Type of the JSON serialized <see cref="Data"/>.
/// It's AssemblyQualifiedName of the type.
/// </summary>
[MaxLength(MaxDataTypeNameLength)]
public virtual string DataTypeName { get; set; }
/// <summary>
/// Gets/sets entity type name, if this is an entity level notification.
/// It's FullName of the entity type.
/// </summary>
[MaxLength(MaxEntityTypeNameLength)]
public virtual string EntityTypeName { get; set; }
/// <summary>
/// AssemblyQualifiedName of the entity type.
/// </summary>
[MaxLength(MaxEntityTypeAssemblyQualifiedNameLength)]
public virtual string EntityTypeAssemblyQualifiedName { get; set; }
/// <summary>
/// Gets/sets primary key of the entity, if this is an entity level notification.
/// </summary>
[MaxLength(MaxEntityIdLength)]
public virtual string EntityId { get; set; }
/// <summary>
/// Notification severity.
/// </summary>
public virtual NotificationSeverity Severity { get; set; }
/// <summary>
/// Target users of the notification.
/// If this is set, it overrides subscribed users.
/// If this is null/empty, then notification is sent to all subscribed users.
/// </summary>
[MaxLength(MaxUserIdsLength)]
public virtual string UserIds { get; set; }
/// <summary>
/// Excluded users.
/// This can be set to exclude some users while publishing notifications to subscribed users.
/// It's not normally used if <see cref="UserIds"/> is not null.
/// </summary>
[MaxLength(MaxUserIdsLength)]
public virtual string ExcludedUserIds { get; set; }
/// <summary>
/// Target tenants of the notification.
/// Used to send notification to subscribed users of specific tenant(s).
/// This is valid only if UserIds is null.
/// If it's "0", then indicates to all tenants.
/// </summary>
[MaxLength(MaxTenantIdsLength)]
public virtual string TenantIds { get; set; }
public NotificationInfo()
{
}
/// <summary>
/// Initializes a new instance of the <see cref="NotificationInfo"/> class.
/// </summary>
public NotificationInfo(Guid id)
{
Id = id;
Severity = NotificationSeverity.Info;
}
}
}