-- 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
) VALUES (
    $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23
) 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: 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;
