Esempio n. 1
0
        public async Task <IActionResult> PatchNoteAsync([FromRoute] string recordId,
                                                         [FromBody] ClientModels.Todos.TodoPatchInfo patchInfo, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            if (patchInfo == null)
            {
                var error = ServiceErrorResponses.BodyIsMissing("RecordPatchInfo");
                return(this.BadRequest(error));
            }

            if (!Guid.TryParse(recordId, out var recordIdGuid))
            {
                var error = ServiceErrorResponses.TodoNotFound(recordId);
                return(this.NotFound(error));
            }

            if (!await IsSameUser(recordIdGuid, cancellationToken))
            {
                var error = ServiceErrorResponses.TodoNotFound(recordId);
                return(NotFound(error));
            }

            var modelPatchInfo = TodoPathcInfoConverter.Convert(recordIdGuid, patchInfo);

            Models.Todos.Todo modelRecord;

            try
            {
                modelRecord = await this._todoService.PatchAsync(modelPatchInfo, cancellationToken).ConfigureAwait(false);
            }
            catch (RecordNotFoundException)
            {
                var error = ServiceErrorResponses.TodoNotFound(recordId);
                return(this.NotFound(error));
            }

            var clientNote = TodoConverter.Convert(modelRecord);

            return(this.Ok(clientNote));
        }