-
Notifications
You must be signed in to change notification settings - Fork 366
/
Copy pathRestoreRecycleBinItem.cs
82 lines (69 loc) · 3.55 KB
/
RestoreRecycleBinItem.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using Microsoft.SharePoint.Client;
using PnP.PowerShell.Commands.Base.PipeBinds;
using PnP.PowerShell.Commands.Utilities;
using System.Management.Automation;
using Resources = PnP.PowerShell.Commands.Properties.Resources;
namespace PnP.PowerShell.Commands.RecycleBin
{
[Cmdlet(VerbsData.Restore, "PnPRecycleBinItem")]
[OutputType(typeof(void))]
public class RestoreRecycleBinItem : PnPSharePointCmdlet
{
private const string ParameterSetName_RESTORE_MULTIPLE_ITEMS_BY_ID = "Restore Multiple Items By Id";
private const string ParameterSetName_RESTORE_SINGLE_ITEM_BY_ID = "Restore Single Items By Id";
[Parameter(Mandatory = false, ParameterSetName = ParameterSetName_RESTORE_SINGLE_ITEM_BY_ID, Position = 0, ValueFromPipeline = true)]
public RecycleBinItemPipeBind Identity;
[Parameter(Mandatory = false, ParameterSetName = ParameterSetName_RESTORE_SINGLE_ITEM_BY_ID)]
public SwitchParameter Force;
[Parameter(Mandatory = false, ParameterSetName = ParameterSetName_RESTORE_SINGLE_ITEM_BY_ID)]
public int RowLimit;
[Parameter(Mandatory = true, ParameterSetName = ParameterSetName_RESTORE_MULTIPLE_ITEMS_BY_ID)]
public string[] IdList;
protected override void ExecuteCmdlet()
{
switch (ParameterSetName)
{
case ParameterSetName_RESTORE_SINGLE_ITEM_BY_ID:
if (ParameterSpecified(nameof(Identity)))
{
var recycleBinItem = Identity.GetRecycleBinItem(Connection.PnPContext);
if (recycleBinItem == null)
{
throw new PSArgumentException("Recycle bin item not found with the ID specified", nameof(Identity));
}
if (Force || ShouldContinue(string.Format(Resources.RestoreRecycleBinItem, recycleBinItem.LeafName), Resources.Confirm))
{
recycleBinItem.Restore();
}
}
else
{
if (ParameterSpecified(nameof(RowLimit)))
{
if (Force || ShouldContinue(string.Format(Resources.Restore0RecycleBinItems, RowLimit), Resources.Confirm))
{
var recycleBinItemCollection = RecycleBinUtility.GetRecycleBinItemCollection(ClientContext, RowLimit, RecycleBinItemState.None);
for (var i = 0; i < recycleBinItemCollection.Count; i++)
{
var recycleBinItems = recycleBinItemCollection[i];
recycleBinItems.RestoreAll();
ClientContext.ExecuteQueryRetry();
}
}
}
else
{
if (Force || ShouldContinue(Resources.RestoreRecycleBinItems, Resources.Confirm))
{
Connection.PnPContext.Site.RecycleBin.RestoreAll();
}
}
}
break;
case ParameterSetName_RESTORE_MULTIPLE_ITEMS_BY_ID:
RecycleBinUtility.RestoreRecycleBinItemInBulk(HttpClient, ClientContext, IdList);
break;
}
}
}
}