photum/backend/internal/db/queries/agenda.sql
NANDO9322 66c7306553 feat: implementa filtro de agenda por usuário e corrige exibição de detalhes
- Backend: Adiciona `user_id` na tabela agenda e implementa queries de filtro por role.
- Frontend(Context): Corrige dependência do `useEffect` para garantir busca correta ao logar.
- Frontend(Context): Melhora mapeamento de dados (Número FOT, Fallback de Nome, Formandos).
- Frontend(UI): Atualiza EventTable e Dashboard para exibir número FOT e dados vinculados corretamente.
- Frontend(Fix): Resolve erros de TypeScript no enum EventStatus.
2025-12-16 13:44:02 -03:00

104 lines
2.4 KiB
SQL

-- name: CreateAgenda :one
INSERT INTO agenda (
fot_id,
data_evento,
tipo_evento_id,
observacoes_evento,
local_evento,
endereco,
horario,
qtd_formandos,
qtd_fotografos,
qtd_recepcionistas,
qtd_cinegrafistas,
qtd_estudios,
qtd_ponto_foto,
qtd_ponto_id,
qtd_ponto_decorado,
qtd_pontos_led,
qtd_plataforma_360,
status_profissionais,
foto_faltante,
recep_faltante,
cine_faltante,
logistica_observacoes,
pre_venda,
user_id
) VALUES (
$1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24
) RETURNING *;
-- name: GetAgenda :one
SELECT * FROM agenda
WHERE id = $1 LIMIT 1;
-- name: ListAgendas :many
SELECT
a.*,
cf.fot as fot_numero,
cf.instituicao,
c.nome as curso_nome,
e.nome as empresa_nome,
af.ano_semestre,
cf.observacoes as observacoes_fot,
te.nome as tipo_evento_nome
FROM agenda a
JOIN cadastro_fot cf ON a.fot_id = cf.id
JOIN cursos c ON cf.curso_id = c.id
JOIN empresas e ON cf.empresa_id = e.id
JOIN anos_formaturas af ON cf.ano_formatura_id = af.id
JOIN tipos_eventos te ON a.tipo_evento_id = te.id
ORDER BY a.data_evento;
-- name: ListAgendasByUser :many
SELECT
a.*,
cf.fot as fot_numero,
cf.instituicao,
c.nome as curso_nome,
e.nome as empresa_nome,
af.ano_semestre,
cf.observacoes as observacoes_fot,
te.nome as tipo_evento_nome
FROM agenda a
JOIN cadastro_fot cf ON a.fot_id = cf.id
JOIN cursos c ON cf.curso_id = c.id
JOIN empresas e ON cf.empresa_id = e.id
JOIN anos_formaturas af ON cf.ano_formatura_id = af.id
JOIN tipos_eventos te ON a.tipo_evento_id = te.id
WHERE a.user_id = $1
ORDER BY a.data_evento;
-- name: UpdateAgenda :one
UPDATE agenda
SET
fot_id = $2,
data_evento = $3,
tipo_evento_id = $4,
observacoes_evento = $5,
local_evento = $6,
endereco = $7,
horario = $8,
qtd_formandos = $9,
qtd_fotografos = $10,
qtd_recepcionistas = $11,
qtd_cinegrafistas = $12,
qtd_estudios = $13,
qtd_ponto_foto = $14,
qtd_ponto_id = $15,
qtd_ponto_decorado = $16,
qtd_pontos_led = $17,
qtd_plataforma_360 = $18,
status_profissionais = $19,
foto_faltante = $20,
recep_faltante = $21,
cine_faltante = $22,
logistica_observacoes = $23,
pre_venda = $24,
atualizado_em = NOW()
WHERE id = $1
RETURNING *;
-- name: DeleteAgenda :exec
DELETE FROM agenda
WHERE id = $1;