Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Para adicionar, recuperar e verificar se existe Notificações no objeto do request:

 

Bloco de código
languagec#
titlePersonService.cs
linenumberstrue
using Tnf.App.Bus.Notifications;
using Tnf.App.Domain.Services;
using Tnf.App.Dto.Request;
using Tnf.Architecture.Domain.Interfaces.Repositories;
using Tnf.Architecture.Domain.Interfaces.Services;
using Tnf.Architecture.Dto;
using Tnf.Architecture.Dto.Registration;

namespace Tnf.Architecture.Domain.Registration
{
    public class PersonService : AppDomainService<IPersonRepository>, IPersonService
    {
        public PersonService(IPersonRepository repository)
            : base(repository)
        {
        }

        public PersonDto GetPerson(RequestDto<int> id)
        {
            PersonDto dto = null;
            if (!Repository.ExistsPerson(keys.GetId()))
            {
                Notification.Raise(NotificationEvent.DefaultBuilder
                                    .WithNotFoundStatus()
                                    .WithMessage(AppConsts.LocalizationSourceName, Person.Error.CouldNotFindPerson)
                                    .Build());
            }

            if (!Notification.HasNotification())
                dto = Repository.GetPerson(keys);

            return dto;
        }
    }
}

ErrorResponse

Para auxiliar o desenvolvedor a aderir o padrão API TOTVS, foi criado o objeto Tnf.AspNetCore.Mvc.Response.ErrorResponse com os parâmetros e atributos padronizado por esse padrão.

Se houver Notificações de erro durante o fluxo de um sistema web, no retorno do controller esse objeto irá ser criado com todas as Notificações de erro e retornará um IActionResult contendo ele, com o método CreateResponse<IDto>() expostos nas controllers que herdam de Tnf.App.AspNetCore.Mvc.Controllers.TnfAppController:

 

Bloco de código
languagec#
titlePersonController.cs
linenumberstrue
using Microsoft.AspNetCore.Mvc;
using Tnf.Architecture.Application.Interfaces;
using Tnf.Architecture.Dto;
using Tnf.Architecture.Dto.Registration;
using Tnf.App.Dto.Request;
using Tnf.App.AspNetCore.Mvc.Controllers;

namespace Tnf.Architecture.Web.Controllers
{
    [Route(RouteConsts.Person)]
    public class PersonController : TnfAppController
    {
        private readonly IPersonAppService _personAppService;

        public PersonController(IPersonAppService personAppService)
        {
            _personAppService = personAppService;
        }

        [HttpGet("{personId}/{code}")]
        public IActionResult Get(int id, [FromQuery]RequestDto<int> requestDto)
        {
            var response = _personAppService.GetPerson(requestDto.WithId(id));

            return CreateResponse<PersonDto>()
                        .FromErrorEnum(PersonDto.Error.GetPerson)
                        .WithMessage(AppConsts.LocalizationSourceName, PersonDto.Error.GetPerson)
                        .WithDto(response)
                        .Build();
        }
    }
}