Frontend: - Implementado fluxo de inicialização para novos perfis (modal "Complete seu Cadastro"). - Adicionada lógica para pré-preencher nome e email do usuário no cadastro. - Adicionada renderização condicional: abas "Dados Bancários" e "Profissional" são ocultadas para clientes (EVENT_OWNER). - Unificada a função de salvar (criação e edição) com tratativa correta de erros e feedback (Toast). - Adicionado fallback para exibir o email do usuário caso o do perfil esteja vazio. Backend: - SQL: Ajustada query `GetProfissionalByUsuarioID` para buscar email da tabela de usuários (LEFT JOIN). - Handler: Implementado fallback para usar `UsuarioEmail` na resposta se o `Email` do perfil for nulo. - Service: Correção no salvamento (Create/Update) para tratar `funcao_profissional_id` com UUID vazio (Nil) como NULL, evitando erro de chave estrangeira (FK). Fixes #profile-save-error, #role-visibility
113 lines
3.4 KiB
SQL
113 lines
3.4 KiB
SQL
-- name: CreateCadastroFot :one
|
|
INSERT INTO cadastro_fot (
|
|
fot, empresa_id, curso_id, ano_formatura_id, instituicao, cidade, estado, observacoes, gastos_captacao, pre_venda, regiao
|
|
) VALUES (
|
|
$1, $2, $3, $4, $5, $6, $7, $8, $9, $10, @regiao
|
|
)
|
|
ON CONFLICT (fot) DO UPDATE SET
|
|
empresa_id = EXCLUDED.empresa_id,
|
|
curso_id = EXCLUDED.curso_id,
|
|
ano_formatura_id = EXCLUDED.ano_formatura_id,
|
|
instituicao = EXCLUDED.instituicao,
|
|
cidade = EXCLUDED.cidade,
|
|
estado = EXCLUDED.estado,
|
|
observacoes = EXCLUDED.observacoes,
|
|
gastos_captacao = EXCLUDED.gastos_captacao,
|
|
pre_venda = EXCLUDED.pre_venda,
|
|
regiao = EXCLUDED.regiao,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
RETURNING *;
|
|
|
|
-- name: ListCadastroFot :many
|
|
SELECT
|
|
c.*,
|
|
COALESCE(e.nome, '') as empresa_nome,
|
|
COALESCE(cur.nome, '') as curso_nome,
|
|
COALESCE(a.ano_semestre, '') as ano_formatura_label
|
|
FROM cadastro_fot c
|
|
LEFT JOIN empresas e ON c.empresa_id = e.id
|
|
LEFT JOIN cursos cur ON c.curso_id = cur.id
|
|
LEFT JOIN anos_formaturas a ON c.ano_formatura_id = a.id
|
|
WHERE c.regiao = @regiao
|
|
ORDER BY c.fot DESC;
|
|
|
|
-- name: ListCadastroFotByEmpresa :many
|
|
SELECT
|
|
c.*,
|
|
COALESCE(e.nome, '') as empresa_nome,
|
|
COALESCE(cur.nome, '') as curso_nome,
|
|
COALESCE(a.ano_semestre, '') as ano_formatura_label
|
|
FROM cadastro_fot c
|
|
LEFT JOIN empresas e ON c.empresa_id = e.id
|
|
LEFT JOIN cursos cur ON c.curso_id = cur.id
|
|
LEFT JOIN anos_formaturas a ON c.ano_formatura_id = a.id
|
|
WHERE c.empresa_id = $1 AND c.regiao = @regiao
|
|
ORDER BY c.fot DESC;
|
|
|
|
-- name: GetCadastroFotByID :one
|
|
SELECT
|
|
c.*,
|
|
COALESCE(e.nome, '') as empresa_nome,
|
|
COALESCE(cur.nome, '') as curso_nome,
|
|
COALESCE(a.ano_semestre, '') as ano_formatura_label
|
|
FROM cadastro_fot c
|
|
LEFT JOIN empresas e ON c.empresa_id = e.id
|
|
LEFT JOIN cursos cur ON c.curso_id = cur.id
|
|
LEFT JOIN anos_formaturas a ON c.ano_formatura_id = a.id
|
|
WHERE c.id = $1 AND c.regiao = @regiao;
|
|
|
|
-- name: GetCadastroFotByFOT :one
|
|
SELECT * FROM cadastro_fot WHERE fot = $1 AND regiao = @regiao;
|
|
|
|
-- name: UpdateCadastroFot :one
|
|
UPDATE cadastro_fot SET
|
|
fot = $2,
|
|
empresa_id = $3,
|
|
curso_id = $4,
|
|
ano_formatura_id = $5,
|
|
instituicao = $6,
|
|
cidade = $7,
|
|
estado = $8,
|
|
observacoes = $9,
|
|
gastos_captacao = $10,
|
|
pre_venda = $11,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = $1 AND regiao = @regiao
|
|
RETURNING *;
|
|
|
|
-- name: DeleteCadastroFot :exec
|
|
DELETE FROM cadastro_fot WHERE id = $1 AND regiao = @regiao;
|
|
|
|
-- name: GetCadastroFotByFotJoin :one
|
|
SELECT
|
|
c.*,
|
|
COALESCE(e.nome, '') as empresa_nome,
|
|
COALESCE(cur.nome, '') as curso_nome,
|
|
COALESCE(a.ano_semestre, '') as ano_formatura_label
|
|
FROM cadastro_fot c
|
|
LEFT JOIN empresas e ON c.empresa_id = e.id
|
|
LEFT JOIN cursos cur ON c.curso_id = cur.id
|
|
LEFT JOIN anos_formaturas a ON c.ano_formatura_id = a.id
|
|
WHERE c.fot = $1 AND c.regiao = @regiao;
|
|
|
|
-- name: UpdateCadastroFotGastos :exec
|
|
UPDATE cadastro_fot SET
|
|
gastos_captacao = $2,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = $1 AND regiao = @regiao;
|
|
|
|
-- name: SearchFot :many
|
|
SELECT
|
|
c.*,
|
|
COALESCE(e.nome, '') as empresa_nome,
|
|
COALESCE(cur.nome, '') as curso_nome,
|
|
COALESCE(a.ano_semestre, '') as ano_formatura_label
|
|
FROM cadastro_fot c
|
|
LEFT JOIN empresas e ON c.empresa_id = e.id
|
|
LEFT JOIN cursos cur ON c.curso_id = cur.id
|
|
LEFT JOIN anos_formaturas a ON c.ano_formatura_id = a.id
|
|
WHERE CAST(c.fot AS TEXT) ILIKE '%' || $1 || '%' AND c.regiao = @regiao
|
|
ORDER BY c.fot ASC
|
|
LIMIT 10;
|
|
|
|
|