Hi,
I have a requirement to show only the first available free room in the roomsgallery and not all free rooms.
I tried using FirstN on the AvailableRoomEmailName collection (in the onvisible of the RoomSelectScreen window) but I didn't succeed.
Hope that somebody can help me in the right direction. Thanks!
For reference, this is my OnVisible code:
Set(IsPrevRoomSelect; false);;
If(DateTimeRoomChange;
Set(AvailableRoomsCounter; 1);;
UpdateContext({ShowLoading: true});;
Set(RoomsLeft; Blank());;
If(!NoRoomsList;
ClearCollect(AllRooms; Office365.GetRoomsInRoomList(RoomsListsGallery.Selected.Address).value)
);;
Set(DateTimeRoomChange; false);;
/*
If(CountRows(AllRooms) > 20,
Set(AllRoomsConnector, Concat(FirstN(AllRooms, 20), Address & ";"));
If(CountRows(AllRooms) > 40,
Set(AllRoomsConnector1, Concat(LastN(FirstN(AllRooms, 40), 20), Address & ";"))
),
Set(AllRoomsConnector, Concat(AllRooms, Address & ";"))
);
*/
Set(AllRoomsConnector; Concat(FirstN(AllRooms; 20); Address & ";"));;
Concurrent(
ClearCollect(AvailableRooms; Office365.FindMeetingTimes({RequiredAttendees: AllRoomsConnector; IsOrganizerOptional: true;
Start: StartDateTimeUTC; End: EndDateTimeUTC; MeetingDuration: DateDiff(StartDateTime; EndDateTime; Minutes);
MinimumAttendeePercentage: "1"; ActivityDomain: "Unrestricted"}));
If(CountRows(AllRooms) > 20;
If(CountRows(AllRooms) > 40;
Set(AllRoomsConnector1; Concat(LastN(FirstN(AllRooms; 40); 20); Address & ";"));
Set(AllRoomsConnector1; Concat(LastN(AllRooms; CountRows(AllRooms) - 20); Address & ";"))
);;
ClearCollect(AvailableRooms1; Office365.FindMeetingTimes({RequiredAttendees: AllRoomsConnector1; IsOrganizerOptional: true;
Start: StartDateTimeUTC; End: EndDateTimeUTC; MeetingDuration: DateDiff(StartDateTime; EndDateTime; Minutes);
MinimumAttendeePercentage: "1"; ActivityDomain: "Unrestricted"})
);
Clear(AvailableRooms1)
)
);;
If(CountRows(AllRooms) > 20;
Collect(AvailableRooms; AvailableRooms1)
);;
ClearCollect(AvailableRoomsSorted; SortByColumns(First(AvailableRooms).MeetingTimeSuggestions; "Confidence"; Descending); If(CountRows(AllRooms) > 20; SortByColumns(Last(AvailableRooms).MeetingTimeSuggestions; "Confidence"; Descending)));;
ClearCollect(AvailableRoomsConcat; Concat(Filter(First(AvailableRoomsSorted).AttendeeAvailability; Availability = "Free");
Attendee.EmailAddress.Address; ","); If(CountRows(AllRooms) > 20; Concat(Filter(Last(AvailableRoomsSorted).AttendeeAvailability; Availability = "Free");
Attendee.EmailAddress.Address; ",")));;
ClearCollect(AvailableRoomEmails; Split(First(AvailableRoomsConcat).Value; ","); If(CountRows(AllRooms) > 20; Split(Last(AvailableRoomsConcat).Value; ",")));;
ClearCollect(AvailableRoomEmails; Split(First(AvailableRoomsConcat).Value; ","); If(CountRows(AllRooms) > 20; Split(Last(AvailableRoomsConcat).Value; ",")));;
ClearCollect(AvailableRoomEmailName;
Filter( AddColumns(RenameColumns(AvailableRoomEmails; "Result"; "Email");
"Name";
LookUp(AllRooms; Email = Address).Name);
StartsWith(Name;"Workspace")
)
);;
UpdateContext({ShowLoading: false});;
Set(RoomsLeft; CountRows(AllRooms) - 40 * AvailableRoomsCounter)
);;
Clear(AvailableRooms);;
Clear(AvailableRooms1)