Libraries (Bibliotecas)

Manuais de como implementar bibliotecas nos projetos

Cebi.NotificacoesAmbiente

Cebi.NotificacoesAmbiente

Essa documentação serve como guia para utilização da biblioteca de notificações, o guia majoritariamente servirá para a utilização em sistemas SSB, mas muito possivelmente funcionará em outros sistemas com algumas alterações

Avisos

A biblioteca só pode ser instalada nos projetos de API, sendo assim só pode ser usada na API

Pasted image 20241023145453.png

Além disso é necessário a Unit of Work da própria notificação, exemplo:

Pasted image 20241023145921.png

Pode ser feito um service exclusivo pra ela no projeto de API que realiza o processo sem precisar chamar a unit em cada controller que for ser utilizado a notificação, exemplo:

using Cebi.NotificacoesAmbiente.Dal;
using Cebi.NotificacoesAmbiente.Domain.Enums;
using Cebi.NotificacoesAmbiente.Domain.Interfaces;
using Cebi.NotificacoesAmbiente.Domain.Services;
using Cebi.Util.Domain.Exceptions;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Cebi.Ssb.DividaAtiva.Api.Services
{
    public class NotificacoesAmbienteService
    {
        private static INotificacoesAmbienteUnitOfWork _unitNotificacao =  new NotificacoesAmbienteUnitOfWork();

        public static async Task IncluirNotificacaoAmbiente(string emissor, TipoNotificacaoAmbienteEnum tipoNotificacao, string descricao, string url = "",
                                                            IEnumerable<int> usuariosIds = null, IEnumerable<int> perfis = null)
        {
            if (!usuariosIds.Any() && !perfis.Any())
                throw new CebiException("Algum alvo é necessário para o envio da notificação");

            IncluirNotificacoesAmbienteCommand notificacao = new IncluirNotificacoesAmbienteCommand
            {
                Emissor = emissor,
                Tipo = tipoNotificacao,
                Descricao = descricao,
                UrlRedirecionamento = url,
                UsuariosAlvosIds = usuariosIds,
                PerfisAlvosIds = perfis
            };

            new IncluirNotificacoesAmbienteService(_unitNotificacao).Executar(notificacao);

            _unitNotificacao.CompleteAsync();
        } 
    }
}

Exemplo de Uso

var command = new IncluirNotificacoesAmbienteCommand()
{
	Emissor = "Teste Url 2",
	Tipo = TipoNotificacaoAmbienteEnum.Notificacao,
	Descricao = "Teste Divida Ativa",
	UsuariosAlvosIds = new List<int> { 59 },
	UrlRedirecionamento =    "/divida_ativa_ssb/Api/DividaAtiva/Acompanhamento/Receita/UltimoAno/Grafico"
};

new IncluirNotificacoesAmbienteService(_unitNotificacao).Executar(command);

_unitNotificacao.Complete();

O Objeto da notificação (IncluirNotificacoesAmbienteCommand) possui algumas propriedades:

As únicas propriedades obrigatórias são: Emissor, Tipo, Descrição e algum alvo (UsuariosAlvosIds ou PerfisAlvosIds)