Notificação Relatório de Extensão

Esta caso de uso é responsável por enviar uma notificação aos coordenadores de ações de extensão que serão finalizadas no período de 30 dias, informando a necessidade do envio do relatório final para análise.

Descrição do Caso de Uso

O timer verifica as ações de extensão que estão vigentes e que faltam 1 mês para o prazo de fim de preenchimento dos relatórios finais.

Serão notificados o seguintes envolvidos no estágio:

- Coordenador da Ação de Extensão

O Email deve seguir o seguinte modelo:

Mensagem Gerada pelo ##siglaSistema## - ##nomeSistema## Caro(a) Coordenador(a) ##nomeCoordenador## A ação de Extensão: ##codigoTituloAtividade## será finalizada em menos de 30 dias. Não esqueça de cadastrar os relatórios parciais e/ou finais desta ação.

Principais Regras de Negócio

Classes Persistentes e Tabelas Envolvidas

Classe Tabela
br.ufrn.sigaa.pessoa.dominio.Projeto projetos.projeto
br.ufrn.sigaa.pessoa.dominio.Pessoa sigaa.comum.pessoa
br.ufrn.sigaa.dominio.Usuario sigaa.comum.usuario
br.ufrn.sigaa.estagio.dominio.MembroProjeto projetos.membro_projeto
br.ufrn.sigaa.estagio.dominio.AtividadeExtensao extensao.atividade
br.ufrn.sigaa.estagio.dominio.RelatorioAcaoExtensao extensao.relatorio_acao_extensao

Plano de Teste

Sistema: SIGAA

Módulo: -

Link(s): -

Usuário: -

Papel que usuário deve ter: -

Cenários de Teste

Primeira Alternativa

Segunda Alternativa

Dados para o Teste

--Consultar os projetos que estão pendentes de relatório
 
SELECT a.id_atividade, a.sequencia, a.id_tipo_atividade_extensao, projeto.titulo, projeto.ano, usuario.email AS emailCoordenador, pessoa.nome AS nomeCoordenador  
FROM extensao.atividade a 
INNER JOIN projetos.projeto projeto ON a.id_atividade = projeto.id_projeto 
INNER JOIN projetos.membro_projeto coordenador ON coordenador.id_membro_projeto = projeto.id_coordenador 
INNER JOIN comum.pessoa pessoa ON pessoa.id_pessoa = coordenador.id_pessoa 
INNER JOIN comum.usuario usuario ON usuario.id_pessoa = pessoa.id_pessoa 
WHERE projeto.data_fim > now() AND (   ( projeto.data_fim - now() ) <= CAST('30 day' AS INTERVAL) )  
AND a.id_atividade NOT IN ( SELECT id_atividade FROM extensao.relatorio_acao_extensao WHERE id_atividade = a.id_atividade AND id_tipo_relatorio = 2 AND ativo  )
AND usuario.inativo = falseValue()