# Fluxo Bolão e Carrinho - v1.0

## Padrão Geral

Conforme `.cursor/rules/plataforma-loterias-padroes.mdc`:

- View envia para `BolaoController`
- Carrinho salva em `CarrinhoUtil`
- Compra persiste em `grupo` + `bolao`

## Fluxo "Faça seu jogo"

1. Usuário escolhe dezenas na view (e campo extra quando houver: mês ST, trevos MM, time TM)
2. JavaScript (ex: `public/js/loteria/mega-sena.js`) monta os jogos
3. Envia para backend via `BolaoController` (add_meu_bolao ou similar)
4. `CarrinhoUtil::addItem` recebe itens com `numeros`, `dezenas`, `id_loteria`, `id_concurso`
5. Para loterias com campo extra: BolaoController trata sigla e adiciona ao array da aposta

## BolaoController

- `$styleBoloes` - array por sigla (MG, LF, QN, LM, DS, TM, ST, SS, MM, LFE) com img, color, name, urls, classes CSS
- `fazer_meu_bolaoAction()` - criar bolão (Request::get('loteria') = sigla)
- `fazer_meu_fechamentoAction()` - criar fechamento

## CarrinhoUtil

- `addItem()` - adiciona item ao carrinho (session)
- Persistência em `grupo` + `bolao` na finalização

## GrupoDao::getBoloesParaVenda

Usado em views de loteria para listar bolões disponíveis:

```php
getGrupoDao()->getBoloesParaVenda($idLoteria, $idConcurso, $individual)
```

Filtros: individual=0, cotas disponíveis, não bloqueado.

## Loterias com Campo Extra

| Sigla | Campo extra | Persistência |
|-------|-------------|--------------|
| ST | Mês da sorte | Último elemento no array dezenas |
| MM | Trevos (2 de 1-6) | numeros_on com qtdDezenas, qtdTrevos; mm_meta[] |
| TM | Time do coração | TimesDao |

## Conferência

`ConcursoController::conferirAction()` - usa `resultado_premiacao` por faixa e multiplicadores. Tratamento específico por sigla (ST, SS, TM, DS, MM, etc.).
