Codeunit 1430 Role Center Notification Mgt., source in 29
Source29
src/Layers/W1/BaseApp/RoleCenters/RoleCenterNotificationMgt.Codeunit.al790 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.RoleCenters;
using Microsoft;
using Microsoft.Utilities;
using System.DateTime;
using System.Environment;
using System.Environment.Configuration;
using System.Integration;
using System.Reflection;
using System.Security.Authentication;
using System.Security.User;
codeunit 1430 "Role Center Notification Mgt."
{
Permissions = tabledata "User Personalization" = r,
tabledata "All Profile" = r;
trigger OnRun()
begin
end;
var
IsPreview: Boolean;
TrialNotificationIdTxt: Label '9e359b60-3d2e-40c7-8680-3365d51937f7', Locked = true;
TrialSuspendedNotificationIdTxt: Label '9e359b60-3d2e-40c7-8680-3365d51937f7', Locked = true;
TrialExtendedNotificationIdTxt: Label '9e359b60-3d2e-40c7-8680-3365d51937f7';
TrialExtendedSuspendedNotificationIdTxt: Label '9e359b60-3d2e-40c7-8680-3365d51937f7';
PaidWarningNotificationIdTxt: Label '2751b488-ca52-42ef-b6d7-d7b4ba841e80', Locked = true;
PaidSuspendedNotificationIdTxt: Label '2751b488-ca52-42ef-b6d7-d7b4ba841e80', Locked = true;
SandboxNotificationIdTxt: Label 'd82835d9-a005-451a-972b-0d6532de2071', Locked = true;
ChangeToPremiumExpNotificationIdTxt: Label '58982418-e1d1-4879-bda2-6033ca151b83', Locked = true;
WSDeprecationNotificationIdTxt: Label 'a482b656-b7f4-46d9-8ca8-843083158057', Locked = true;
TrialNotificationDaysSinceStartTxt: Label '15', Locked = true;
TrialNotificationLinkTxt: Label 'Request partner contact...';
TrialNotificationExtendLinkTxt: Label 'Extend trial...';
TrialSuspendedNotificationLinkTxt: Label 'Request partner contact...';
TrialSuspendedNotificationExtendLinkTxt: Label 'Extend trial...';
TrialExtendedNotificationSubscribeLinkTxt: Label 'Request partner contact...';
TrialExtendedSuspendedNotificationSubscribeLinkTxt: Label 'Request partner contact...';
PaidWarningNotificationLinkTxt: Label 'Renew subscription...';
PaidSuspendedNotificationLinkTxt: Label 'Renew subscription...';
TrialNotificationMsg: Label 'Your trial period expires in %1 days. Ready to subscribe, or do you need more time?', Comment = '%1=Count of days until trial expires';
TrialNotificationPreviewMsg: Label 'Your trial period expires in %1 days.', Comment = '%1=Count of days until trial expires';
TrialSuspendedNotificationMsg: Label 'Your trial period has expired. You can subscribe or extend the period to get more time.';
TrialSuspendedNotificationPreviewMsg: Label 'Your trial period has expired. You can extend the period to get more time.';
TrialExtendedNotificationMsg: Label 'Your extended trial period will expire in %1 days.', Comment = '%1=Count of days until trial expires';
TrialExtendedNotificationPreviewMsg: Label 'Your extended trial period will expire in %1 days. If it expires you contact a partner to get more time.', Comment = '%1=Count of days until trial expires';
TrialExtendedSuspendedNotificationMsg: Label 'Your extended trial period has expired.';
TrialExtendedSuspendedNotificationPreviewMsg: Label 'Your extended trial period has expired. You can contact a partner to get more time.';
PaidWarningNotificationMsg: Label 'Your subscription expires in %1 days. Renew soon to keep your work.', Comment = '%1=Count of days until block of access';
PaidSuspendedNotificationMsg: Label 'Your subscription has expired. Unless you renew, we will delete your data in %1 days.', Comment = '%1=Count of days until data deletion';
SandboxNotificationMsg: Label 'This is a sandbox environment for test, demo, or development purposes only.';
SandboxNotificationNameTok: Label 'Notify user of sandbox environment.';
DontShowThisAgainMsg: Label 'Don''t show this again.';
SandboxNotificationDescTok: Label 'Show a notification informing the user that they are working in a sandbox environment.';
ChangeToPremiumExpNotificationMsg: Label 'This Role Center contains functionality that may not be visible because of your experience setting or assigned plan. For more information, see Changing Which Features are Displayed';
ChangeToPremiumExpURLTxt: Label 'https://go.microsoft.com/fwlink/?linkid=873395', Locked = true;
ChangeToPremiumExpNotificationDescTok: Label 'Show a notification suggesting the user to change to Premium experience.';
ChangeToPremiumExpNotificationNameTok: Label 'Suggest to change the Experience setting.';
ContactAPartnerURLTxt: Label 'https://go.microsoft.com/fwlink/?linkid=2038439', Locked = true;
BuyThroughPartnerURLTxt: Label 'https://go.microsoft.com/fwlink/?linkid=860971', Locked = true;
procedure FixNowWSDeprecation(Notification: Notification)
begin
Page.Run(Page::"WS Access Key Wizard");
end;
local procedure CreateAndSendTrialNotification()
var
TrialNotification: Notification;
RemainingDays: Integer;
begin
RemainingDays := GetLicenseRemainingDays();
TrialNotification.Id := GetTrialNotificationId();
TrialNotification.Message := StrSubstNo(TrialNotificationMessage(), RemainingDays);
TrialNotification.Scope := NOTIFICATIONSCOPE::LocalScope;
if (not IsPreview) then
TrialNotification.AddAction(
TrialNotificationLinkTxt, CODEUNIT::"Role Center Notification Mgt.", 'TrialNotificationAction');
TrialNotification.AddAction(
TrialNotificationExtendLinkTxt, CODEUNIT::"Role Center Notification Mgt.", 'TrialNotificationExtendAction');
TrialNotification.Send();
end;
local procedure CreateAndSendTrialSuspendedNotification()
var
TrialSuspendedNotification: Notification;
begin
TrialSuspendedNotification.Id := GetTrialSuspendedNotificationId();
TrialSuspendedNotification.Message := TrialSuspendedNotificationMessage();
TrialSuspendedNotification.Scope := NOTIFICATIONSCOPE::LocalScope;
if (not IsPreview) then
TrialSuspendedNotification.AddAction(
TrialSuspendedNotificationLinkTxt,
CODEUNIT::"Role Center Notification Mgt.",
'TrialSuspendedNotificationAction');
TrialSuspendedNotification.AddAction(
TrialSuspendedNotificationExtendLinkTxt,
CODEUNIT::"Role Center Notification Mgt.",
'TrialSuspendedNotificationExtendAction');
TrialSuspendedNotification.Send();
end;
local procedure CreateAndSendTrialExtendedNotification()
var
TrialExtendedNotification: Notification;
RemainingDays: Integer;
begin
RemainingDays := GetLicenseRemainingDays();
TrialExtendedNotification.Id := GetTrialExtendedNotificationId();
TrialExtendedNotification.Message := StrSubstNo(TrialExtendedNotificationMessage(), RemainingDays);
TrialExtendedNotification.Scope := NOTIFICATIONSCOPE::LocalScope;
if (not IsPreview) then
TrialExtendedNotification.AddAction(
TrialExtendedNotificationSubscribeLinkTxt,
CODEUNIT::"Role Center Notification Mgt.",
'TrialExtendedNotificationSubscribeAction');
TrialExtendedNotification.Send();
end;
local procedure CreateAndSendTrialExtendedSuspendedNotification()
var
TrialExtendedSuspendedNotification: Notification;
begin
TrialExtendedSuspendedNotification.Id := GetTrialExtendedSuspendedNotificationId();
TrialExtendedSuspendedNotification.Message := TrialExtendedSuspendedNotificationMessage();
TrialExtendedSuspendedNotification.Scope := NOTIFICATIONSCOPE::LocalScope;
if (not IsPreview) then
TrialExtendedSuspendedNotification.AddAction(
TrialExtendedSuspendedNotificationSubscribeLinkTxt,
CODEUNIT::"Role Center Notification Mgt.",
'TrialExtendedNotificationSubscribeAction');
TrialExtendedSuspendedNotification.Send();
end;
local procedure CreateAndSendPaidWarningNotification()
var
PaidWarningNotification: Notification;
RemainingDays: Integer;
begin
if IsPreview then
exit;
RemainingDays := GetLicenseRemainingDays();
PaidWarningNotification.Id := GetPaidWarningNotificationId();
PaidWarningNotification.Message := StrSubstNo(PaidWarningNotificationMsg, RemainingDays);
PaidWarningNotification.Scope := NOTIFICATIONSCOPE::LocalScope;
PaidWarningNotification.AddAction(
PaidWarningNotificationLinkTxt, CODEUNIT::"Role Center Notification Mgt.", 'PaidWarningNotificationAction');
PaidWarningNotification.Send();
end;
local procedure CreateAndSendPaidSuspendedNotification()
var
PaidSuspendedNotification: Notification;
RemainingDays: Integer;
begin
if IsPreview then
exit;
RemainingDays := GetLicenseRemainingDays();
PaidSuspendedNotification.Id := GetPaidSuspendedNotificationId();
PaidSuspendedNotification.Message := StrSubstNo(PaidSuspendedNotificationMsg, RemainingDays);
PaidSuspendedNotification.Scope := NOTIFICATIONSCOPE::LocalScope;
PaidSuspendedNotification.AddAction(
PaidSuspendedNotificationLinkTxt, CODEUNIT::"Role Center Notification Mgt.", 'PaidSuspendedNotificationAction');
PaidSuspendedNotification.Send();
end;
local procedure CreateAndSendSandboxNotification()
var
SandboxNotification: Notification;
begin
SandboxNotification.Id := GetSandboxNotificationId();
SandboxNotification.Message := SandboxNotificationMsg;
SandboxNotification.Scope := NOTIFICATIONSCOPE::LocalScope;
SandboxNotification.AddAction(DontShowThisAgainMsg, CODEUNIT::"Role Center Notification Mgt.", 'DisableSandboxNotification');
SandboxNotification.Send();
end;
procedure GetTrialNotificationId(): Guid
var
TrialNotificationId: Guid;
begin
Evaluate(TrialNotificationId, TrialNotificationIdTxt);
exit(TrialNotificationId);
end;
procedure GetTrialSuspendedNotificationId(): Guid
var
TrialSuspendedNotificationId: Guid;
begin
Evaluate(TrialSuspendedNotificationId, TrialSuspendedNotificationIdTxt);
exit(TrialSuspendedNotificationId);
end;
procedure GetTrialExtendedNotificationId(): Guid
var
TrialExtendedNotificationId: Guid;
begin
Evaluate(TrialExtendedNotificationId, TrialExtendedNotificationIdTxt);
exit(TrialExtendedNotificationId);
end;
procedure GetTrialExtendedSuspendedNotificationId(): Guid
var
TrialExtendedSuspendedNotificationId: Guid;
begin
Evaluate(TrialExtendedSuspendedNotificationId, TrialExtendedSuspendedNotificationIdTxt);
exit(TrialExtendedSuspendedNotificationId);
end;
procedure GetPaidWarningNotificationId(): Guid
var
PaidWarningNotificationId: Guid;
begin
Evaluate(PaidWarningNotificationId, PaidWarningNotificationIdTxt);
exit(PaidWarningNotificationId);
end;
procedure GetPaidSuspendedNotificationId(): Guid
var
PaidSuspendedNotificationId: Guid;
begin
Evaluate(PaidSuspendedNotificationId, PaidSuspendedNotificationIdTxt);
exit(PaidSuspendedNotificationId);
end;
procedure GetWSDeprecationNotificationId(): Guid
var
WSDeprecationNotificationId: Guid;
begin
Evaluate(WSDeprecationNotificationId, WSDeprecationNotificationIdTxt);
exit(WSDeprecationNotificationId);
end;
procedure GetSandboxNotificationId(): Guid
var
SandboxNotificationId: Guid;
begin
Evaluate(SandboxNotificationId, SandboxNotificationIdTxt);
exit(SandboxNotificationId);
end;
procedure GetChangeToPremiumExpNotificationId(): Guid
var
ChangeToPremiumExpNotificationId: Guid;
begin
Evaluate(ChangeToPremiumExpNotificationId, ChangeToPremiumExpNotificationIdTxt);
exit(ChangeToPremiumExpNotificationId);
end;
local procedure AreNotificationsSupported(): Boolean
var
EnvironmentInfo: Codeunit "Environment Information";
begin
if not GuiAllowed then
exit(false);
if not EnvironmentInfo.IsSaaS() then
exit(false);
if EnvironmentInfo.IsSandbox() then
exit(false);
exit(true);
end;
local procedure AreSandboxNotificationsSupported(): Boolean
var
EnvironmentInfo: Codeunit "Environment Information";
begin
if not GuiAllowed then
exit(false);
if not EnvironmentInfo.IsSaaS() then
exit(false);
if not EnvironmentInfo.IsSandbox() then
exit(false);
exit(true);
end;
local procedure IsTrialNotificationEnabled(): Boolean
var
ClientTypeManagement: Codeunit "Client Type Management";
TenantLicenseState: Codeunit "Tenant License State";
begin
if not TenantLicenseState.IsTrialMode() then
exit(false);
if not AreNotificationsSupported() then
exit(false);
if ClientTypeManagement.GetCurrentClientType() in [CLIENTTYPE::Tablet, CLIENTTYPE::Phone] then
exit(false);
if GetLicenseFullyUsedDays() < GetTrialNotificationDaysSinceStart() then
exit(false);
exit(true);
end;
local procedure IsTrialSuspendedNotificationEnabled(): Boolean
var
ClientTypeManagement: Codeunit "Client Type Management";
TenantLicenseState: Codeunit "Tenant License State";
begin
if not TenantLicenseState.IsTrialSuspendedMode() then
exit(false);
if TenantLicenseState.IsTrialExtendedSuspendedMode() then
exit(false);
if not AreNotificationsSupported() then
exit(false);
if ClientTypeManagement.GetCurrentClientType() in [CLIENTTYPE::Tablet, CLIENTTYPE::Phone] then
exit(false);
exit(true);
end;
local procedure IsTrialExtendedNotificationEnabled(): Boolean
var
ClientTypeManagement: Codeunit "Client Type Management";
TenantLicenseState: Codeunit "Tenant License State";
begin
if not TenantLicenseState.IsTrialExtendedMode() then
exit(false);
if not AreNotificationsSupported() then
exit(false);
if ClientTypeManagement.GetCurrentClientType() in [CLIENTTYPE::Tablet, CLIENTTYPE::Phone] then
exit(false);
if GetLicenseFullyUsedDays() < GetTrialNotificationDaysSinceStart() then
exit(false);
exit(true);
end;
local procedure IsTrialExtendedSuspendedNotificationEnabled(): Boolean
var
TenantLicenseState: Codeunit "Tenant License State";
ClientTypeManagement: Codeunit "Client Type Management";
begin
if not TenantLicenseState.IsTrialExtendedSuspendedMode() then
exit(false);
if not AreNotificationsSupported() then
exit(false);
if ClientTypeManagement.GetCurrentClientType() in [CLIENTTYPE::Tablet, CLIENTTYPE::Phone] then
exit(false);
exit(true);
end;
local procedure IsPaidWarningNotificationEnabled(): Boolean
var
RoleCenterNotifications: Record "Role Center Notifications";
TenantLicenseState: Codeunit "Tenant License State";
begin
if not TenantLicenseState.IsPaidWarningMode() then
exit(false);
if not AreNotificationsSupported() then
exit(false);
if RoleCenterNotifications.IsFirstLogon() then
exit(false);
exit(IsBuyNotificationEnabled());
end;
local procedure IsPaidSuspendedNotificationEnabled(): Boolean
var
RoleCenterNotifications: Record "Role Center Notifications";
TenantLicenseState: Codeunit "Tenant License State";
begin
if not TenantLicenseState.IsPaidSuspendedMode() then
exit(false);
if not AreNotificationsSupported() then
exit(false);
if RoleCenterNotifications.IsFirstLogon() then
exit(false);
exit(IsBuyNotificationEnabled());
end;
procedure ShowNotifications(): Boolean
var
EnvironmentInformation: Codeunit "Environment Information";
DataMigrationMgt: Codeunit "Data Migration Mgt.";
DataClassNotificationMgt: Codeunit "Data Class. Notification Mgt.";
DataGeoNotification: Codeunit "Data Geo. Notification";
UserPermissions: Codeunit "User Permissions";
ResultTrial: Boolean;
ResultTrialSuspended: Boolean;
ResultTrialExtended: Boolean;
ResultTrialExtendedSuspended: Boolean;
ResultPaidWarning: Boolean;
ResultPaidSuspended: Boolean;
ResultSandbox: Boolean;
begin
OnBeforeShowNotifications();
IsRunningPreviewEvent();
if UserPermissions.IsSuper(UserSecurityId()) then begin
ResultTrial := ShowTrialNotification();
ResultTrialSuspended := ShowTrialSuspendedNotification();
ResultTrialExtended := ShowTrialExtendedNotification();
ResultTrialExtendedSuspended := ShowTrialExtendedSuspendedNotification();
end;
ResultPaidWarning := ShowPaidWarningNotification();
ResultPaidSuspended := ShowPaidSuspendedNotification();
ResultSandbox := ShowSandboxNotification();
EnvironmentInformation.ShowEarlyPreviewNotification();
DataMigrationMgt.ShowDataMigrationRelatedGlobalNotifications();
DataClassNotificationMgt.ShowNotifications();
DataGeoNotification.ShowExistingAppsNotification();
Commit();
exit(
ResultTrial or ResultTrialSuspended or
ResultTrialExtended or ResultTrialExtendedSuspended or
ResultPaidWarning or ResultPaidSuspended or
ResultSandbox)
end;
procedure ShowTrialNotification(): Boolean
begin
IsRunningPreviewEvent();
if not IsTrialNotificationEnabled() then
exit(false);
CreateAndSendTrialNotification();
exit(true);
end;
procedure ShowTrialSuspendedNotification(): Boolean
begin
IsRunningPreviewEvent();
if not IsTrialSuspendedNotificationEnabled() then
exit(false);
CreateAndSendTrialSuspendedNotification();
exit(true);
end;
procedure ShowTrialExtendedNotification(): Boolean
begin
IsRunningPreviewEvent();
if not IsTrialExtendedNotificationEnabled() then
exit(false);
CreateAndSendTrialExtendedNotification();
exit(true);
end;
procedure ShowTrialExtendedSuspendedNotification(): Boolean
begin
IsRunningPreviewEvent();
if not IsTrialExtendedSuspendedNotificationEnabled() then
exit(false);
CreateAndSendTrialExtendedSuspendedNotification();
exit(true);
end;
procedure ShowPaidWarningNotification(): Boolean
begin
IsRunningPreviewEvent();
if not IsPaidWarningNotificationEnabled() then
exit(false);
CreateAndSendPaidWarningNotification();
exit(true);
end;
procedure ShowPaidSuspendedNotification(): Boolean
begin
IsRunningPreviewEvent();
if not IsPaidSuspendedNotificationEnabled() then
exit(false);
CreateAndSendPaidSuspendedNotification();
exit(true);
end;
procedure ShowSandboxNotification(): Boolean
var
MyNotifications: Record "My Notifications";
begin
if not AreSandboxNotificationsSupported() then
exit(false);
if not MyNotifications.IsEnabled(GetSandboxNotificationId()) then
exit(false);
CreateAndSendSandboxNotification();
exit(true);
end;
procedure TrialNotificationAction(TrialNotification: Notification)
begin
BuySubscription();
end;
procedure TrialNotificationExtendAction(TrialNotification: Notification)
begin
ExtendTrial();
end;
procedure TrialSuspendedNotificationAction(TrialSuspendedNotification: Notification)
begin
BuySubscription();
end;
procedure TrialSuspendedNotificationExtendAction(TrialSuspendedNotification: Notification)
begin
ExtendTrial();
end;
procedure TrialSuspendedNotificationPartnerAction(TrialSuspendedNotification: Notification)
begin
ContactAPartner();
end;
procedure TrialExtendedNotificationSubscribeAction(TrialExtendedNotification: Notification)
begin
BuySubscription();
end;
procedure TrialExtendedNotificationPartnerAction(TrialExtendedNotification: Notification)
begin
ContactAPartner();
end;
procedure PaidWarningNotificationAction(PaidWarningNotification: Notification)
begin
BuySubscription();
end;
procedure PaidSuspendedNotificationAction(PaidSuspendedNotification: Notification)
begin
BuySubscription();
end;
procedure GetLicenseRemainingDays(): Integer
var
DotNet_DateTimeOffset: Codeunit DotNet_DateTimeOffset;
TenantLicenseState: Codeunit "Tenant License State";
Now: DateTime;
EndDate: DateTime;
TimeDuration: Decimal;
MillisecondsPerDay: BigInteger;
RemainingDays: Integer;
begin
Now := DotNet_DateTimeOffset.ConvertToUtcDateTime(CurrentDateTime);
EndDate := TenantLicenseState.GetEndDate();
if EndDate > Now then begin
TimeDuration := EndDate - Now;
MillisecondsPerDay := 86400000;
RemainingDays := Round(TimeDuration / MillisecondsPerDay, 1, '=');
exit(RemainingDays);
end;
exit(0);
end;
local procedure GetLicenseFullyUsedDays(): Integer
var
TenantLicenseState: Codeunit "Tenant License State";
DotNet_DateTimeOffset: Codeunit DotNet_DateTimeOffset;
StartDate: DateTime;
Now: DateTime;
TimeDuration: Decimal;
MillisecondsPerDay: BigInteger;
FullyUsedDays: Integer;
begin
Now := DotNet_DateTimeOffset.ConvertToUtcDateTime(CurrentDateTime);
StartDate := TenantLicenseState.GetStartDate();
if StartDate <> 0DT then
if Now > StartDate then begin
TimeDuration := Now - StartDate;
MillisecondsPerDay := 86400000;
FullyUsedDays := Round(TimeDuration / MillisecondsPerDay, 1, '<');
exit(FullyUsedDays);
end;
exit(0);
end;
procedure GetTrialTotalDays(): Integer
var
TenantLicenseState: Codeunit "Tenant License State";
TrialTotalDays: Integer;
begin
TrialTotalDays := TenantLicenseState.GetPeriod("Tenant License State"::Trial);
exit(TrialTotalDays);
end;
local procedure GetTrialNotificationDaysSinceStart(): Integer
var
DaysSinceStart: Integer;
begin
Evaluate(DaysSinceStart, TrialNotificationDaysSinceStartTxt);
exit(DaysSinceStart);
end;
local procedure ExtendTrial()
begin
DisableBuyNotification();
PAGE.Run(PAGE::"Extend Trial Wizard");
end;
local procedure BuySubscription()
begin
DisableBuyNotification();
HyperLink(BuyThroughPartnerURLTxt);
end;
local procedure ContactAPartner()
begin
DisableBuyNotification();
HyperLink(ContactAPartnerURLTxt);
end;
procedure DisableEvaluationNotification()
var
RoleCenterNotifications: Record "Role Center Notifications";
begin
RoleCenterNotifications.SetEvaluationNotificationState(RoleCenterNotifications."Evaluation Notification State"::Disabled);
end;
procedure EnableEvaluationNotification()
var
RoleCenterNotifications: Record "Role Center Notifications";
begin
RoleCenterNotifications.SetEvaluationNotificationState(RoleCenterNotifications."Evaluation Notification State"::Enabled);
end;
procedure IsEvaluationNotificationClicked(): Boolean
var
RoleCenterNotifications: Record "Role Center Notifications";
begin
exit(RoleCenterNotifications.GetEvaluationNotificationState() = RoleCenterNotifications."Evaluation Notification State"::Clicked);
end;
procedure DisableBuyNotification()
var
RoleCenterNotifications: Record "Role Center Notifications";
begin
RoleCenterNotifications.SetBuyNotificationState(RoleCenterNotifications."Buy Notification State"::Disabled);
end;
procedure EnableBuyNotification()
var
RoleCenterNotifications: Record "Role Center Notifications";
begin
RoleCenterNotifications.SetBuyNotificationState(RoleCenterNotifications."Buy Notification State"::Enabled);
end;
local procedure IsBuyNotificationEnabled(): Boolean
var
RoleCenterNotifications: Record "Role Center Notifications";
begin
exit(RoleCenterNotifications.GetBuyNotificationState() <> RoleCenterNotifications."Buy Notification State"::Disabled);
end;
procedure DisableSandboxNotification(Notification: Notification)
var
MyNotifications: Record "My Notifications";
begin
if MyNotifications.WritePermission then
if not MyNotifications.Disable(GetSandboxNotificationId()) then
MyNotifications.InsertDefault(GetSandboxNotificationId(), SandboxNotificationNameTok, SandboxNotificationDescTok, false);
end;
procedure DisableChangeToPremiumExpNotification(Notification: Notification)
var
MyNotifications: Record "My Notifications";
begin
if not MyNotifications.Disable(GetChangeToPremiumExpNotificationId()) then
MyNotifications.InsertDefault(
GetChangeToPremiumExpNotificationId(), ChangeToPremiumExpNotificationNameTok, ChangeToPremiumExpNotificationDescTok, false);
end;
procedure TrialNotificationMessage(): Text
begin
if IsPreview then
exit(TrialNotificationPreviewMsg);
exit(TrialNotificationMsg);
end;
procedure TrialSuspendedNotificationMessage(): Text
begin
if IsPreview then
exit(TrialSuspendedNotificationPreviewMsg);
exit(TrialSuspendedNotificationMsg);
end;
procedure TrialExtendedNotificationMessage(): Text
begin
if IsPreview then
exit(TrialExtendedNotificationPreviewMsg);
exit(TrialExtendedNotificationMsg);
end;
procedure TrialExtendedSuspendedNotificationMessage(): Text
begin
if IsPreview then
exit(TrialExtendedSuspendedNotificationPreviewMsg);
exit(TrialExtendedSuspendedNotificationMsg);
end;
procedure PaidWarningNotificationMessage(): Text
begin
exit(PaidWarningNotificationMsg);
end;
procedure PaidSuspendedNotificationMessage(): Text
begin
exit(PaidSuspendedNotificationMsg);
end;
procedure SandboxNotificationMessage(): Text
begin
exit(SandboxNotificationMsg);
end;
procedure ChangeToPremiumExpNotificationMessage(): Text
begin
exit(ChangeToPremiumExpNotificationMsg);
end;
procedure ChangeToPremiumExpURL(Notification: Notification)
begin
HyperLink(ChangeToPremiumExpURLTxt);
end;
[EventSubscriber(ObjectType::Page, Page::"My Notifications", 'OnInitializingNotificationWithDefaultState', '', false, false)]
local procedure OnInitializingNotificationWithDefaultState()
var
MyNotifications: Record "My Notifications";
begin
if AreSandboxNotificationsSupported() then
MyNotifications.InsertDefault(GetSandboxNotificationId(), SandboxNotificationNameTok, SandboxNotificationDescTok, true);
if AreNotificationsSupported() then
MyNotifications.InsertDefault(
GetChangeToPremiumExpNotificationId(), ChangeToPremiumExpNotificationNameTok, ChangeToPremiumExpNotificationDescTok, true);
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeShowNotifications()
begin
end;
local procedure IsRunningPreviewEvent()
begin
if not IsPreview then
OnIsRunningPreview(IsPreview);
end;
[IntegrationEvent(false, false)]
local procedure OnIsRunningPreview(var isPreview: Boolean)
begin
end;
}