Ir para o conteúdo principal

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:

  • Emissor - string - Emissor da notificação (mas é um string então pode ser qualquer coisa)
  • Tipo - Enum (0 - Notificação, 1 - Aviso, 2 - Erro/Problema, 3 - Manutenção) - Tipo de notificação
  • Descrição - string - Descrição da Notificação
  • UrlRedirecionamento - string - Url que o usuário é redirecionado quando clica na notificação
  • UsuariosAlvosIds - IEnumerable int - Usuários que a notificação vai aparecer
  • PerfisAlvosIds - IEnumerable int - Perfis que a notificação vai aparecer
  • SistemasAlvos - IEnumerable Enum SIstemas - Sistemas que a notificação vai aparecer (23/10/2024 - Não coloque nada nessa propriedade porque a rotina não implementa ela ainda)

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