// Token: 0x06001BF6 RID: 7158 RVA: 0x0006CC90 File Offset: 0x0006AE90
        private Dictionary <string, List <AttachmentPermissionAssignment> > ProcessUpdateAttachmentPermissionsRequest(UpdateAttachmentPermissionsRequest request, UserContext userContext, CallContext callContext, out List <string> resourceList)
        {
            Dictionary <string, List <AttachmentPermissionAssignment> > dictionary = new Dictionary <string, List <AttachmentPermissionAssignment> >();
            List <string> list = new List <string>();

            resourceList = new List <string>();
            AttachmentDataProvider[] providers = userContext.AttachmentDataProviderManager.GetProviders(callContext, null);
            foreach (AttachmentDataProviderPermissions attachmentDataProviderPermissions2 in request.AttachmentDataProviderPermissions)
            {
                if (attachmentDataProviderPermissions2.PermissionAssignments != null)
                {
                    string attachmentDataProviderId = attachmentDataProviderPermissions2.AttachmentDataProviderId;
                    foreach (AttachmentPermissionAssignment attachmentPermissionAssignment in attachmentDataProviderPermissions2.PermissionAssignments)
                    {
                        resourceList.Add(attachmentPermissionAssignment.ResourceLocation);
                    }
                    if (string.IsNullOrEmpty(attachmentDataProviderId))
                    {
                        if (providers != null)
                        {
                            foreach (AttachmentPermissionAssignment attachmentPermissionAssignment2 in attachmentDataProviderPermissions2.PermissionAssignments)
                            {
                                bool flag = false;
                                AttachmentDataProvider[] array = providers;
                                int l = 0;
                                while (l < array.Length)
                                {
                                    AttachmentDataProvider attachmentDataProvider = array[l];
                                    if (attachmentDataProvider.FileExists(attachmentPermissionAssignment2.ResourceLocation))
                                    {
                                        flag = true;
                                        if (dictionary.ContainsKey(attachmentDataProvider.Id))
                                        {
                                            dictionary[attachmentDataProvider.Id].Add(attachmentPermissionAssignment2);
                                            break;
                                        }
                                        dictionary.Add(attachmentDataProvider.Id, new List <AttachmentPermissionAssignment>());
                                        dictionary[attachmentDataProvider.Id].Add(attachmentPermissionAssignment2);
                                        break;
                                    }
                                    else
                                    {
                                        l++;
                                    }
                                }
                                if (!flag)
                                {
                                    list.Add(attachmentPermissionAssignment2.ResourceLocation);
                                }
                            }
                        }
                    }
                    else if (dictionary.ContainsKey(attachmentDataProviderId))
                    {
                        dictionary[attachmentDataProviderId].AddRange(attachmentDataProviderPermissions2.PermissionAssignments);
                    }
                    else
                    {
                        dictionary.Add(attachmentDataProviderId, new List <AttachmentPermissionAssignment>());
                        dictionary[attachmentDataProviderId].AddRange(attachmentDataProviderPermissions2.PermissionAssignments);
                    }
                }
            }
            if (list.Count > 0)
            {
                ExTraceGlobals.AttachmentHandlingTracer.TraceDebug <int>(0L, "[UpdateAttachmentPermissions : ProcessUpdateAttachmentPermissionsRequest] There were {0} number of resources not found on the existing data providers", list.Count);
                UpdateAttachmentPermissions.CreateFailureMessages(userContext, userContext.ExchangePrincipal, null, list, resourceList, null);
            }
            return(dictionary);
        }
 // Token: 0x06001BF3 RID: 7155 RVA: 0x0006C899 File Offset: 0x0006AA99
 public UpdateAttachmentPermissions(CallContext callContext, UpdateAttachmentPermissionsRequest permissionsRequest) : base(callContext)
 {
     UpdateAttachmentPermissions.ConvertAliasesToExternalDirectoryObjectIds(permissionsRequest.UserIds);
     this.permissionsRequest = permissionsRequest;
     OwsLogRegistry.Register(UpdateAttachmentPermissions.UpdateAttachmentPermissionsActionName, typeof(UpdateAttachmentPermissionsMetadata), new Type[0]);
 }