Page 7205 CDS Integration User Roles

App
Base Application
Namespace
Microsoft.Integration.Dataverse
Versions
17-28
Source table
5389

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Integration/Dataverse/CDSIntegrationUserRoles.Page.al121 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.Integration.Dataverse;

using Microsoft.Integration.D365Sales;

page 7205 "CDS Integration User Roles"
{
    Caption = 'Dataverse Integration User Roles', Comment = 'Dataverse is the name of a Microsoft Service and should not be translated.';
    DeleteAllowed = false;
    ModifyAllowed = false;
    InsertAllowed = false;
    Editable = false;
    PageType = List;
    SourceTable = "CRM Role";
    SourceTableTemporary = true;
    SourceTableView = sorting(Name);

    layout
    {
        area(content)
        {
            repeater(Control2)
            {
                ShowCaption = false;

                field("Role Name"; Rec.Name)
                {
                    ApplicationArea = Suite;
                    Caption = 'Role Name';
                    Editable = false;
                    StyleExpr = StyleExpression;
                }
                field(Assigned; IsAssigned)
                {
                    ApplicationArea = Suite;
                    Caption = 'Assigned';
                    Editable = false;
                }
            }
        }
    }

    trigger OnAfterGetRecord()
    begin
        if not RequiredRoles.ContainsKey(Rec.RoleId) then begin
            StyleExpression := '';
            exit;
        end;

        IsAssigned := not IsNullGuid(Rec.SolutionId);
        if IsAssigned then
            StyleExpression := 'Favorable'
        else
            StyleExpression := 'Unfavorable';
    end;

    trigger OnInit()
    var
        CDSConnectionSetup: Record "CDS Connection Setup";
        CRMSystemuserroles: Record "CRM Systemuserroles";
        CDSRole: Record "CRM Role";
        CDSIntegrationImpl: Codeunit "CDS Integration Impl.";
        CollectedRoles: Dictionary of [Guid, Boolean];
        RequiredRoleIdList: List of [Guid];
        IntegrationUserId: Guid;
        RequiredRoleId: Guid;
        TempConnectionName: Text;
    begin
        CDSConnectionSetup.Get();
        CDSIntegrationImpl.CheckConnectionRequiredFields(CDSConnectionSetup, false);

        IntegrationUserId := CDSIntegrationImpl.GetIntegrationUserId(CDSConnectionSetup);

        TempConnectionName := CDSIntegrationImpl.GetTempConnectionName();
        CDSIntegrationImpl.RegisterConnection(CDSConnectionSetup, TempConnectionName);
        SetDefaultTableConnection(TABLECONNECTIONTYPE::CRM, TempConnectionName, true);

        if not IsNullGuid(IntegrationUserId) then begin
            CRMSystemuserroles.SetRange(SystemUserId, IntegrationUserId);
            if CRMSystemuserroles.FindSet() then
                repeat
                    CDSRole.SetRange(RoleId, CRMSystemuserroles.RoleId);
                    if CDSRole.FindFirst() then begin
                        Rec.Init();
                        Rec.TransferFields(CDSRole);
                        Rec.Insert();
                        CollectedRoles.Add(Rec.RoleId, true);
                    end;
                until CRMSystemuserroles.Next() = 0;
        end;

        CDSIntegrationImpl.GetIntegrationRequiredRoles(RequiredRoleIdList);
        foreach RequiredRoleId in RequiredRoleIdList do begin
            if not RequiredRoles.ContainsKey(RequiredRoleId) then
                RequiredRoles.Add(RequiredRoleId, true);
            if not CollectedRoles.ContainsKey(RequiredRoleId) then begin
                Rec.Init();
                CDSRole.SetRange(RoleId, RequiredRoleId);
                if CDSRole.FindFirst() then
                    Rec.Name := CDSRole.Name
                else
                    Rec.Name := Format(RequiredRoleId);
                Rec.RoleId := RequiredRoleId;
                Rec.Insert();
                CollectedRoles.Add(Rec.RoleId, true);
            end;
        end;

        UnregisterTableConnection(TABLECONNECTIONTYPE::CRM, TempConnectionName);
    end;

    var
        RequiredRoles: Dictionary of [Guid, Boolean];
        IsAssigned: Boolean;
        StyleExpression: Text;
}