/// <summary>Updates a list item by providing its content.</summary> /// <param name="listItemId">The list item ID.</param> /// <param name="content">The content which must match the item's schema ID.</param> /// <param name="resolveBehaviors">List of enum that control which parts of the list item are resolved and returned.</param> /// <param name="allowMissingDependencies">Allow creating <see cref="ListItem"/>s that refer to list items or contents that don't exist in the system.</param> /// <param name="timeout">The timeout in milliseconds to wait for completion.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>The updated <see cref="ListItemDetail"/>.</returns> public async Task <ListItemDetail> UpdateAsync(string listItemId, object content, IEnumerable <ListItemResolveBehavior> resolveBehaviors = null, bool allowMissingDependencies = false, TimeSpan?timeout = null, CancellationToken cancellationToken = default(CancellationToken)) { var updateRequest = new ListItemUpdateRequest() { Content = content }; return(await UpdateAsync(listItemId, updateRequest, resolveBehaviors, allowMissingDependencies, timeout, cancellationToken).ConfigureAwait(false)); }
/// <summary>Updates a list item by providing its content.</summary> /// <param name="listItemId">The list item ID.</param> /// <param name="content">The content which must match the item's schema ID.</param> /// <param name="resolve">Resolves the data of referenced list items into the contents's content.</param> /// <param name="allowMissingDependencies">Allow creating <see cref="ListItem"/>s that refer to list items or contents that don't exist in the system.</param> /// <param name="timeout">The timeout in milliseconds to wait for completion.</param> /// <param name="patterns">Comma-separated list of display pattern ids. Resolves display values of referenced list items where the display pattern id matches.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>The updated <see cref="ListItemDetail"/>.</returns> public async Task <ListItemDetail> UpdateAsync(string listItemId, object content, bool resolve = false, bool allowMissingDependencies = false, TimeSpan?timeout = null, IEnumerable <DisplayPatternType> patterns = null, CancellationToken cancellationToken = default(CancellationToken)) { var updateRequest = new ListItemUpdateRequest() { Id = listItemId, Content = content }; return(await UpdateAsync(updateRequest, resolve, allowMissingDependencies, timeout, patterns, cancellationToken).ConfigureAwait(false)); }
private async Task ImportListItemsAsync(string schemaId, IList <PictureparkListItem> listItems) { try { var existingListItems = await GetListItemsAsync(schemaId); foreach (var listItem in listItems) { var existingListItem = existingListItems.FirstOrDefault(existingListItemInner => string.Equals(existingListItemInner.SmintIoKey, listItem.SmintIoKey)); if (existingListItem != null) { var listItemUpdateRequest = new ListItemUpdateRequest() { Content = listItem.Content }; await _client.ListItem.UpdateAsync(existingListItem.PictureparkListItemId, listItemUpdateRequest); listItem.SmintIoMetadataElement.TargetMetadataUuid = existingListItem.PictureparkListItemId; } else { var listItemCreateRequest = new ListItemCreateRequest() { Content = listItem.Content, ContentSchemaId = schemaId }; var listItemDetail = await _client.ListItem.CreateAsync(listItemCreateRequest); listItem.SmintIoMetadataElement.TargetMetadataUuid = listItemDetail.Id; } } var noMoreExistingListItems = existingListItems.Where(existingListItemInner => !listItems.Any(listItem => string.Equals(existingListItemInner.SmintIoKey, listItem.SmintIoKey))); foreach (var noMoreExistingListItem in noMoreExistingListItems) { await _client.ListItem.DeleteAsync(noMoreExistingListItem.PictureparkListItemId); } } catch (Exception ex) { _logger.LogError(ex, $"Error importing list items"); throw; } }
public async Task ShouldCreateAndUpdateObject() { // Arrange var objectName = "ThisObjectD" + new Random().Next(0, 999999); var createManyRequest = new ListItemCreateManyRequest() { AllowMissingDependencies = false, Items = new List <ListItemCreateRequest> { new ListItemCreateRequest { ContentSchemaId = nameof(Tag), Content = new Tag { Name = objectName } } } }; var results = await _client.ListItem.CreateManyAsync(createManyRequest).ConfigureAwait(false); var detail = await results.FetchDetail().ConfigureAwait(false); var itemId = detail.SucceededIds.First(); // Act var request = new ListItemUpdateRequest { Content = new Tag { Name = "Foo" } }; await _client.ListItem.UpdateAsync(itemId, request).ConfigureAwait(false); // Assert var newItem = await _client.ListItem.GetAsync(itemId, new[] { ListItemResolveBehavior.Content }).ConfigureAwait(false); Assert.Equal("Foo", newItem.ConvertTo <Tag>().Name); }
public async Task ShouldCreateAndUpdateObject() { /// Arrange var objectName = "ThisObjectD" + new Random().Next(0, 999999); var createManyRequest = new ListItemCreateManyRequest() { AllowMissingDependencies = false, Requests = new List <ListItemCreateRequest> { new ListItemCreateRequest { ContentSchemaId = nameof(Tag), Content = new Tag { Name = objectName } } } }; var results = await _client.ListItems.CreateManyAsync(createManyRequest); var result = results.First(); /// Act var request = new ListItemUpdateRequest { Id = result.Id, Content = new Tag { Name = "Foo" } }; await _client.ListItems.UpdateAsync(request); /// Assert var newItem = await _client.ListItems.GetAsync(result.Id, true); Assert.Equal("Foo", newItem.ConvertTo <Tag>(nameof(Tag)).Name); }
/// <summary>Updates a list item.</summary> /// <param name="updateRequest">The update request.</param> /// <param name="resolve">Resolves the data of referenced list items into the contents's content.</param> /// <param name="allowMissingDependencies">Allow creating <see cref="ListItem"/>s that refer to list items or contents that don't exist in the system.</param> /// <param name="timeout">The timeout in milliseconds to wait for completion.</param> /// <param name="patterns">Comma-separated list of display pattern ids. Resolves display values of referenced list items where the display pattern id matches.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>The updated <see cref="ListItemDetail"/>.</returns> public async Task <ListItemDetail> UpdateAsync(ListItemUpdateRequest updateRequest, bool resolve = false, bool allowMissingDependencies = false, TimeSpan?timeout = null, IEnumerable <DisplayPatternType> patterns = null, CancellationToken cancellationToken = default(CancellationToken)) { return(await UpdateCoreAsync(updateRequest.Id, updateRequest, resolve, allowMissingDependencies, timeout, patterns, cancellationToken).ConfigureAwait(false)); }