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