public Task <TodoItem> PatchAsync(TodoPatchInfo patchInfo, CancellationToken cancellationToken) { if (patchInfo == null) { throw new ArgumentNullException(nameof(patchInfo)); } cancellationToken.ThrowIfCancellationRequested(); var todoItem = todoItems.Find(item => item.Id == patchInfo.Id && item.UserId == patchInfo.UserId) .FirstOrDefault(); if (todoItem == null) { throw new TodoNotFoundException($"TodoItem {patchInfo.Id} not found"); } var updated = false; if (patchInfo.Title != null) { todoItem.Title = patchInfo.Title; updated = true; } if (patchInfo.Text != null) { todoItem.Text = patchInfo.Text; updated = true; } if (patchInfo.Priority != null) { todoItem.Priority = (TodoPriority)patchInfo.Priority; updated = true; } if (patchInfo.State != null) { todoItem.State = (TodoState)patchInfo.State; updated = true; } if (updated) { todoItem.LastUpdateAt = DateTime.UtcNow; todoItems.ReplaceOne(item => item.Id == patchInfo.Id, todoItem); } return(Task.FromResult(todoItem)); }
public Task <Todo> PatchAsync(TodoPatchInfo patchInfo, CancellationToken cancellationToken) { if (patchInfo == null) { throw new ArgumentNullException(nameof(patchInfo)); } cancellationToken.ThrowIfCancellationRequested(); var resultNote = _todos.Find <Todo>(record => record.Id == patchInfo.RecordId).First(); if (resultNote == null) { // TODO исключение notenotfound } var updated = false; if (patchInfo.Title != null) { resultNote.Title = patchInfo.Title; updated = true; } if (patchInfo.Text != null) { resultNote.Text = patchInfo.Text; updated = true; } if (updated) { resultNote.LastUpdatedAt = DateTime.UtcNow; } return(Task.FromResult(resultNote)); }