Skip to content

[Proposta] Canais de notificação #1

@AugustoDeveloper

Description

@AugustoDeveloper

Primeiramente, parabéns pelo projeto!
Gostaria de propor uma idéia de desacoplamento para o envio de notificações, a idéia é simples e poderia avançar para soluções empresariais(RabbitMQ, MSMQ, MQTT) no futuro, mas de inicio acho que poderia ser utilizado algo como System.Threading.Channel para enviar notificações, sejam por e-mail ou sms, por exemplo.

private static async Task AlertIfDiscountWasRecheadAsync(Product product)
{
    if (!product.DiscountWasReached())
    {
        return;
    }

    Console.WriteLine("Enviando alerta de desconto por e-mail.");

    await SendMailAsync("leonardo@growiz.com.br",
        $"Relatório do produto: { product.Name }",
        "Segue em anexo relatório do produto.",
        ProductReportFileName);
}

Tutorial de System.Threading.Channels

Para o código acima ficaria algo como:

private static async Task AlertIfDiscountWasRecheadAsync(Product product)
{
    if (!product.DiscountWasReached())
    {
        return;
    }

    Console.WriteLine("Enviando alerta de desconto por e-mail.");
    await NotificationDispatcher.NotifyAsync(
       new NotificationItem
       {
        Email = "leonardo@growiz.com.br",
        Subject = $"Relatório do produto: { product.Name }",
        MessagePayload = "Segue em anexo relatório do produto.",
        PhoneNumber = "+5511999999999",
        Attachment = ProductReportFileName
       }, Notifier.Sms | Notifier.Email | Notifier.WhatsApp);
}

A implementação dessa classe estática seria algo como descrito no video de tutoria.
Esta idéia/proposta é mais para incrementar o seu curso :)

Abraço!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions