public async Task <IActionResult> PatchToDoAsync([FromRoute] string userId, string todoId, [FromBody] ToDoUpdateInfo updInfo) { var UserIdfromTokken = HttpContext.User.FindFirst(p => p.Type == "sub").Value; if (UserIdfromTokken == null || userId != UserIdfromTokken) { var error = ServiceErrorResponses.AuthIsNotConfirmed("Unauthorized request"); } var todoServ = new ToDoService(UserIdfromTokken); if (!int.TryParse(todoId, out var ToDoIdCheck)) { var error = ServiceErrorResponses.ToDoNotFound(todoId); return(this.NotFound(error)); } var todoIdPatch = todoServ.Get(ToDoIdCheck); if (todoIdPatch == null) { var error = ServiceErrorResponses.ToDoNotFound(todoId); return(this.NotFound(error)); } var updated = false; if (updInfo.Text != null) { todoIdPatch.Text = updInfo.Text; updated = true; } if (updInfo.IsDone != null) { todoIdPatch.IsDone = updInfo.IsDone.Value; updated = true; } if (!updated) { var error = ServiceErrorResponses.BodyIsMissingOrUncorrect(updInfo.ToString()); return(this.BadRequest(error)); } todoIdPatch.LastUpdatedAt = DateTime.UtcNow; todoServ.Update(ToDoIdCheck, todoIdPatch); var clientToDo = ToDoConverter.Convert(todoIdPatch); return(this.Ok(clientToDo)); }