# Teste - Sistema de Pesquisas com Contatos

## Resumo da Implementação

Foi implementado um sistema completo de pesquisas com distribuição automática de contatos das empresas. A funcionalidade agora:

1. **Cria pesquisas** com informações de nome, questionário, data e descrição
2. **Distribui automaticamente** para todas as empresas ativas
3. **Popula contatos** da empresa para cada pesquisa
4. **Exibe accordion** com lista de contatos por empresa
5. **Permite responder** à pesquisa por empresa

## Arquivos Criados/Modificados

### Novos Arquivos:
- `nova_pesquisa.php` - Formulário para criar nova pesquisa
- `processar_nova_pesquisa.php` - Processa criação de pesquisa e popula contatos
- `pesquisas.php` - Lista todas as pesquisas com progresso
- `visualizar_pesquisa.php` - Visualiza pesquisa com accordion de contatos
- `criar_tabelas_pesquisas.sql` - Schema do banco de dados

### Arquivos Modificados:
- `montagem_questionario.php` - Adicionado botão "📊 Pesquisas"

## Estrutura do Banco de Dados

### Tabela: pesquisas
- `id` - ID da pesquisa
- `nome` - Nome descritivo
- `id_questionario_template_fk` - Template de questionário
- `data_pesquisa` - Data da pesquisa
- `status` - 'ativa' ou 'encerrada'
- `descricao` - Descrição opcional
- `data_criacao` - Timestamp de criação
- `data_atualizacao` - Timestamp de atualização

### Tabela: pesquisa_empresa
- `id` - ID do registro
- `id_pesquisa_fk` - Referência para pesquisa
- `id_empresa_fk` - Referência para empresa
- `status` - 'pendente', 'respondida', 'cancelada'
- `data_resposta` - Quando foi respondida

### Tabela: pesquisa_contatos (NOVA)
- `id` - ID do registro
- `id_pesquisa_empresa_fk` - Referência para pesquisa_empresa
- `id_contato_empresa_fk` - Referência para contatos_empresa
- `nome` - Nome do contato
- `email` - Email
- `telefone` - Telefone
- `area` - Área/Departamento
- `status` - 'ativo', 'inativo'

## Fluxo de Uso

### 1. Criar Nova Pesquisa
```
montagem_questionario.php → Botão "📊 Pesquisas" 
→ nova_pesquisa.php → Preencher formulário
→ processar_nova_pesquisa.php → Criar pesquisa + distribuir + popular contatos
→ visualizar_pesquisa.php (com sucesso)
```

### 2. Visualizar Pesquisa
```
pesquisas.php → Clicar em pesquisa
→ visualizar_pesquisa.php → Lista com accordion de contatos
```

### 3. Accordion de Contatos
```
Clicar no nome da empresa → Abre/fecha lista de contatos
Contatos mostram: Nome, Email, Telefone, Área
```

## Passos para Testar

### 1. Criar Tabelas no Banco
Execute o script SQL:
```sql
-- Em seu banco de dados, execute crear_tabelas_pesquisas.sql
-- Ou se as tabelas já existem e precisam da coluna descricao:
-- ALTER TABLE pesquisas ADD COLUMN descricao TEXT AFTER status;
```

### 2. Criar Nova Pesquisa
1. Acesse `montagem_questionario.php`
2. Clique em "📊 Pesquisas"
3. Clique em "Nova Pesquisa"
4. Preencha:
   - Nome: "Pesquisa de Satisfação Q4 2024"
   - Data: data desejada
   - Status: Ativa
   - Questionário: selecione um template
   - Descrição: (opcional) "Avaliação de satisfação"
5. Clique em "Salvar Pesquisa"

### 3. Verificar Resultados
1. Página deve redirecionar para visualizar_pesquisa.php
2. Deve aparecer mensagem: "Pesquisa criada para X empresa(s)"
3. Deve aparecer lista de empresas com accordions

### 4. Testar Accordion
1. Clique no nome da empresa
2. Deve aparecer lista de contatos (nome, email, telefone, área)
3. Seta (▼) deve rotacionar 180°
4. Clicar novamente fecha o accordion

### 5. Verificar Dados no Banco
```sql
-- Contar pesquisas criadas
SELECT COUNT(*) FROM pesquisas;

-- Contar distribuições por pesquisa
SELECT id_pesquisa_fk, COUNT(*) FROM pesquisa_empresa 
GROUP BY id_pesquisa_fk;

-- Contar contatos por pesquisa
SELECT pe.id, COUNT(pc.id) as total_contatos
FROM pesquisa_empresa pe
LEFT JOIN pesquisa_contatos pc ON pe.id = pc.id_pesquisa_empresa_fk
GROUP BY pe.id;

-- Ver contatos de uma empresa em uma pesquisa
SELECT * FROM pesquisa_contatos 
WHERE id_pesquisa_empresa_fk = 1;
```

## Validações Implementadas

### Na Criação da Pesquisa:
- ✅ Nome obrigatório
- ✅ Questionário obrigatório
- ✅ Data obrigatória
- ✅ Verificação se template existe e está ativo
- ✅ Validação de empresas ativas antes de distribuir
- ✅ Apenas contatos ativos são adicionados

### Na Visualização:
- ✅ Verificação se pesquisa existe
- ✅ Busca correta de empresas associadas
- ✅ Busca de contatos per pesquisa_empresa
- ✅ Tratamento de empresa deletada
- ✅ Exibição correta de status e datas

## Funcionalidades de UI

### Accordion:
- ✅ Max-height animation para expansão suave
- ✅ Rotação de seta (▼ → ▲)
- ✅ Hover effect com shadow
- ✅ Transição de 400ms para abertura/fechamento

### Styling:
- ✅ Gradiente de fundo no header
- ✅ Cards com sombra suave
- ✅ Contatos com border-left colorido
- ✅ Transform no hover dos contatos
- ✅ Responsivo para diferentes tamanhos

## Próximos Passos (Opcionais)

1. **responder_pesquisa.php** - Página para responder questionário
2. **Relatórios** - Gráficos de participação e respostas
3. **Exportação** - CSV/PDF com respostas
4. **Filtros** - Por status, data, empresa
5. **Envio de emails** - Para empresas com link da pesquisa

## Notas Técnicas

### Bind Parameters:
- Pesquisa criação: `sisss` (string, int, string, string, string)
- Distribuição empresa: `ii` (int, int)
- População de contatos: `iissss` (int, int, string, string, string, string)

### Queries Principais:
```php
// Selecionar empresas com contatos
SELECT pe.*, e.NOME_FANTASIA FROM pesquisa_empresa pe
LEFT JOIN empresas e ON pe.id_empresa_fk = e.ID_EMPRESA
WHERE pe.id_pesquisa_fk = ?

// Selecionar contatos de uma empresa em uma pesquisa
SELECT * FROM pesquisa_contatos 
WHERE id_pesquisa_empresa_fk = ?
```

## Troubleshooting

### Problema: Nenhum contato aparece
- Verifique se a empresa tem contatos ativos em `contatos_empresa`
- Verifique se campo `ativo` está como 'S' (ou similar)
- Verifique a estrutura da tabela `pesquisa_contatos`

### Problema: Accordion não abre
- Verifique se JavaScript está habilitado
- Verifique se função `toggleContatos()` existe
- Verifique se classe `.show` aplica `max-height`

### Problema: Pesquisa não cria
- Verifique se template existe e está ativo
- Verifique permissões do banco de dados
- Verifique se empresas ativas existem

## Status de Implementação

✅ **COMPLETO**
- Criação de pesquisas com distribuição
- População automática de contatos
- Visualização com accordion
- Validações de entrada
- Styling responsivo
- Bind parameters corretos

🔄 **PENDENTE** (Futuro)
- Formulário de resposta (responder_pesquisa.php)
- Tela de relatórios
- Envio de emails
- Filtros avançados
