Codeunit 1440 RC Headlines Page Common, source in 29

Source29

src/Layers/W1/BaseApp/System/Headlines/RCHeadlinesPageCommon.Codeunit.al109 lines, Copyright (c) Microsoft Corporation. MIT

namespace System.Visualization;

codeunit 1440 "RC Headlines Page Common"
{

    var
        Headlines: Codeunit Headlines;
        RCHeadlinesExecutor: Codeunit "RC Headlines Executor";
        DefaultFieldsVisible: Boolean;
        DocumentationTxt: Label 'Want to learn more about %1?', Comment = '%1 is the Business Central short product name.';
        GreetingText: Text[250];
        DocumentationText: Text[250];
        UserGreetingVisible: Boolean;

    procedure HeadlineOnOpenPage(RoleCenterPageID: Integer)
    var
        RCHeadlinesUserData: Record "RC Headlines User Data";
        [SecurityFiltering(SecurityFilter::Ignored)]
        RCHeadlinesUserData2: Record "RC Headlines User Data";
    begin
        if RCHeadlinesUserData2.WritePermission() then begin
            if not RCHeadlinesUserData.Get(UserSecurityId(), RoleCenterPageID) then begin
                RCHeadlinesUserData.Init();
                RCHeadlinesUserData."Role Center Page ID" := RoleCenterPageID;
                RCHeadlinesUserData."User ID" := UserSecurityId();
                RCHeadlinesUserData.Insert();
            end;
            RCHeadlinesUserData."User workdate" := WorkDate();
            if ShouldCreateAComputeJob(RCHeadlinesUserData) then begin
                RCHeadlinesUserData."Last Computed" := CurrentDateTime();
                RCHeadlinesUserData.Modify();
                RCHeadlinesExecutor.ScheduleTask(RoleCenterPageID);
            end else
                RCHeadlinesUserData.Modify();
        end;
        GreetingText := Headlines.GetUserGreetingText();
        DocumentationText := CreateDocumentationText();
        ComputeDefaultFieldsVisibility(RoleCenterPageID);

        Commit(); // not to mess up the other page parts that may do IF CODEUNIT.RUN()
    end;

    local procedure CreateDocumentationText() DocumentationText: Text[250]
    begin
        DocumentationText := StrSubstNo(DocumentationTxt, PRODUCTNAME.Short());
        OnAfterCreateDocumentationText(DocumentationText);
    end;

    local procedure ShouldCreateAComputeJob(RCHeadlinesUserData: Record "RC Headlines User Data"): Boolean
    var
        OneHour: Duration;
    begin
        if RCHeadlinesUserData."Last Computed" = 0DT then
            exit(true);
        OneHour := 60 * 60 * 1000;
        exit(CurrentDateTime() - RCHeadlinesUserData."Last Computed" > OneHour);
    end;

    procedure ComputeDefaultFieldsVisibility(RoleCenterPageID: Integer)
    var
        ExtensionHeadlinesVisible: Boolean;
    begin
        OnIsAnyExtensionHeadlineVisible(ExtensionHeadlinesVisible, RoleCenterPageID);
        DefaultFieldsVisible := not ExtensionHeadlinesVisible;
        UserGreetingVisible := Headlines.ShouldUserGreetingBeVisible();
    end;

    procedure DocumentationUrlTxt() Result: Text
    begin
        Result := 'https://go.microsoft.com/fwlink/?linkid=2152979';
        OnAfterDocumentationUrlTxt(Result);
    end;

    procedure IsUserGreetingVisible(): Boolean
    begin
        exit(UserGreetingVisible);
    end;

    procedure GetGreetingText(): Text
    begin
        exit(GreetingText);
    end;

    procedure AreDefaultFieldsVisible(): Boolean
    begin
        exit(DefaultFieldsVisible);
    end;

    procedure GetDocumentationText(): Text
    begin
        exit(DocumentationText);
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterCreateDocumentationText(var DocumentationText: Text[250])
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterDocumentationUrlTxt(var Result: Text)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnIsAnyExtensionHeadlineVisible(var ExtensionHeadlinesVisible: Boolean; RoleCenterPageID: Integer)
    begin
    end;
}