início
// Preparar os dados
carregar(ListaParticipantes, InicioTransmissao, FimTransmissao, Tolerancia) //Tolerância de 30s para momentos de desconexão
para cada participante em ListaParticipantes:
// Normalizar sessões e remover inválidas
sessoes = filtrar(participante.Sessoes, entrada < saida)
// Mesclar sessões sobrepostas (opcional)
sessoes = mesclar(sessoes)
// Verificação direta: existe sessão que cobre todo o evento?
se existe sessao em sessoes tal que
sessao.entrada <= InicioTransmissao + Tolerancia
e sessao.saida >= FimTransmissao - Tolerancia:
enviarEmailAgradecimento(participante.Email, participante.Nome)
registrar(participante.ID, "ENVIADO")
senao:
// Alternativa simples: somar tempo assistido
tempoAssistido = somarDuracoes(sessoes)
duracaoEvento = FimTransmissao - InicioTransmissao
se tempoAssistido >= duracaoEvento - Tolerancia:
enviarEmailAgradecimento(participante.Email, participante.Nome)
registrar(participante.ID, "ENVIADO")
senao:
registrar(participante.ID, "NAO_ENVIADO", tempoAssistido)
fim