-- ============================================================================
-- SIGESTE-IE — Migração para operação com dados reais
--   * perfil "agente" (cadastra lotes, clientes e vendas; recebe comissões)
--   * agentes ligados a contas de utilizador
--   * observações nos lotes (ex.: lotes do plano ainda por delimitar)
--   * remoção dos dados de demonstração (projectos, lotes, clientes e agentes fictícios)
-- Idempotente: pode ser corrida mais do que uma vez.
--   psql -U sitegeu_user -d sitegeu -f 40_dados_reais.sql
-- ============================================================================
BEGIN;

ALTER TABLE territorial.usuarios DROP CONSTRAINT IF EXISTS usuarios_perfil_check;
ALTER TABLE territorial.usuarios ADD CONSTRAINT usuarios_perfil_check
    CHECK (perfil IN ('administrador', 'gestor', 'agente', 'tecnico'));

ALTER TABLE territorial.agentes
    ADD COLUMN IF NOT EXISTS usuario_id INTEGER UNIQUE REFERENCES territorial.usuarios(id) ON DELETE SET NULL,
    ADD COLUMN IF NOT EXISTS telefone   VARCHAR(40),
    ADD COLUMN IF NOT EXISTS email      VARCHAR(160),
    ADD COLUMN IF NOT EXISTS activo     BOOLEAN NOT NULL DEFAULT TRUE,
    ADD COLUMN IF NOT EXISTS criado_em  TIMESTAMPTZ NOT NULL DEFAULT now();

ALTER TABLE territorial.lotes ADD COLUMN IF NOT EXISTS observacoes TEXT;

-- Dados de demonstração (gerados pelo antigo seed_demo.py e pelos testes da API)
DELETE FROM territorial.projectos
WHERE nome IN ('Centralidade do Kilamba', 'Vista Verde', 'Jardins do Lago', 'Sol Nascente')
   OR nome LIKE 'Teste API%';

DELETE FROM territorial.contratos ct USING territorial.clientes c
WHERE c.id = ct.cliente_id
  AND c.nome IN ('Maria Oliveira', 'João Mendes', 'Pedro Lima', 'Lucia Costa',
                 'KILAMBA COMÉRCIO E SERVIÇOS, LDA.', 'Cliente de Teste API');
UPDATE territorial.lotes l SET cliente_id = NULL, agente_id = NULL, valor = NULL, estado = 'free'
FROM territorial.clientes c
WHERE c.id = l.cliente_id
  AND c.nome IN ('Maria Oliveira', 'João Mendes', 'Pedro Lima', 'Lucia Costa',
                 'KILAMBA COMÉRCIO E SERVIÇOS, LDA.', 'Cliente de Teste API');
DELETE FROM territorial.clientes
WHERE nome IN ('Maria Oliveira', 'João Mendes', 'Pedro Lima', 'Lucia Costa',
               'KILAMBA COMÉRCIO E SERVIÇOS, LDA.', 'Cliente de Teste API');

DELETE FROM territorial.comissoes cm USING territorial.agentes a
WHERE a.id = cm.agente_id AND a.nome IN ('Agente Comercial 1', 'Agente Comercial 2') AND a.usuario_id IS NULL;
UPDATE territorial.lotes l SET agente_id = NULL
FROM territorial.agentes a
WHERE a.id = l.agente_id AND a.nome IN ('Agente Comercial 1', 'Agente Comercial 2') AND a.usuario_id IS NULL;
DELETE FROM territorial.agentes WHERE nome IN ('Agente Comercial 1', 'Agente Comercial 2') AND usuario_id IS NULL;

COMMIT;
