- Backend: Migrations para tabelas 'escalas' e 'logistica' (transporte) - Backend: Handlers e Services completos para gestão de escalas e logística - Backend: Suporte a auth vinculado a perfil profissional - Frontend: Nova página de Detalhes Operacionais (/agenda/:id) - Frontend: Componente EventScheduler com verificação robusta de conflitos - Frontend: Componente EventLogistics para gestão de motoristas e caronas - Frontend: Modal de Detalhes de Profissional unificado (Admin + Self-view) - Frontend: Dashboard com modal de gestão de equipe e filtros avançados - Fix: Correção crítica de timezone (UTC) em horários de agendamento - Fix: Tratamento de URLs no campo de local do evento - Fix: Filtros de profissional com carro na logística
62 lines
1.8 KiB
SQL
62 lines
1.8 KiB
SQL
-- name: CreateEscala :one
|
|
INSERT INTO agenda_escalas (
|
|
agenda_id, profissional_id, data_hora_inicio, data_hora_fim, funcao_especifica
|
|
) VALUES (
|
|
$1, $2, $3, $4, $5
|
|
)
|
|
RETURNING *;
|
|
|
|
-- name: ListEscalasByAgendaID :many
|
|
SELECT e.*, p.nome as profissional_nome, p.avatar_url, p.whatsapp, f.nome as funcao_nome
|
|
FROM agenda_escalas e
|
|
JOIN cadastro_profissionais p ON e.profissional_id = p.id
|
|
LEFT JOIN funcoes_profissionais f ON p.funcao_profissional_id = f.id
|
|
WHERE e.agenda_id = $1
|
|
ORDER BY e.data_hora_inicio;
|
|
|
|
-- name: DeleteEscala :exec
|
|
DELETE FROM agenda_escalas
|
|
WHERE id = $1;
|
|
|
|
-- name: UpdateEscala :one
|
|
UPDATE agenda_escalas
|
|
SET profissional_id = COALESCE($2, profissional_id),
|
|
data_hora_inicio = COALESCE($3, data_hora_inicio),
|
|
data_hora_fim = COALESCE($4, data_hora_fim),
|
|
funcao_especifica = COALESCE($5, funcao_especifica),
|
|
atualizado_em = NOW()
|
|
WHERE id = $1
|
|
RETURNING *;
|
|
|
|
-- name: ListMapasByAgendaID :many
|
|
SELECT * FROM mapas_eventos
|
|
WHERE agenda_id = $1
|
|
ORDER BY criado_em;
|
|
|
|
-- name: CreateMapa :one
|
|
INSERT INTO mapas_eventos (agenda_id, nome, imagem_url)
|
|
VALUES ($1, $2, $3)
|
|
RETURNING *;
|
|
|
|
-- name: DeleteMapa :exec
|
|
DELETE FROM mapas_eventos WHERE id = $1;
|
|
|
|
-- name: ListMarcadoresByMapaID :many
|
|
SELECT m.*, p.nome as profissional_nome, p.avatar_url, f.nome as funcao_nome
|
|
FROM marcadores_mapa m
|
|
LEFT JOIN cadastro_profissionais p ON m.profissional_id = p.id
|
|
LEFT JOIN funcoes_profissionais f ON p.funcao_profissional_id = f.id
|
|
WHERE m.mapa_id = $1;
|
|
|
|
-- name: UpsertMarcador :one
|
|
INSERT INTO marcadores_mapa (mapa_id, profissional_id, pos_x, pos_y, rotulo)
|
|
VALUES ($1, $2, $3, $4, $5)
|
|
ON CONFLICT (id) DO UPDATE
|
|
SET pos_x = EXCLUDED.pos_x,
|
|
pos_y = EXCLUDED.pos_y,
|
|
rotulo = EXCLUDED.rotulo,
|
|
profissional_id = EXCLUDED.profissional_id
|
|
RETURNING *;
|
|
|
|
-- name: DeleteMarcador :exec
|
|
DELETE FROM marcadores_mapa WHERE id = $1;
|