-- ============================================================ -- Migration 003: Usuarios de demonstracao e acessos iniciais -- Perfis: Admin, Supervisor e Agente -- Areas: Suporte, Financeiro e Comercial -- ============================================================ INSERT INTO usuarios (nome, email, ativo) VALUES ('Admin Demo', 'admin@sothis.com.br', TRUE), ('Supervisor Demo', 'supervisor@sothis.com.br', TRUE), ('Atendente Demo', 'atendente@sothis.com.br', TRUE) ON CONFLICT (email) DO UPDATE SET nome = EXCLUDED.nome, ativo = TRUE, updated_at = NOW(); INSERT INTO usuarios_provedores (usuario_id, provedor, provedor_user_id) SELECT u.id, provider.provedor, provider.provedor_user_id FROM usuarios u JOIN ( VALUES ('admin@sothis.com.br', 'ldap', 'admin'), ('admin@sothis.com.br', 'microsoft', 'admin@sothis.com.br'), ('supervisor@sothis.com.br', 'ldap', 'supervisor'), ('supervisor@sothis.com.br', 'microsoft', 'supervisor@sothis.com.br'), ('atendente@sothis.com.br', 'ldap', 'atendente'), ('atendente@sothis.com.br', 'microsoft', 'atendente@sothis.com.br') ) AS provider(email, provedor, provedor_user_id) ON provider.email = u.email ON CONFLICT (provedor, provedor_user_id) DO UPDATE SET usuario_id = EXCLUDED.usuario_id; INSERT INTO usuarios_perfis (usuario_id, perfil_id) SELECT u.id, p.id FROM usuarios u JOIN ( VALUES ('admin@sothis.com.br', 'Admin'), ('supervisor@sothis.com.br', 'Supervisor'), ('atendente@sothis.com.br', 'Agente') ) AS access(email, perfil) ON access.email = u.email JOIN perfis_acesso p ON p.nome = access.perfil ON CONFLICT (usuario_id, perfil_id) DO NOTHING; INSERT INTO usuarios_areas (usuario_id, area_id, funcao, principal, ativo) SELECT u.id, a.id, access.funcao, TRUE, TRUE FROM usuarios u JOIN ( VALUES ('admin@sothis.com.br', 'Suporte', 'Administrador'), ('supervisor@sothis.com.br', 'Suporte', 'Supervisor'), ('atendente@sothis.com.br', 'Suporte', 'Atendente') ) AS access(email, area, funcao) ON access.email = u.email JOIN areas a ON a.nome = access.area ON CONFLICT (usuario_id, area_id) DO UPDATE SET funcao = EXCLUDED.funcao, principal = TRUE, ativo = TRUE, updated_at = NOW();