-- Base mock para desenvolvimento local.
-- Este arquivo assume que as migrations de core e de tenants mock ja foram aplicadas.

INSERT INTO nfse_municipios (
  codigo_ibge,
  nome,
  uf,
  tenant_schema,
  tabela_documentos,
  tabela_eventos,
  tabela_partes,
  ambiente,
  perfil,
  ativo
)
VALUES
  (
    '3550308',
    'Sao Paulo',
    'SP',
    DATABASE(),
    'nfse_documentos_3550308',
    'nfse_eventos_3550308',
    'nfse_documento_partes_3550308',
    'producao_restrita',
    'municipio',
    1
  ),
  (
    '3304557',
    'Rio de Janeiro',
    'RJ',
    DATABASE(),
    'nfse_documentos_3304557',
    'nfse_eventos_3304557',
    'nfse_documento_partes_3304557',
    'producao_restrita',
    'municipio',
    1
  )
ON DUPLICATE KEY UPDATE
  nome = VALUES(nome),
  uf = VALUES(uf),
  tenant_schema = VALUES(tenant_schema),
  tabela_documentos = VALUES(tabela_documentos),
  tabela_eventos = VALUES(tabela_eventos),
  tabela_partes = VALUES(tabela_partes),
  ativo = VALUES(ativo);

INSERT INTO nfse_certificados (
  municipio_id,
  tipo,
  storage_tipo,
  arquivo_path,
  certificado_criptografado,
  certificado_crypto_alg,
  certificado_key_id,
  certificado_sha256,
  certificado_nome_original,
  senha_criptografada,
  senha_crypto_alg,
  senha_key_id,
  subject_name,
  documento_federal,
  valido_de,
  valido_ate,
  ativo
)
SELECT
  id,
  'A1_PFX',
  'file_path',
  CONCAT('/opt/nfse/certificados/municipios/', codigo_ibge, '/certificado.pfx'),
  NULL,
  'AES-256-GCM',
  'NFSE_MASTER_KEY',
  NULL,
  CONCAT('certificado-', codigo_ibge, '.pfx'),
  CONCAT('mock-encrypted-password-for-', codigo_ibge),
  'AES-256-GCM',
  'NFSE_MASTER_KEY',
  CONCAT('CERTIFICADO MOCK MUNICIPIO ', codigo_ibge),
  NULL,
  '2026-01-01 00:00:00',
  '2027-01-01 00:00:00',
  1
FROM nfse_municipios
WHERE NOT EXISTS (
  SELECT 1
  FROM nfse_certificados c
  WHERE c.municipio_id = nfse_municipios.id
)
ON DUPLICATE KEY UPDATE
  ativo = VALUES(ativo),
  valido_ate = VALUES(valido_ate);

INSERT INTO nfse_sync_state (municipio_id, ambiente, perfil, last_nsu, max_nsu, status)
SELECT id, ambiente, perfil, 0, NULL, 'idle'
FROM nfse_municipios
ON DUPLICATE KEY UPDATE
  status = VALUES(status);

INSERT INTO nfse_documentos_3550308 (
  ambiente,
  nsu,
  chave_acesso,
  tipo_documento,
  municipio_emissor_codigo,
  municipio_incidencia_codigo,
  prestador_documento,
  tomador_documento,
  data_emissao,
  status_documento,
  xml_bruto,
  dados_principais,
  recebido_at
)
VALUES (
  'producao_restrita',
  1,
  '355030800000000000000000000000000000000000000000001',
  'NFSE',
  '3550308',
  '3550308',
  '12345678000190',
  '98765432000110',
  '2026-07-20 10:00:00',
  'autorizada',
  '<NFSe><InfNFSe><Numero>1</Numero></InfNFSe></NFSe>',
  '{\"numero\":\"1\",\"valor_servico\":100.00}',
  NOW()
)
ON DUPLICATE KEY UPDATE
  status_documento = VALUES(status_documento),
  xml_bruto = VALUES(xml_bruto),
  dados_principais = VALUES(dados_principais);

INSERT INTO nfse_documento_partes_3550308 (
  documento_id,
  papel,
  documento_federal,
  nome_razao,
  municipio_codigo,
  uf,
  dados_principais
)
SELECT id, 'prestador', prestador_documento, 'Prestador Mock', municipio_emissor_codigo, 'SP', '{}'
FROM nfse_documentos_3550308
WHERE nsu = 1
ON DUPLICATE KEY UPDATE
  documento_federal = VALUES(documento_federal),
  nome_razao = VALUES(nome_razao);

INSERT INTO nfse_documento_partes_3550308 (
  documento_id,
  papel,
  documento_federal,
  nome_razao,
  municipio_codigo,
  uf,
  dados_principais
)
SELECT id, 'tomador', tomador_documento, 'Tomador Mock', municipio_incidencia_codigo, 'SP', '{}'
FROM nfse_documentos_3550308
WHERE nsu = 1
ON DUPLICATE KEY UPDATE
  documento_federal = VALUES(documento_federal),
  nome_razao = VALUES(nome_razao);

INSERT INTO nfse_sync_logs (municipio_id, ambiente, nivel, evento, mensagem, contexto)
SELECT id, ambiente, 'info', 'mock.seed', 'Base mock multitenant inicializada', CONCAT('{\"codigo_ibge\":\"', codigo_ibge, '\"}')
FROM nfse_municipios;
