Árvore de páginas

Versões comparadas

Chave

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

Índice

 


O TNF faz uso do Notification Pattern em sua estrutura para o retorno e agrupamento de menagens que podem ocorrer na aplicação.

...

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>AppDomainService, IPersonService
    {
		private readonly IPersonRepository _repository;
		
        public PersonService(IPersonRepository repository)
            : base(repository)
        {{
			_repository = repository;
        }

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

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


            return dto_repository.GetPerson(keys);
        }
    }
}

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>()método CreateResponse<IDto> que é chamado pelo método mais especifíco CreateResponseOnGet<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("{id}")]
        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(CreateResponseOnGet(response);
        }
    }
}

 

...