Codeunit 9103 SharePoint List Item

App
System Application
Namespace
System.Integration.Sharepoint
Versions
21-28

Procedures, 3

Versions171819202122232425262728

Source242526272829

Source in 29

src/System Application/App/SharePoint/src/model/listitem/SharePointListItem.Codeunit.al91 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 System.Integration.Sharepoint;

codeunit 9103 "SharePoint List Item"
{
    Access = Internal;
    InherentEntitlements = X;
    InherentPermissions = X;

    procedure Parse(Payload: Text; var SharePointListItem: Record "SharePoint List Item" temporary)
    var
        JObject: JsonObject;
    begin
        if JObject.ReadFrom(Payload) then
            Parse(JObject, SharePointListItem);
    end;

    procedure Parse(Payload: JsonObject; var SharePointListItem: Record "SharePoint List Item" temporary)
    var
        JToken: JsonToken;
    begin
        if Payload.Get('value', JToken) then
            foreach JToken in JToken.AsArray() do begin
                SharePointListItem := ParseSingle(JToken.AsObject());
                SharePointListItem.Insert();
            end;
    end;

    procedure ParseSingleReturnValue(Payload: Text; var SharePointListItem: Record "SharePoint List Item" temporary)
    var
        JObject: JsonObject;
        JToken: JsonToken;
    begin
        //extract newly created list item data from the post response that created it.
        if JObject.ReadFrom(Payload) then
            if JObject.Get('d', JToken) then begin
                SharePointListItem := ParseSingle(JToken.AsObject());
                SharePointListItem.Insert();
            end;
    end;

    local procedure ParseSingle(Payload: JsonObject) SharePointListItem: Record "SharePoint List Item" temporary
    var
        SharePointUriBuilder: Codeunit "SharePoint Uri Builder";
        SharePointClient: Codeunit "SharePoint Client";
        JToken: JsonToken;
    begin
        SharePointListItem.Init();
        if Payload.Get('GUID', JToken) then
            SharePointListItem.Guid := JToken.AsValue().AsText();

        if Payload.Get('Id', JToken) then
            SharePointListItem.Id := JToken.AsValue().AsInteger();

        if Payload.Get('Title', JToken) then
            if not JToken.AsValue().IsNull() then
                SharePointListItem.Title := CopyStr(JToken.AsValue().AsText(), 1, MaxStrLen(SharePointListItem.Title));

        if Payload.Get('Created', JToken) then
            SharePointListItem.Created := JToken.AsValue().AsDateTime();

        if Payload.Get('Attachments', JToken) then
            if not JToken.AsValue().IsNull() then
                SharePointListItem.Attachments := JToken.AsValue().AsBoolean();

        if Payload.Get('ContentTypeId', JToken) then
            SharePointListItem."Content Type Id" := CopyStr(JToken.AsValue().AsText(), 1, MaxStrLen(SharePointListItem.Title));

        if Payload.Get('FileSystemObjectType', JToken) then
            SharePointListItem."File System Object Type" := JToken.AsValue().AsInteger();

        if Payload.Get('odata.editLink', JToken) then
            SharePointListItem.OdataEditLink := CopyStr(JToken.AsValue().AsText(), 1, MaxStrLen(SharePointListItem.OdataEditLink));

        if Payload.Get('__metadata', JToken) then
            if JToken.AsObject().Get('uri', JToken) then
                SharePointListItem.OdataEditLink := CopyStr(JToken.AsValue().AsText(), JToken.AsValue().AsText().IndexOf('Web/Lists'), MaxStrLen(SharePointListItem.OdataEditLink));

        if SharePointListItem.OdataEditLink <> '' then begin
            SharePointUriBuilder.SetPath(SharePointListItem.OdataEditLink);
            //guid'854d7f21-1c6a-43ab-a081-20404894b449' -> 854d7f21-1c6a-43ab-a081-20404894b449
            SharePointListItem."List Id" := SharePointUriBuilder.GetMethodParameter('Lists').Substring(6, 36);
        end;

        SharePointClient.ProcessSharePointListItemMetadata(Payload.AsToken(), SharePointListItem);
    end;
}