/// <summary> /// Checks the in publish and approve file asynchronous. /// </summary> /// <param name="file">The file.</param> /// <param name="comment">The comment.</param> /// <param name="checkInType">Type of the check in.</param> public async Task CheckInPublishAndApproveFileAsync(File file, string comment = null, CheckinType?checkInType = null) { if (file.CheckOutType != CheckOutType.None) { file.CheckIn(comment ?? "Updating file", checkInType ?? CheckinType.MajorCheckIn); } if (file.Level == FileLevel.Draft) { file.Publish(comment ?? "Updating file"); } file.Context.Load(file, f => f.ListItemAllFields); await file.Context.ExecuteQueryAsync(); if (file.ListItemAllFields["_ModerationStatus"].ToString() == "2") //: pending { file.Approve(comment ?? "Updating file"); await file.Context.ExecuteQueryAsync(); } }
private void EnsurePublish(File file, string publishComment) { // Load dependent data. var parentList = file.ListItemAllFields.ParentList; if (!parentList.IsPropertyAvailable("EnableMinorVersion") || !parentList.IsPropertyAvailable("EnableModeration") || !file.IsPropertyAvailable("Level") || !file.IsPropertyAvailable("ListItemAllFields")) { _clientContext.Load(parentList); _clientContext.Load(file); _clientContext.ExecuteQuery(); } var isDirty = false; if (file.Level == FileLevel.Checkout) { file.CheckIn(string.Empty, CheckinType.MajorCheckIn); isDirty = true; } if (parentList.EnableMinorVersions && file.Level != FileLevel.Published) { file.Publish(publishComment); isDirty = true; } if (parentList.EnableModeration && Convert.ToInt32(file.ListItemAllFields["_ModerationStatus"]) != 0) { file.Approve(string.Empty); isDirty = true; } if (isDirty) { file.RefreshLoad(); _clientContext.ExecuteQuery(); } }