-- MÓDULO DE CONTROLE DE CHIPS E SMARTPHONES
-- Banco do sistema manutencao_ti

CREATE TABLE IF NOT EXISTS telecom_chips (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    codigo_interno VARCHAR(40) NOT NULL,
    numero_linha VARCHAR(30) NULL,
    iccid VARCHAR(40) NULL,
    operadora VARCHAR(50) NOT NULL DEFAULT 'Não informada',
    plano VARCHAR(120) NULL,
    pacote_dados VARCHAR(80) NULL,
    status VARCHAR(30) NOT NULL DEFAULT 'SEM_IDENTIFICACAO',
    responsavel_nome VARCHAR(150) NULL,
    responsavel_matricula VARCHAR(50) NULL,
    responsavel_cargo VARCHAR(120) NULL,
    setor VARCHAR(150) NULL,
    smartphone_id INT UNSIGNED NULL,
    data_entrega DATETIME NULL,
    data_devolucao DATETIME NULL,
    observacoes TEXT NULL,
    criado_por VARCHAR(150) NOT NULL,
    criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    atualizado_por VARCHAR(150) NOT NULL,
    atualizado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
        ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY uk_telecom_chip_codigo (codigo_interno),
    UNIQUE KEY uk_telecom_chip_numero (numero_linha),
    UNIQUE KEY uk_telecom_chip_iccid (iccid),
    INDEX idx_telecom_chip_status (status),
    INDEX idx_telecom_chip_responsavel (responsavel_nome),
    INDEX idx_telecom_chip_setor (setor),
    INDEX idx_telecom_chip_smartphone (smartphone_id)
) ENGINE=InnoDB
  DEFAULT CHARSET=utf8mb4
  COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS telecom_smartphones (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    codigo_interno VARCHAR(40) NOT NULL,
    patrimonio VARCHAR(50) NULL,
    imei1 VARCHAR(30) NULL,
    imei2 VARCHAR(30) NULL,
    numero_serie VARCHAR(80) NULL,
    marca VARCHAR(80) NOT NULL DEFAULT 'Não identificada',
    modelo VARCHAR(120) NOT NULL DEFAULT 'Não identificado',
    cor VARCHAR(50) NULL,
    armazenamento VARCHAR(50) NULL,
    sistema_operacional VARCHAR(80) NULL,
    condicao_aparelho VARCHAR(30) NOT NULL DEFAULT 'NAO_AVALIADO',
    status VARCHAR(30) NOT NULL DEFAULT 'SEM_IDENTIFICACAO',
    responsavel_nome VARCHAR(150) NULL,
    responsavel_matricula VARCHAR(50) NULL,
    responsavel_cargo VARCHAR(120) NULL,
    setor VARCHAR(150) NULL,
    chip_id INT UNSIGNED NULL,
    possui_carregador TINYINT(1) NOT NULL DEFAULT 0,
    acessorios TEXT NULL,
    data_entrega DATETIME NULL,
    data_devolucao DATETIME NULL,
    observacoes TEXT NULL,
    criado_por VARCHAR(150) NOT NULL,
    criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    atualizado_por VARCHAR(150) NOT NULL,
    atualizado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
        ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY uk_telecom_smart_codigo (codigo_interno),
    UNIQUE KEY uk_telecom_smart_patrimonio (patrimonio),
    UNIQUE KEY uk_telecom_smart_imei1 (imei1),
    UNIQUE KEY uk_telecom_smart_imei2 (imei2),
    UNIQUE KEY uk_telecom_smart_serie (numero_serie),
    INDEX idx_telecom_smart_status (status),
    INDEX idx_telecom_smart_responsavel (responsavel_nome),
    INDEX idx_telecom_smart_setor (setor),
    INDEX idx_telecom_smart_chip (chip_id)
) ENGINE=InnoDB
  DEFAULT CHARSET=utf8mb4
  COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS telecom_movimentacoes (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    tipo_item VARCHAR(20) NOT NULL,
    item_id INT UNSIGNED NOT NULL,
    acao VARCHAR(50) NOT NULL,
    status_anterior VARCHAR(30) NULL,
    status_novo VARCHAR(30) NULL,
    responsavel_anterior VARCHAR(150) NULL,
    responsavel_novo VARCHAR(150) NULL,
    setor_anterior VARCHAR(150) NULL,
    setor_novo VARCHAR(150) NULL,
    detalhes TEXT NULL,
    usuario VARCHAR(150) NOT NULL,
    criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_telecom_mov_item (tipo_item, item_id, criado_em),
    INDEX idx_telecom_mov_usuario (usuario),
    INDEX idx_telecom_mov_data (criado_em)
) ENGINE=InnoDB
  DEFAULT CHARSET=utf8mb4
  COLLATE=utf8mb4_unicode_ci;
