Table 9400 Media Repository

App
Base Application
Namespace
System.Utilities
Versions
17-28

Fields, 4Keys, 1Procedures, 3

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Modules/System/Media/MediaRepository.Table.al102 lines, Copyright (c) Microsoft Corporation. MIT

namespace System.Utilities;

using System.Environment;
using System.IO;

table 9400 "Media Repository"
{
    Caption = 'Media Repository';
    DataPerCompany = false;
    ReplicateData = false;
    DataClassification = CustomerContent;

    fields
    {
        field(1; "File Name"; Text[250])
        {
            Caption = 'File Name';
        }
        field(2; "Display Target"; Code[50])
        {
            Caption = 'Display Target';
        }
        field(3; Image; Media)
        {
            Caption = 'Image';
        }
        field(4; "Media Resources Ref"; Code[50])
        {
            Caption = 'Media Resources Ref';
        }
    }

    keys
    {
        key(Key1; "File Name", "Display Target")
        {
            Clustered = true;
        }
    }

    fieldgroups
    {
    }

    var
        FileManagement: Codeunit "File Management";
        FileDoesNotExistErr: Label 'The file %1 does not exist. Import failed.', Comment = '%1 = File Path';

    [TryFunction]
    procedure GetForCurrentClientType(FileName: Text[250])
    var
        ClientTypeManagement: Codeunit "Client Type Management";
        TargetClientType: ClientType;
    begin
        TargetClientType := ClientTypeManagement.GetCurrentClientType();

        if TargetClientType = ClientType::Teams then begin
            if Rec.Get(FileName, Format(TargetClientType)) then
                exit;
            TargetClientType := ClientType::Web;
        end;

        Rec.Get(FileName, Format(TargetClientType));
    end;

    [Scope('OnPrem')]
    procedure ImportMedia(FilePath: Text; DisplayTarget: Code[50])
    var
        MediaResourcesMgt: Codeunit "Media Resources Mgt.";
        FileName: Text[250];
        MediaResourcesCode: Code[50];
    begin
        if FileManagement.ServerFileExists(FilePath) then begin
            FileName := CopyStr(FileManagement.GetFileName(FilePath), 1, MaxStrLen(FileName));
            if not Get(FileName, DisplayTarget) then begin
                Init();
                "File Name" := FileName;
                "Display Target" := DisplayTarget;
                Insert(true);
            end;
            MediaResourcesCode := CopyStr(FileName, 1, MaxStrLen("Media Resources Ref"));
            MediaResourcesMgt.InsertMediaFromFile(MediaResourcesCode, FilePath);
            "Media Resources Ref" := MediaResourcesCode;
            Modify(true);
        end else
            Error(FileDoesNotExistErr, FilePath);
    end;

    [Scope('OnPrem')]
    procedure SetIconFromInstream(MediaResourceRef: Code[50]; MediaInstream: InStream)
    var
        MediaResourcesMgt: Codeunit "Media Resources Mgt.";
    begin
        if not MediaResourcesMgt.InsertMediaFromInstream(MediaResourceRef, MediaInstream) then
            exit;

        Validate("Media Resources Ref", MediaResourceRef);
        Modify(true);
    end;
}