Thursday, July 6, 2023

Search using GRAPH API

 Set(

    _showLoading,

    true

);

If(Button3_16.Text = "People",UpdateContext({_path:_appSearchPeoplePath}),UpdateContext({_path:_appSearchPath}));

Clear(col_allSearchresultsPosts);

Clear(col_allSearchresultsPeople);

Set(var_pageNumber,1);

Set(var_pageSize,3);

Set(

    var_requestBody,

"{

    ""requests"": [

        {

            ""entityTypes"": [

                ""listItem""

            ],

            ""query"": {

                ""queryString"": """&txtComment_3.Text&" path:\"""&_path&"\""""

            },

            ""fields"": [

                ""title"",

                ""listItemId""

            ]

        }

    ]

}"

);

Set(

    _searchText,

    "data:text/plain;base64," & With(

        {

            InputText: (var_requestBody),

            AsciiTable: AddColumns(

                Sequence(

                    2 ^ 8,

                    1

                ),

                "char",

                Char(Value)

            ),

            B64ToBin: Table(

                {

                    b64: "A",

                    bin: "000000"

                },

                {

                    b64: "B",

                    bin: "000001"

                },

                {

                    b64: "C",

                    bin: "000010"

                },

                {

                    b64: "D",

                    bin: "000011"

                },

                {

                    b64: "E",

                    bin: "000100"

                },

                {

                    b64: "F",

                    bin: "000101"

                },

                {

                    b64: "G",

                    bin: "000110"

                },

                {

                    b64: "H",

                    bin: "000111"

                },

                {

                    b64: "I",

                    bin: "001000"

                },

                {

                    b64: "J",

                    bin: "001001"

                },

                {

                    b64: "K",

                    bin: "001010"

                },

                {

                    b64: "L",

                    bin: "001011"

                },

                {

                    b64: "M",

                    bin: "001100"

                },

                {

                    b64: "N",

                    bin: "001101"

                },

                {

                    b64: "O",

                    bin: "001110"

                },

                {

                    b64: "P",

                    bin: "001111"

                },

                {

                    b64: "Q",

                    bin: "010000"

                },

                {

                    b64: "R",

                    bin: "010001"

                },

                {

                    b64: "S",

                    bin: "010010"

                },

                {

                    b64: "T",

                    bin: "010011"

                },

                {

                    b64: "U",

                    bin: "010100"

                },

                {

                    b64: "V",

                    bin: "010101"

                },

                {

                    b64: "W",

                    bin: "010110"

                },

                {

                    b64: "X",

                    bin: "010111"

                },

                {

                    b64: "Y",

                    bin: "011000"

                },

                {

                    b64: "Z",

                    bin: "011001"

                },

                {

                    b64: "a",

                    bin: "011010"

                },

                {

                    b64: "b",

                    bin: "011011"

                },

                {

                    b64: "c",

                    bin: "011100"

                },

                {

                    b64: "d",

                    bin: "011101"

                },

                {

                    b64: "e",

                    bin: "011110"

                },

                {

                    b64: "f",

                    bin: "011111"

                },

                {

                    b64: "g",

                    bin: "100000"

                },

                {

                    b64: "h",

                    bin: "100001"

                },

                {

                    b64: "i",

                    bin: "100010"

                },

                {

                    b64: "j",

                    bin: "100011"

                },

                {

                    b64: "k",

                    bin: "100100"

                },

                {

                    b64: "l",

                    bin: "100101"

                },

                {

                    b64: "m",

                    bin: "100110"

                },

                {

                    b64: "n",

                    bin: "100111"

                },

                {

                    b64: "o",

                    bin: "101000"

                },

                {

                    b64: "p",

                    bin: "101001"

                },

                {

                    b64: "q",

                    bin: "101010"

                },

                {

                    b64: "r",

                    bin: "101011"

                },

                {

                    b64: "s",

                    bin: "101100"

                },

                {

                    b64: "t",

                    bin: "101101"

                },

                {

                    b64: "u",

                    bin: "101110"

                },

                {

                    b64: "v",

                    bin: "101111"

                },

                {

                    b64: "w",

                    bin: "110000"

                },

                {

                    b64: "x",

                    bin: "110001"

                },

                {

                    b64: "y",

                    bin: "110010"

                },

                {

                    b64: "z",

                    bin: "110011"

                },

                {

                    b64: "0",

                    bin: "110100"

                },

                {

                    b64: "1",

                    bin: "110101"

                },

                {

                    b64: "2",

                    bin: "110110"

                },

                {

                    b64: "3",

                    bin: "110111"

                },

                {

                    b64: "4",

                    bin: "111000"

                },

                {

                    b64: "5",

                    bin: "111001"

                },

                {

                    b64: "6",

                    bin: "111010"

                },

                {

                    b64: "7",

                    bin: "111011"

                },

                {

                    b64: "8",

                    bin: "111100"

                },

                {

                    b64: "9",

                    bin: "111101"

                },

                {

                    b64: "+",

                    bin: "111110"

                },

                {

                    b64: "/",

                    bin: "111111"

                }

            )

        },

        With(

            {

                BinRep: Concat(

                    AddColumns(

                        ForAll(

                            Split(

                                InputText,

                                ""

                            ),

                            {Result: ThisRecord.Value}

                        ),

                        "dec",

                        LookUp(

                            AsciiTable,

                            char = Result

                        ).Value

                    ),//Convert text to Ascii character code (decimal)

                    Concat(

                        Sequence(

                            8,

                            8,

                            -1

                        ),

                        Text(

                            If(

                                And(

                                    Mod(

                                        dec,

                                        Power(

                                            2,

                                            Value

                                        )

                                    ) >= Power(

                                        2,

                                        Value - 1

                                    ),

                                    Mod(

                                        dec,

                                        Power(

                                            2,

                                            Value

                                        )

                                    ) < Power(

                                        2,

                                        Value

                                    )

                                ),

                                1,

                                0

                            )

                        )

                    ) & "",

                    ""

                )//Convert decimal to binary

            },

            With(

                {

                    b64string: Concat(

                        Sequence(

                            RoundUp(

                                Len(BinRep) / 6,

                                0

                            ),

                            0

                        ),

                        LookUp(

                            B64ToBin,

                            bin = Mid(

                                BinRep & Left(

                                    "000000",

                                    6 - Mod(

                                        Len(BinRep),

                                        6

                                    )

                                ),

                                6 * Value + 1,

                                6

                            )//Left("000000"....) is padding right with zero

                        ).b64 & "",

                        ""

                    )

                },

                b64string & Left(

                    "====",

                    Mod(

                        4 - Mod(

                            Len(b64string),

                            4

                        ),

                        4

                    )

                )//Convert binary to base64

            )

        )

    )

);

Set(

    _searchResults,

    Office365Groups.HttpRequest(

        _appSearchEndPoint,

        "POST",

        _searchText

    )

);

Set(_searchResultUnTyped, Table(Index(Table(Index(Table(_searchResults.value),1).Value.hitsContainers),1).Value.hits));


ClearCollect(_searchResultCollection, ForAll( _searchResultUnTyped,

{ ID : Value(ThisRecord.Value.resource.fields.listItemId),

  Title : Text(ThisRecord.Value.resource.fields.title)

}));

//Clear the collection first

Clear(CollectionWithSequenceNumbers);

//For each item in the original collection, add a sequence number

ForAll(_searchResultCollection,

    Collect(CollectionWithSequenceNumbers,

        Last(FirstN(AddColumns(_searchResultCollection,"SequenceNumber",CountRows(CollectionWithSequenceNumbers)+1),CountRows(CollectionWithSequenceNumbers)+1)))

);

//ClearCollect(_searchResultCollectionWithSequence,Filter(CollectionWithSequenceNumbers,Value(ID) >= Value(var_pageNumber) And Value(ID) <= Value(var_pageNumber)*Value(var_pageSize)));


ClearCollect(_searchResultCollectionWithSequence,If(Value(var_pageNumber) = 1,FirstN(_searchResultCollection, var_pageSize),FirstN(LastN(_searchResultCollection,CountRows(_searchResultCollection) - Value(var_pageNumber)*Value(var_pageSize)),var_pageSize)));



If(Button3_16.Text = "Posts",ForAll(_searchResultCollectionWithSequence As SR,

Collect(col_allSearchresultsPosts, 

Filter(Posts, PostID = SR.Title))

),ForAll(_searchResultCollectionWithSequence As SR,

Collect(col_allSearchresultsPeople, 

Filter(Employees, Title = SR.Title))

));





/*ClearCollect(_searchResultCollection, ForAll( Table( ParseJSON( _searchResults ) ), { ChangedBy: Text(ThisRecord.Value.ChangedBy), Comments: Text(ThisRecord.Value.Comments), DateOfChange: DateTimeValue(ThisRecord.Value.DateOfChange), Status : Text(ThisRecord.Value.Status) } ))*/



Set(

    _showLoading,

    false

);


No comments:

Post a Comment

Add Service Principle support in Custom Connector

  then search for "Streamlining Integration: Using Service Principal authentication on Custom connectors with Microsoft Graph Applicati...