feat: add tab navigation and content management for notifications page, allowing users to switch between Enviar Notificação, Gerenciar Templates, and Agendamentos for improved organization and usability

This commit is contained in:
2025-11-30 16:33:52 -03:00
parent 2fb7df8849
commit 4ab151bed7
11 changed files with 1370 additions and 57 deletions

View File

@@ -121,15 +121,38 @@ async function registrarNotificacoes(
) {
const { ticket, titulo, mensagem, usuarioEvento } = params;
// Obter URL do sistema
let urlSistema = process.env.FRONTEND_URL || "http://localhost:5173";
if (!urlSistema.match(/^https?:\/\//i)) {
urlSistema = `http://${urlSistema}`;
}
// Notificar solicitante
if (ticket.solicitanteEmail) {
await ctx.runMutation(api.email.enfileirarEmail, {
destinatario: ticket.solicitanteEmail,
destinatarioId: ticket.solicitanteId,
assunto: `${titulo} - Chamado ${ticket.numero}`,
corpo: `${mensagem}\n\n---\nCentral de Chamados SGSE - Sistema de Gerenciamento de Secretaria`,
enviadoPor: usuarioEvento,
});
// Tentar usar template, senão usar envio direto
try {
await ctx.runAction(api.email.enviarEmailComTemplate, {
destinatario: ticket.solicitanteEmail,
destinatarioId: ticket.solicitanteId,
templateCodigo: "chamado_atualizado",
variaveis: {
solicitante: ticket.solicitanteNome || "Usuário",
numeroTicket: ticket.numero,
mensagem: mensagem,
urlSistema,
},
enviadoPor: usuarioEvento,
});
} catch (error) {
// Fallback para envio direto
await ctx.runMutation(api.email.enfileirarEmail, {
destinatario: ticket.solicitanteEmail,
destinatarioId: ticket.solicitanteId,
assunto: `${titulo} - Chamado ${ticket.numero}`,
corpo: `${mensagem}\n\n---\nCentral de Chamados SGSE - Sistema de Gerenciamento de Secretaria`,
enviadoPor: usuarioEvento,
});
}
}
await ctx.db.insert("notificacoes", {
@@ -147,13 +170,30 @@ async function registrarNotificacoes(
if (ticket.responsavelId && ticket.responsavelId !== ticket.solicitanteId) {
const responsavel = await ctx.db.get(ticket.responsavelId);
if (responsavel?.email) {
await ctx.runMutation(api.email.enfileirarEmail, {
destinatario: responsavel.email,
destinatarioId: ticket.responsavelId,
assunto: `${titulo} - Chamado ${ticket.numero}`,
corpo: `${mensagem}\n\n---\nCentral de Chamados SGSE - Sistema de Gerenciamento de Secretaria`,
enviadoPor: usuarioEvento,
});
// Tentar usar template, senão usar envio direto
try {
await ctx.runAction(api.email.enviarEmailComTemplate, {
destinatario: responsavel.email,
destinatarioId: ticket.responsavelId,
templateCodigo: "chamado_atualizado",
variaveis: {
solicitante: ticket.solicitanteNome || "Usuário",
numeroTicket: ticket.numero,
mensagem: mensagem,
urlSistema,
},
enviadoPor: usuarioEvento,
});
} catch (error) {
// Fallback para envio direto
await ctx.runMutation(api.email.enfileirarEmail, {
destinatario: responsavel.email,
destinatarioId: ticket.responsavelId,
assunto: `${titulo} - Chamado ${ticket.numero}`,
corpo: `${mensagem}\n\n---\nCentral de Chamados SGSE - Sistema de Gerenciamento de Secretaria`,
enviadoPor: usuarioEvento,
});
}
}
await ctx.db.insert("notificacoes", {