andrebaltieri / Flunt

Validations and Notifications
https://github.com/andrebaltieri/flunt
MIT License
624 stars 162 forks source link

Erro ao adicionar notifcações com automapper #93

Closed adonisdoda closed 3 years ago

adonisdoda commented 3 years ago

Estou tendo o seguinte cenário:

Utilizo o automapper para fazer o parse de um dto para o dominio utilizando o :

CreateMap<CreateCouponCommand, Coupon>() .ConstructUsing(source => new Coupon(source.Description, source.OffPercentual, source.ValidAt));

Dentro do construtor do meu domínio eu utilizo o AddNotifications, dessa forma :

`

     public Coupon(string description, int offPercentual, long validAt)
      {
          Id = Guid.NewGuid();
          CreatedAt = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
          IsInvalidated = false;
          Description = description;
          OffPercentual = offPercentual;
          ValidAt = validAt;

       AddNotifications(
            new Contract()
            .IsNotEmpty(Id, "Id")
            .IsLowerOrEqualsThan(Description, 250, "Description")
            .IsNotNull(ValidAt, "ValidAt")
            .IsNotNull(Establishment, "Establishment")
            .IsNotNull(CreatedAt, "CreatedAt")
        );
    }`

Porém ao verificar se existe alguma notificação (Mesmo forçando o erro) no próximo step do código esta notificação esta se perdendo, ou seja debugando percebo que ele insere a notificação quando esta construindo meu domínio, mas após o mapeamento com automapper essas notificações deixam de existir.

Testei fazendo um mapeamento 'na mão' e ele funciona de forma correta, mas ao utilizar o automapper me ocorre este problema.

andrebaltieri commented 3 years ago

Bom dia @adonisdoda, provavelmente seu Map está criando uma nova instância e nesta não vem as notificações. As notificações ficam na classe que herda de INotifiable apenas!

Você pode criar um NotificationContext e centralizar as notificações por requisição também, mas não existe uma implementação padrão do Flunt para isto.