Esempio n. 1
0
        public async Task <IActionResult> GetTodoAsync([FromRoute] string recordId, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            Todo record;
            var  nameIdentifier = this.HttpContext.User.Claims
                                  .FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier);
            var user = await _userRepository.GetAsync(nameIdentifier.Value, cancellationToken).ConfigureAwait(false);

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

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

            try
            {
                record = await _todoService.GetAsync(modelTodoId, cancellationToken).ConfigureAwait(false);
            }
            catch (RecordNotFoundException e)
            {
                var error = ServiceErrorResponses.TodoNotFound(recordId);
                return(NotFound(error));
            }

            var clientRecord = TodoConverter.Convert(record);

            return(this.Ok(clientRecord));
        }
Esempio n. 2
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));
        }