# WhatsApp Offers System - PHP Edition

Sistema completo para gerenciamento e envio de ofertas de produtos via WhatsApp, utilizando a Evolution API.

## 🎯 Funcionalidades

### 1. Autenticação e Segurança
- Login seguro com hash bcrypt
- Sessões PHP
- Validação de entrada
- Proteção contra SQL Injection

### 2. Gerenciamento de Produtos
- CRUD completo de produtos
- Upload de imagens
- Controle de status (ativo/inativo)
- Geração automática de mensagens de oferta

### 3. Sincronização de Contatos
- Sincronização com WhatsApp via Evolution API
- Armazenamento de contatos localmente
- Busca e filtro de contatos
- Gerenciamento de contatos

### 4. Campanhas de Envio
- Criação de campanhas
- Seleção de contatos (um, múltiplos ou todos)
- Controle de intervalo entre envios (3s, 5s, 10s)
- Pausar, retomar e cancelar campanhas

### 5. Fila de Disparos
- Processamento assíncrono de mensagens
- Controle de status em tempo real
- Tratamento de erros e retry
- Histórico de campanhas

### 6. Dashboard
- Estatísticas gerais
- Últimas campanhas
- Status da conexão WhatsApp
- Acesso rápido a funcionalidades

## 📋 Requisitos

- **Apache 2.4+** com mod_rewrite
- **PHP 8.4.5** com extensões:
  - pdo_mysql
  - curl
  - json
  - mbstring
- **MySQL 5.7+**
- **Linux Ubuntu 18.04+**

## 🚀 Instalação Rápida

### 1. Preparar Banco de Dados

```bash
mysql -h 192.168.10.17 -u root -p < database_setup.sql
```

### 2. Copiar Arquivos

```bash
sudo cp -r whatsapp-offers-php /var/www/
sudo chown -R www-data:www-data /var/www/whatsapp-offers-php
sudo chmod -R 755 /var/www/whatsapp-offers-php
```

### 3. Configurar Apache

```bash
sudo a2enmod rewrite
sudo systemctl restart apache2
```

### 4. Acessar

Abra seu navegador: `http://localhost`

**Credenciais padrão:**
- Usuário: `admin`
- Senha: `admin123`

## 📁 Estrutura de Arquivos

```
whatsapp-offers-php/
├── public/                    # Raiz do servidor web
│   ├── index.php             # Roteador principal
│   ├── index.html            # Página de login
│   ├── dashboard.html        # Dashboard
│   ├── products.html         # Gerenciamento de produtos
│   ├── contacts.html         # Gerenciamento de contatos
│   ├── campaigns.html        # Campanhas
│   ├── history.html          # Histórico
│   ├── .htaccess             # Configuração Apache
│   └── assets/
│       ├── css/              # Estilos
│       ├── js/               # JavaScript
│       ├── images/           # Imagens
│       └── uploads/          # Uploads de usuários
├── includes/                 # Classes PHP
│   ├── Auth.php             # Autenticação
│   ├── Product.php          # Produtos
│   ├── Contact.php          # Contatos
│   └── Campaign.php         # Campanhas
├── config/                   # Configurações
│   ├── config.php           # Configuração geral
│   └── database.php         # Conexão com banco
├── logs/                     # Arquivos de log
├── database_setup.sql        # Script SQL
├── INSTALACAO_APACHE.md      # Guia de instalação
└── README.md                 # Este arquivo
```

## 🔌 API REST

### Autenticação

**POST** `/api/auth/login`
```json
{
  "username": "admin",
  "password": "admin123"
}
```

**POST** `/api/auth/logout`

**GET** `/api/auth/me`

### Produtos

**GET** `/api/products` - Listar produtos
**GET** `/api/products/{id}` - Obter produto
**POST** `/api/products` - Criar produto
**PUT** `/api/products/{id}` - Atualizar produto
**DELETE** `/api/products/{id}` - Deletar produto

### Contatos

**GET** `/api/contacts` - Listar contatos
**GET** `/api/contacts/{id}` - Obter contato
**POST** `/api/contacts` - Criar contato
**POST** `/api/contacts/sync` - Sincronizar com WhatsApp
**PUT** `/api/contacts/{id}` - Atualizar contato
**DELETE** `/api/contacts/{id}` - Deletar contato

### Campanhas

**GET** `/api/campaigns` - Listar campanhas
**GET** `/api/campaigns/{id}` - Obter campanha
**GET** `/api/campaigns/{id}/messages` - Mensagens da campanha
**GET** `/api/campaigns/{id}/stats` - Estatísticas
**POST** `/api/campaigns` - Criar campanha
**POST** `/api/campaigns/{id}/start` - Iniciar campanha
**POST** `/api/campaigns/{id}/pause` - Pausar campanha
**POST** `/api/campaigns/{id}/resume` - Retomar campanha
**POST** `/api/campaigns/{id}/cancel` - Cancelar campanha

## 🔐 Segurança

- Senhas armazenadas com hash bcrypt
- Validação de entrada em todos os endpoints
- Proteção contra SQL Injection com prepared statements
- Headers de segurança configurados
- Logs de atividades

## 📊 Banco de Dados

### Tabelas

| Tabela | Descrição |
|--------|-----------|
| users | Usuários do sistema |
| products | Produtos/ofertas |
| contacts | Contatos do WhatsApp |
| campaigns | Campanhas de envio |
| messages | Histórico de mensagens |
| evolution_config | Configuração da Evolution API |
| dispatch_queue | Fila de disparos |

## 🔧 Configuração

### config/config.php

```php
define('APP_NAME', 'WhatsApp Offers System');
define('APP_URL', 'http://localhost');
define('APP_DEBUG', true);
define('JWT_SECRET', 'sua-chave-secreta');
define('UPLOAD_DIR', __DIR__ . '/../public/uploads/');
define('MAX_FILE_SIZE', 5 * 1024 * 1024); // 5MB
```

### config/database.php

```php
define('DB_HOST', '192.168.10.17');
define('DB_PORT', 3306);
define('DB_USER', 'root');
define('DB_PASS', 'Vmsrv03@banco#.');
define('DB_NAME', 'whatsapp_offers_db');
```

## 📝 Logs

Os logs são armazenados em `/logs/` com o padrão de data:

```
logs/
├── 2026-06-18.log
├── 2026-06-19.log
└── ...
```

Formato do log:
```
[2026-06-18 10:30:45] [INFO] Mensagem do log | {"dados": "adicionais"}
```

## 🐛 Troubleshooting

### Erro: "Cannot connect to database"

Verifique as credenciais em `config/database.php`:

```bash
mysql -h 192.168.10.17 -u root -p whatsapp_offers_db
```

### Erro: "Permission denied"

```bash
sudo chmod -R 777 /var/www/whatsapp-offers-php/logs
sudo chmod -R 777 /var/www/whatsapp-offers-php/public/uploads
```

### Erro: "Rewrite rules not working"

Ative mod_rewrite:

```bash
sudo a2enmod rewrite
sudo apache2ctl configtest
sudo systemctl restart apache2
```

### Erro: "PHP not found"

Instale PHP:

```bash
sudo apt-get install -y php8.4 php8.4-mysql php8.4-curl
```

## 📱 Integração com Evolution API

### Configurar Evolution API

1. Acesse o Dashboard
2. Clique em "Conectar WhatsApp"
3. Preencha:
   - URL da API Evolution
   - API Key
   - Nome da Instância
4. Clique em "Conectar"
5. Escaneie o QR Code com seu WhatsApp

### Sincronizar Contatos

1. Vá para "Gerenciar Contatos"
2. Clique em "Sincronizar Contatos"
3. Os contatos do WhatsApp serão importados

## 🎨 Customização

### Alterar Cores

Edite `public/assets/css/style.css`:

```css
:root {
    --primary-color: #22c55e;      /* Verde Geriba */
    --primary-dark: #16a34a;
    --bg-color: #ffffff;           /* Branco */
    --text-color: #000000;         /* Preto */
}
```

### Adicionar Logo

Coloque sua logo em `public/assets/images/logo.png`

## 📞 Suporte

Para dúvidas ou problemas:

1. Verifique os logs em `logs/`
2. Consulte a documentação da Evolution API
3. Verifique as permissões de arquivo

## 📄 Licença

Este projeto é fornecido como está, sem garantias.

## 🔄 Atualizações

Para atualizar o sistema:

1. Faça backup do banco de dados
2. Faça backup dos arquivos
3. Substitua os arquivos
4. Execute qualquer script de migração necessário

---

**Versão**: 1.0.0  
**Data**: Junho 2026  
**PHP**: 8.4.5  
**Apache**: 2.4+
