# 📌 Como Usar: dtnotificacao com DEFAULT VALUE

## O Problema
Você quer que `dtnotificacao` seja preenchido **automaticamente pelo banco** quando uma notificação é criada.

## A Solução

### 1. Executar SQL para Adicionar DEFAULT
```sql
ALTER TABLE sis000_notificacao 
ALTER COLUMN dtnotificacao SET DEFAULT now();
```

### 2. Como Criar Notificações Agora

Você tem **3 opções**:

#### ✅ Opção A: Usar a API (Recomendado)
```php
<?php
// Em qualquer arquivo PHP, você pode fazer um POST para a API
$ch = curl_init('http://localhost/sagadm/include/api_criar_notificacao.php');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query([
        'idusuario' => 5,              // Obrigatório
        'idreferencia' => 100,         // Opcional
        'rotina' => 'tms001c_ocorrencia',
        'titulo' => 'Nova Ocorrência',
        'descricao' => 'Ocorrência #100 foi criada'
    ]),
    CURLOPT_RETURNTRANSFER => true
]);

$response = curl_exec($ch);
$data = json_decode($response, true);

if ($data['success']) {
    echo "Notificação criada com ID: " . $data['id'];
}
?>
```

#### ✅ Opção B: SQL Direto (COM dtnotificacao explícito)
```php
<?php
$idusuario = 5;
$idreferencia = 100;
$rotina = 'tms001c_ocorrencia';
$titulo = 'Nova Ocorrência';
$descricao = 'Ocorrência #100 foi criada';

$sql = "INSERT INTO sis000_notificacao 
        (idusuario, idreferencia, rotina, dtnotificacao, titulo, descricao, lida, status)
        VALUES ($idusuario, $idreferencia, '$rotina', now(), '$titulo', '$descricao', 0, 0)";

pg_query($bdcon, $sql);
pg_close($bdcon);
?>
```

#### ✅ Opção C: SQL Direto (SEM dtnotificacao - MELHOR!)
```php
<?php
// Agora você PODE OMITIR dtnotificacao pois tem DEFAULT
$idusuario = 5;
$idreferencia = 100;
$rotina = 'tms001c_ocorrencia';
$titulo = 'Nova Ocorrência';
$descricao = 'Ocorrência #100 foi criada';

// VEJA: Não especificamos dtnotificacao aqui
$sql = "INSERT INTO sis000_notificacao 
        (idusuario, idreferencia, rotina, titulo, descricao, lida, status)
        VALUES ($idusuario, $idreferencia, '$rotina', '$titulo', '$descricao', 0, 0)";

// O banco preencherá dtnotificacao = now() automaticamente
pg_query($bdcon, $sql);
pg_close($bdcon);
?>
```

### 3. Usando em um Trigger SQL

Quando uma ocorrência é criada, a notificação é inserida automaticamente:

```sql
CREATE OR REPLACE FUNCTION criar_notificacao_ocorrencia()
RETURNS TRIGGER AS $$
BEGIN
    -- Inserir notificação para cada usuário que quer receber
    INSERT INTO sis000_notificacao 
    (idusuario, idreferencia, rotina, titulo, descricao, lida, status)
    SELECT 
        id,
        NEW.id,
        'tms001c_ocorrencia',
        'Nova Ocorrência',
        'Ocorrência #' || NEW.id || ' foi criada',
        0,
        0
    FROM sis003_usuario 
    WHERE ativo = 1 AND notificacaotodas = 1;
    
    -- dtnotificacao será preenchido automaticamente com DEFAULT (now())
    
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER trg_notificacao_ocorrencia
AFTER INSERT ON tms001c_ocorrencia
FOR EACH ROW EXECUTE FUNCTION criar_notificacao_ocorrencia();
```

## ✨ Resumo

| Componente | Antes | Depois |
|-----------|-------|--------|
| **dtnotificacao** | Obrigatório especificar | Automático com DEFAULT |
| **Código** | Precisa de `now()` | Pode omitir o campo |
| **Banco** | Mais verboso | Mais limpo |
| **Triggers** | Complexo | Simples |

## 🚀 Próximos Passos

1. **Execute o SQL** para adicionar o DEFAULT
2. **Use a API** (`api_criar_notificacao.php`) para criar notificações
3. **Ou use Triggers** para auto-geração quando eventos acontecem
4. **O navbar atualiza** a cada 30s com as novas notificações
