# DAOs e Persistência - v1.0

## DAOs Principais

| DAO | Módulo | Tabela(s) |
|-----|--------|-----------|
| ConcursoDao | Bolao | concurso |
| BolaoDao | Bolao | bolao |
| GrupoDao | Bolao | grupo |
| MatrizDao | Bolao | matriz |
| TimesDao | Bolao | times (Timemania) |
| LoteriaDao | Loteria | loteria |
| ClienteDao | Cliente | cliente |
| ClienteJogoDao | Cliente | cliente_jogo |
| ClienteExtratoDao | Cliente | cliente_extrato |
| CreditoPedidoDao | Credito | credito_pedido |
| UsuarioDao | Usuario | usuario |
| UsuarioPerfilDao | Usuario | usuario_perfil |
| UsuarioEnderecoDao | Usuario | usuario_endereco |
| PremioResgatarDao | Premio | premio_resgatar |
| DepoimentosDao | Depoimentos | depoimentos |

## Funções Helper (global-functions.php)

- `dao($module, $nameClass)` - Factory de DAOs
- `getGrupoDao()` - Retorna GrupoDao
- `getLoteriaDao()` - Retorna LoteriaDao
- `getBolaoDao()` - Retorna BolaoDao
- `getConcursoDao()` - Retorna ConcursoDao

## Tabelas Principais

### concurso
- `numeros_sorteio` - serialized (dezenas; MM inclui trevos)
- `numeros_sorteio2` - serialized (Dupla Sena - segundo sorteio)
- `resultado_premiacao` - serialized (faixas e valores)
- `id_loteria`, `numero`, `data_sorteio`, `valor`, etc.

### bolao
- `numeros`, `dezenas` - serialized (jogos)
- `numeros_on` - metadados por jogo (MM: qtdDezenas, qtdTrevos)
- `id_grupo`, `id_concurso`, `id_loteria`, etc.

### grupo
- `id_concurso`, `id_loteria`
- `cotas`, `cotas_disponiveis`
- `individual`, `bloqueado`

### loteria
- `sigla`, `nome`
- `maior_dezena`, `minimo_acerto`, `maximo_acerto`
- `minimo_marcacao`, `maximo_marcacao`
- `valores_combinacao`, `valores_custo` - serialized

## GrupoDao::getBoloesParaVenda

Filtros aplicados:
- `individual = 0` (bolões, não jogos individuais)
- `cotas != 0` e `cotas_disponiveis != 0`
- `bloqueado != TRUE`
- Opcional: `id_loteria`, `id_concurso`
