~~ODT~~ echo "
"; echo "Última atualização: "; ver('', false); echo "
";
====== Enviar a Notificação DSI aos Usuários ====== Permite executar imediatamente o //Timer// que envia para os usuários que [[desenvolvimento:especificacoes:sigaa:biblioteca:casos_de_uso:modulo_do_servidor:disseminacao_seletiva_da_informacao:cadastrar_interesse | cadastraram interesse ]] em receber notificação quando novos materiais de um determinado **assunto** ou **autor** de uma determinadao **biblioteca** forem incluídos no acervo. \\ \\ \\ **Observação:** A busca realizada é exata, então se o assunto do Título do material incluído era __'Matemática Financeira'__ o sistema irá procurar uma autoridade de assunto contendo o termo exato __'Matemática Financeira'__. Ou seja, caso um usuário cadastre-se em um assunto mais genérico como __'Matemática'__ esse usuário não irá vai receber a notificação de novo material do acervo, para ele receber, deverá marcar interesse em alguma autoridade de assunto com o texto exato: __'Matemática Financeira'__. Envolvidos: Administradores do sistema de biblioteca da SINFO. Pré-condições: Não há. ===== Descrição do Caso de Uso ===== Ao executar a operação o sistema emite uma mensagem de confirmação se o usuário deseja realmente rodar a rotina que envia a notificação para os usuários. Se o operador confirmar, a rotina é executada imediatamente. \\ \\ Obs.: Essa rotina está programada para ser executada **SEMANALMENTE NO DOMINGO AS 12 HORAS **. \\ ------- --- SQL para criação do Timer no sistema. -------- -- -- cria o que envia o informativo semanal para os usuários com interesse -- -- horaExecucao: 12h -- tipoReplicacao: S = Semanal -- diaExecucao: DOM = 1 -- -- insert into INFRA.REGISTRO_TIMER (id, dia_execucao, hora_execucao, tempo, tipo_repeticao, classe, ativa, servidor_execucao, servidor_restricao) values (33, 1, 12, 0, 'S', 'br.ufrn.sigaa.biblioteca.timer.NotificaUsuariosInteressadosDSITimer', true, 'sistemas1', 'sistemas1i1'); \\ \\ O caso de uso é finalizado. \\ \\ ===== Principais Regras de Negócio ===== * **RN01** - Somente é enviado o informativo para os usuários cadastraram interesse que possuem cadastro **ativo** e **não quitado** na biblioteca. * **RN02** - Somente deve ser enviado no máximo 1 email por usuário por semana. Esse email deve conter a listagem de todos as Catalogação para as quais foram incluídos novos materiais na última semana na biblioteca de interesse do usuário e cujos assuntos ou autores então registrados como de interesse pelo usuário. ==== Resoluções/Legislações Associadas ==== Não se Aplica ===== Classes Persistentes e Tabelas Envolvidas ===== ^ Classe ^ Tabela ^ | br.ufrn.sigaa.biblioteca.informacao_referencia.dominio.PerfilInteresseUsuarioBiblioteca | sigaa.biblioteca.perfil_interesse_usuario_biblioteca | | | sigaa.biblioteca.perfil_interesse_x_autoridade_assunto | | | sigaa.biblioteca.perfil_interesse_x_autoridade_autor | | | sigaa.biblioteca.perfil_interesse_x_biblioteca | ====== Plano de Teste ====== Sistema: SIGAA Módulo: Biblioteca Link(s): Sigaa -> Biblioteca -> Administração -> Tarefas Agendadas -> Enviar Notificação DSI aos Usuários Usuário: jadsonjs Papel que usuário deve ter: SigaaPapeis.BIBLIOTECA_ADMINISTRADOR_SISTEMA ===== Cenários de Teste ===== Pode-se testar essa caso de uso [[desenvolvimento:especificacoes:sigaa:biblioteca:casos_de_uso:modulo_do_servidor:disseminacao_seletiva_da_informacao:cadastrar_interesse | cadatrando interesse ]] em algum assunto ou autor no sistema e logo depois [[desenvolvimento:especificacoes:sigaa:biblioteca:casos_de_uso:processos_tecnicos:catalogacao:operacoes_adicionais:adicionar_materiais_no_acervo | incluído materiais no acervo ]] para um Título que contenha o assunto ou autor registrado no passo anterior e executando essa rotina. O usuário deve receber um email avisando que novos materiais foram incluídos para o referido Título. ===== Dados para o Teste ===== ------- --- Retorna 10 usuários com interesse em receber a notificação de assunto -------- SELECT DISTINCT usuarioBiblioteca.id_usuario_biblioteca, pessoa.nome, usuario.email AS emailUsuario, pessoa.email AS emailPessoa, true, cacheAssunto.entrada_autorizada_assunto as assuntosInteresse, COALESCE(biblioteca.descricao, 'Todas') as bibliotecaInteresse FROM biblioteca.perfil_interesse_usuario_biblioteca perfil INNER JOIN biblioteca.usuario_biblioteca usuarioBiblioteca ON perfil.id_usuario_biblioteca = usuarioBiblioteca.id_usuario_biblioteca INNER JOIN comum.pessoa pessoa ON (usuarioBiblioteca.id_pessoa = pessoa.id_pessoa) INNER JOIN comum.usuario usuario ON (pessoa.id_pessoa = usuario.id_pessoa) LEFT JOIN biblioteca.perfil_interesse_x_autoridade_assunto assuntosInteresse ON perfil.id_perfil_interesse_usuario_biblioteca = assuntosInteresse.id_perfil_interesse_usuario_biblioteca LEFT JOIN biblioteca.perfil_interesse_x_biblioteca bibliotecaInteresse ON perfil.id_perfil_interesse_usuario_biblioteca = bibliotecaInteresse.id_perfil_interesse_usuario_biblioteca LEFT JOIN biblioteca.cache_entidades_marc cacheAssunto ON cacheAssunto.id_autoridade = assuntosInteresse.id_autoridade LEFT JOIN biblioteca.biblioteca ON bibliotecaInteresse.id_biblioteca = biblioteca.id_biblioteca WHERE usuarioBiblioteca.ativo = true AND usuarioBiblioteca.quitado = false LIMIT 10 ------- --- Retorna 10 usuários com interesse em receber a notificação para autores -------- SELECT DISTINCT usuarioBiblioteca.id_usuario_biblioteca, pessoa.nome, usuario.email AS emailUsuario, pessoa.email AS emailPessoa, false, cacheAutor.entrada_autorizada_autor as autorInteresse, COALESCE(biblioteca.descricao, 'Todas') as bibliotecaInteresse FROM biblioteca.perfil_interesse_usuario_biblioteca perfil INNER JOIN biblioteca.usuario_biblioteca usuarioBiblioteca ON perfil.id_usuario_biblioteca = usuarioBiblioteca.id_usuario_biblioteca INNER JOIN comum.pessoa pessoa ON (usuarioBiblioteca.id_pessoa = pessoa.id_pessoa) INNER JOIN comum.usuario usuario ON (pessoa.id_pessoa = usuario.id_pessoa) LEFT JOIN biblioteca.perfil_interesse_x_autoridade_autor autorInteresse ON perfil.id_perfil_interesse_usuario_biblioteca = autorInteresse.id_perfil_interesse_usuario_biblioteca LEFT JOIN biblioteca.perfil_interesse_x_biblioteca bibliotecaInteresse ON perfil.id_perfil_interesse_usuario_biblioteca = bibliotecaInteresse.id_perfil_interesse_usuario_biblioteca LEFT JOIN biblioteca.cache_entidades_marc cacheAutor ON cacheAutor.id_autoridade = autorInteresse.id_autoridade LEFT JOIN biblioteca.biblioteca ON bibliotecaInteresse.id_biblioteca = biblioteca.id_biblioteca WHERE usuarioBiblioteca.ativo = true AND usuarioBiblioteca.quitado = false LIMIT 10