Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }