private static ColumnsFactory SelectColumnsFactoryFor(Resource resource) { WindowsAzureActiveDirectoryGroup group = resource as WindowsAzureActiveDirectoryGroup; if (group != null) { ColumnsFactory result = new GroupColumnsFactory(group); return(result); } Core2EnterpriseUser user = resource as Core2EnterpriseUser; if (user != null) { ColumnsFactory result = new UserColumnsFactory(user); return(result); } DynamicUser dynamicUser = resource as DynamicUser; if (dynamicUser != null) { ColumnsFactory result = new DynamicUserColumnsFactory(dynamicUser); return(result); } string unsupportedSchema = string.Join( Environment.NewLine, resource.Schemas); throw new NotSupportedException(unsupportedSchema); }
private static IReadOnlyDictionary <string, string> PatchDynamicUser(PatchRequest2 patch, IRow row) { DynamicUser dynamicUser = new DynamicUserFactory(row).Create(); Dictionary <string, string> result = new DynamicUserColumnsFactory(dynamicUser) .CreateColumns() .ToDictionary( (KeyValuePair <string, string> item) => item.Key, (KeyValuePair <string, string> item) => item.Value); if (null == patch.Operations || !patch.Operations.Any()) { return(result); } foreach (PatchOperation operation in patch.Operations) { if (string.IsNullOrWhiteSpace(operation?.Path?.AttributePath)) { continue; } string updatedValue = operation.Value.First().Value; string originalValue; if (!result.TryGetValue(operation.Path.AttributePath, out originalValue)) { result.Add(operation.Path.AttributePath, updatedValue); } else { result[operation.Path.AttributePath] = updatedValue; } } return(result); }