public async Task <Event> CreateEvent(string subject, DateTimeTimeZone startTime, DateTimeTimeZone endTime, string htmlContent, IEnumerable <Attendee> attendees, Meeting meeting, string bucketId) { //Extension var evExtCollPage = new EventExtensionsCollectionPage(); var dict = new Dictionary <string, object>(); dict.Add("teamId", meeting.TeamId); dict.Add("channelId", meeting.ChannelId); dict.Add("meetingId", meeting.Id); dict.Add("bucketId", bucketId); var openExtension = new OpenTypeExtension { ODataType = "microsoft.graph.openTypeExtension", ExtensionName = EXTENSION_NAME, AdditionalData = dict }; evExtCollPage.Add(openExtension); var groupEvent = new Event() { Subject = subject, Start = startTime, End = endTime, Body = new ItemBody { ContentType = BodyType.Html, Content = htmlContent }, Attendees = attendees, Extensions = evExtCollPage }; return(await GraphClient.Groups[meeting.TeamId].Events.Request().AddAsync(groupEvent)); }
private static async Task UpdateFlightInCalendars(List <string> crewMembers, int flightNumber, string departureGate, DateTime?newDepartureTime = null) { foreach (var userId in crewMembers) { // Get the event var matchingEvents = await graphClient.GetEventsInUserCalendar(userId, $"categories/any(a:a eq 'Assigned Flight') and subject eq 'Flight {flightNumber}'"); var flightEvent = matchingEvents.CurrentPage.FirstOrDefault(); if (flightEvent != null) { if (newDepartureTime != null) { flightEvent.Start.DateTime = newDepartureTime?.ToString("s"); flightEvent.End.DateTime = newDepartureTime?.AddHours(4).ToString("s"); await graphClient.UpdateEventInUserCalendar(userId, flightEvent); } var flightExtension = new OpenTypeExtension { ODataType = "microsoft.graph.openTypeExtension", ExtensionName = "com.contoso.flightData", AdditionalData = new Dictionary <string, object>() }; flightExtension.AdditionalData.Add("departureGate", departureGate); flightExtension.AdditionalData.Add("crewMembers", crewMembers); await graphClient.UpdateFlightExtension(userId, flightEvent.Id, flightExtension); } } }
public async Async.Task GroupCreateExtension() { // Get a groups collection. We'll use the first entry to add the extension. Results in a call to the service. IGraphServiceGroupsCollectionPage groupPage = await graphClient.Groups.Request().GetAsync(); // Create the extension property. OpenTypeExtension newExtension = new OpenTypeExtension(); newExtension.ExtensionName = "com.contoso.trackingKey"; newExtension.AdditionalData = new Dictionary <string, object>(); newExtension.AdditionalData.Add("trackingKeyMajor", "ABC"); newExtension.AdditionalData.Add("trackingKeyMinor", "123"); try { // Add an extension to the group. Results in a call to the service. var extension = await graphClient.Groups[groupPage[0].Id].Extensions.Request().AddAsync(newExtension); // Delete the extension. Results in a call to the service. await graphClient.Groups[groupPage[0].Id].Extensions["com.contoso.trackingKey"].Request().DeleteAsync(); } catch (ServiceException e) { Assert.True(false, e.Error.ToString()); } }
public async Task UpdateOpenExtensionForMe(GraphServiceClient graphClient, string extensionName, Dictionary <string, object> data) { var openExtension = new OpenTypeExtension { ExtensionName = extensionName, AdditionalData = data }; // Note: Client SDK returns Extension, whereas REST API only return 204 with No content // Thus result is *always* null (Client SDK is generated, some UpdateAsync calls do return results, this doesn't) var result = await graphClient.Me.Extensions[extensionName].Request().UpdateAsync(openExtension); }
private static async Task AddFlightToCalendars(FlightTeam flightTeam, List <string> usersToAdd = null) { // Get all flight members var allCrewIds = await graphClient.GetUserIds(flightTeam.Pilots, flightTeam.FlightAttendants); // Initialize flight event var flightEvent = new Event { Subject = $"Flight {flightTeam.FlightNumber}", Location = new Location { DisplayName = flightTeam.Description }, Start = new DateTimeTimeZone { DateTime = flightTeam.DepartureTime.ToString("s"), TimeZone = "UTC" }, End = new DateTimeTimeZone { DateTime = flightTeam.DepartureTime.AddHours(4).ToString("s"), TimeZone = "UTC" }, Categories = new string[] { "Assigned Flight" }, Extensions = new EventExtensionsCollectionPage() }; var flightExtension = new OpenTypeExtension { ODataType = "microsoft.graph.openTypeExtension", ExtensionName = "com.contoso.flightData", AdditionalData = new Dictionary <string, object>() }; flightExtension.AdditionalData.Add("departureGate", flightTeam.DepartureGate); flightExtension.AdditionalData.Add("crewMembers", allCrewIds); flightEvent.Extensions.Add(flightExtension); if (usersToAdd == null) { usersToAdd = allCrewIds; } foreach (var userId in usersToAdd) { //var user = await graphClient.GetUserByUpn(userId); await graphClient.CreateEventInUserCalendar(userId, flightEvent); } }
private static async Task SaveScore(GraphServiceClient client, notificationItem item, double?score) { var extension = new OpenTypeExtension { ODataType = "Microsoft.Graph.OpenTypeExtension", ExtensionName = "com.baywet.happy", }; extension.AdditionalData = new Dictionary <string, object> { { "score", score.Value.ToString() } }; await client.Users[item.UserId].Messages[item.MessageId].Extensions.Request().AddAsync(extension); }
public async Task AddExtensionToUser(string principalName, string extensionName, string key, string value) { var extension = new OpenTypeExtension { ExtensionName = extensionName, AdditionalData = new Dictionary <string, object>() { { key, value } } }; var finalExtension = await AppHelper.GetGraphServiceClient().Users[principalName].Extensions.Request().AddAsync(extension); ForegroundColor = ConsoleColor.Green; WriteLine($"Successfully added extension {key}."); ResetColor(); WriteObject(finalExtension); }
public async Task <List <ResultsItem> > AddOpenExtensionToMe(GraphServiceClient graphClient, string extensionName, Dictionary <string, object> data) { var openExtension = new OpenTypeExtension { ExtensionName = extensionName, AdditionalData = data }; var result = await graphClient.Me.Extensions.Request().AddAsync(openExtension); return(new List <ResultsItem>() { new ResultsItem() { Display = result.Id, Properties = (Dictionary <string, object>)result.AdditionalData } }); }
public async Task ExtensionAddRoamingProfile() { try { var openTypeExtension = new OpenTypeExtension(); openTypeExtension.ExtensionName = "com.contoso.mysettings2"; openTypeExtension.AdditionalData = new Dictionary <string, object>(); openTypeExtension.AdditionalData.Add("theme", "dark"); var e = await graphClient.Me.Extensions.Request().AddAsync(openTypeExtension); Assert.NotNull(e); Assert.Equal(openTypeExtension.ExtensionName, e.Id); // The extension name and identifier should match. } catch (ServiceException e) { if (e.Error.Message == "An extension already exists with given id.") { Assert.True(false, "The extension already exists. Delete the extension step missing."); } } }
public async Task <List <ResultsItem> > AddOpenExtensionToMe(string extensionName, Dictionary <string, object> data) { var openExtension = new OpenTypeExtension { ExtensionName = extensionName, AdditionalData = data }; var result = await graphClient.Me.Extensions.Request(requestOptions) .WithUserAccount(ClaimsPrincipal.Current.ToGraphUserAccount()) .AddAsync(openExtension); return(new List <ResultsItem>() { new ResultsItem() { Display = result.Id, Properties = (Dictionary <string, object>)result.AdditionalData } }); }
public async Task UpdateFlightExtension(string userId, string eventId, OpenTypeExtension flightExtension) { await graphClient.Users[userId].Events[eventId].Extensions["com.contoso.flightData"].Request().UpdateAsync(flightExtension); }