/
LicenseComponentFactory.cs
109 lines (98 loc) · 4.22 KB
/
LicenseComponentFactory.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
namespace ServiceControl.Config.UI.License
{
using System.Collections.Generic;
using System.Linq;
using ServiceControl.LicenseManagement;
static class LicenseComponentFactory
{
const string UpgradeProtectionLicenseText = "Please extend your upgrade protection so that we can continue to provide you with support and new versions of the Particular Service Platform.";
const string SubscriptionLicenseText = "Please extend your license to continue using the Particular Service Platform.";
static readonly CountInflector DaysInflector = new()
{
Singular = "{0} day",
Plural = "{0} days"
};
public static IEnumerable<LicenseComponent> CreateComponents(LicenseDetails details)
{
yield return new LicenseComponent
{
Label = "Platform license type:",
Value = string.Join(", ", new[]
{
details.LicenseType,
details.Edition
}.Where(x => x != null))
};
if (details.ExpirationDate.HasValue)
{
yield return SubscriptionExpiryComponent(details);
}
if (details.UpgradeProtectionExpiration.HasValue)
{
yield return UpgradeProtectionExpiryComponent(details);
}
}
static LicenseComponent SubscriptionExpiryComponent(LicenseDetails details)
{
if (details.WarnUserSubscriptionHasExpired || details.WarnUserTrialHasExpired)
{
return new LicenseComponent
{
Label = "Platform license expiry date:",
Value = $"{details.ExpirationDate:d} - expired",
Importance = Importance.Serious,
ShortText = "Platform license expired",
WarningText = SubscriptionLicenseText
};
}
if (details.WarnUserSubscriptionIsExpiring || details.WarnUserTrialIsExpiring)
{
var daysRemain = DaysInflector.Inflect(details.DaysUntilSubscriptionExpires ?? 0);
return new LicenseComponent
{
Label = "Platform license expiry date:",
Value = $"{details.ExpirationDate:d} - {daysRemain} left",
Importance = details.WarnUserTrialIsExpiring ? Importance.Warning : Importance.Serious,
ShortText = $"Platform license expiring in {daysRemain}",
WarningText = SubscriptionLicenseText
};
}
return new LicenseComponent
{
Label = "Platform license expiry date:",
Value = $"{details.ExpirationDate:d}"
};
}
static LicenseComponent UpgradeProtectionExpiryComponent(LicenseDetails details)
{
if (details.WarnUserUpgradeProtectionHasExpired)
{
return new LicenseComponent
{
Label = "Upgrade protection expiry date:",
Value = $"{details.UpgradeProtectionExpiration:d} - expired",
Importance = Importance.Warning,
ShortText = "Platform license expired",
WarningText = UpgradeProtectionLicenseText
};
}
if (details.WarnUserUpgradeProtectionIsExpiring)
{
var daysRemain = DaysInflector.Inflect(details.DaysUntilUpgradeProtectionExpires ?? 0);
return new LicenseComponent
{
Label = "Upgrade protection expiry date:",
Value = $"{details.UpgradeProtectionExpiration:d} - {daysRemain} left",
Importance = Importance.Warning,
ShortText = $"Warning: Upgrade protection expiring in {daysRemain}",
WarningText = UpgradeProtectionLicenseText
};
}
return new LicenseComponent
{
Label = "Upgrade protection expiry date:",
Value = $"{details.UpgradeProtectionExpiration:d}"
};
}
}
}