-- =====================================================================
-- Tabela: tb_adm_user
-- Banco:  w19_clikil41_eleicao (operacional)
-- Projeto: f19
--
-- Escopo: SÓ pessoas com login/acesso ao painel adm (admin, manager,
-- candidate, supporter). Pessoas em geral (eleitores, leads do WhatsApp)
-- ficam em tb_contact (ciclo futuro).
--
-- Sem endereço aqui — vai em tb_adm_user_detail (EAV via tb_detail).
-- Sem id_campaign — vínculo com campanha vai em tb_campaign_adm_user
-- (N:M com papel local por campanha).
--
-- id_access referencia tb_access em w19_clikil41_main (banco diferente —
-- NÃO há CONSTRAINT FK; integridade validada na aplicação).
-- =====================================================================

CREATE TABLE IF NOT EXISTS `tb_adm_user` (
  `id_adm_user`            BIGINT UNSIGNED  NOT NULL AUTO_INCREMENT,
  `id_access`              TINYINT UNSIGNED NOT NULL DEFAULT 4,         -- soft-ref -> w19_clikil41_main.tb_access (1..4)

  -- Identidade
  `adm_user_name`          VARCHAR(150)     NOT NULL,
  `adm_user_email`         VARCHAR(150)     NOT NULL,
  `adm_user_cpf`           VARCHAR(14)      DEFAULT NULL,                -- '000.000.000-00'
  `adm_user_whatsapp`      VARCHAR(20)      DEFAULT NULL,                -- formato livre '+55 (00) 00000-0000' (UI exibe; cadastra com máscara)
  `adm_user_phone_digits`  VARCHAR(20)      DEFAULT NULL,                -- só dígitos — login por telefone usa este (sincronizado pela aplicação em INSERT/UPDATE)
  `adm_user_password_hash` VARCHAR(255)     NOT NULL,                    -- password_hash() PHP (NUNCA plaintext)
  `adm_user_photo_url`     VARCHAR(500)     DEFAULT NULL,

  -- Controle / auditoria mínima
  `adm_user_status`        TINYINT(1)       NOT NULL DEFAULT 1,          -- 1 ativo, 0 inativo, -1 bloqueado
  `adm_user_register_ip`   VARCHAR(45)      DEFAULT NULL,
  `adm_user_last_login_ip` VARCHAR(45)      DEFAULT NULL,
  `adm_user_last_login_at` DATETIME         DEFAULT NULL,
  `adm_user_created_at`    DATETIME         NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `adm_user_updated_at`    DATETIME         NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

  PRIMARY KEY (`id_adm_user`),
  UNIQUE KEY `uk_adm_user_email` (`adm_user_email`),
  UNIQUE KEY `uk_adm_user_cpf`   (`adm_user_cpf`),
  KEY `ix_adm_user_status`       (`adm_user_status`),
  KEY `ix_adm_user_access`       (`id_access`),
  KEY `ix_adm_user_phone_digits` (`adm_user_phone_digits`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
