-- name: CreateProfissional :one
INSERT INTO cadastro_profissionais (
    usuario_id, nome, funcao_profissional_id, endereco, cidade, uf, whatsapp,
    cpf_cnpj_titular, banco, agencia, conta_pix, carro_disponivel,
    tem_estudio, qtd_estudio, tipo_cartao, observacao, qual_tec,
    educacao_simpatia, desempenho_evento, disp_horario, media,
    tabela_free, extra_por_equipamento, equipamentos
) 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: GetProfissionalByUsuarioID :one
SELECT p.*, f.nome as funcao_nome
FROM cadastro_profissionais p
LEFT JOIN funcoes_profissionais f ON p.funcao_profissional_id = f.id
WHERE p.usuario_id = $1 LIMIT 1;

-- name: GetProfissionalByID :one
SELECT p.*, f.nome as funcao_nome
FROM cadastro_profissionais p
LEFT JOIN funcoes_profissionais f ON p.funcao_profissional_id = f.id
WHERE p.id = $1 LIMIT 1;

-- name: ListProfissionais :many
SELECT p.*, f.nome as funcao_nome, u.email
FROM cadastro_profissionais p
LEFT JOIN funcoes_profissionais f ON p.funcao_profissional_id = f.id
LEFT JOIN usuarios u ON p.usuario_id = u.id
ORDER BY p.nome;

-- name: UpdateProfissional :one
UPDATE cadastro_profissionais
SET
    nome = $2,
    funcao_profissional_id = $3,
    endereco = $4,
    cidade = $5,
    uf = $6,
    whatsapp = $7,
    cpf_cnpj_titular = $8,
    banco = $9,
    agencia = $10,
    conta_pix = $11,
    carro_disponivel = $12,
    tem_estudio = $13,
    qtd_estudio = $14,
    tipo_cartao = $15,
    observacao = $16,
    qual_tec = $17,
    educacao_simpatia = $18,
    desempenho_evento = $19,
    disp_horario = $20,
    media = $21,
    tabela_free = $22,
    extra_por_equipamento = $23,
    equipamentos = $24,
    atualizado_em = NOW()
WHERE id = $1
RETURNING *;

-- name: DeleteProfissional :exec
DELETE FROM cadastro_profissionais
WHERE id = $1;
