public async Async.Task PlannerPlanDetailsUpdate() { var group = await CreateGroup(); this.testGroup = group; await Async.Task.Delay(3000); // sometimes we need to delay, the group information needs to be set before we can create a plan. var plannerPlan = await CreatePlan(group); PlannerPlanDetails planDetails = await graphClient.Planner.Plans[plannerPlan.Id].Details.Request().GetAsync(); string etag = planDetails.GetEtag(); PlannerPlanDetails planDetailsToUpdate = new PlannerPlanDetails(); planDetailsToUpdate.CategoryDescriptions = new PlannerCategoryDescriptions(); planDetailsToUpdate.CategoryDescriptions.Category1 = "First category"; planDetailsToUpdate.CategoryDescriptions.Category4 = "Category 4"; planDetailsToUpdate.SharedWith = new PlannerUserIds(); planDetailsToUpdate.SharedWith.Add("me"); PlannerPlanDetails updatedPlanDetails = await graphClient.Planner.Plans[plannerPlan.Id].Details.Request().Header("If-Match", etag).Header("Prefer", "return=representation").UpdateAsync(planDetailsToUpdate); Assert.AreEqual("First category", updatedPlanDetails.CategoryDescriptions.Category1); Assert.AreEqual("Category 4", updatedPlanDetails.CategoryDescriptions.Category4); // plan creator is the current user as well, we can get the id from there. Assert.IsTrue(updatedPlanDetails.SharedWith.Contains(plannerPlan.CreatedBy.User.Id)); }
/// <summary> /// Update the navigation property details in planner /// <param name="body"></param> /// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param> /// </summary> public RequestInformation CreatePatchRequestInformation(PlannerPlanDetails body, Action <DetailsRequestBuilderPatchRequestConfiguration> requestConfiguration = default) { _ = body ?? throw new ArgumentNullException(nameof(body)); var requestInfo = new RequestInformation { HttpMethod = Method.PATCH, UrlTemplate = UrlTemplate, PathParameters = PathParameters, }; requestInfo.SetContentFromParsable(RequestAdapter, "application/json", body); if (requestConfiguration != null) { var requestConfig = new DetailsRequestBuilderPatchRequestConfiguration(); requestConfiguration.Invoke(requestConfig); requestInfo.AddRequestOptions(requestConfig.Options); requestInfo.AddHeaders(requestConfig.Headers); } return(requestInfo); }
public async Task <PlannerPlan> GetOrCreatePlanByChannel(string groupId, string channelId) { var channel = await GraphClient.Teams[groupId].Channels[channelId].Request().GetAsync(); var plans = new List <PlannerPlan>(); var pagedItems = await GraphClient.Groups[groupId].Planner.Plans.Request().GetAsync(); plans.AddRange(pagedItems.CurrentPage); while (pagedItems.NextPageRequest != null) { pagedItems = await pagedItems.NextPageRequest.GetAsync(); plans.AddRange(pagedItems.CurrentPage); } var retValue = plans.FirstOrDefault(o => o.Title == channel.DisplayName); if (retValue == null) { retValue = await CreatePlan(groupId, channel.DisplayName); } var plannerPlanDetails = await GraphClient.Planner.Plans[retValue.Id].Details.Request().GetAsync(); if (string.IsNullOrEmpty(plannerPlanDetails.CategoryDescriptions.Category1) || plannerPlanDetails.CategoryDescriptions.Category1 != "Pre-Read") { var plannerDetail = new PlannerPlanDetails { CategoryDescriptions = new PlannerCategoryDescriptions { Category1 = "Pre-Read", Category2 = "Meeting" } }; await GraphClient.Planner.Plans[retValue.Id].Details.Request().Header("If-Match", plannerPlanDetails.GetEtag()).UpdateAsync(plannerDetail); } return(retValue); }