Appearance
Check-in Kids
Visão Geral
O módulo de Check-in Kids controla a entrada e saída de crianças em atividades da igreja. Cada check-in gera um QR Code de retirada vinculado ao responsável autorizado. O módulo suporta membros cadastrados e visitantes, e pode imprimir etiquetas de identificação em PDF via Gotenberg.
Models
Checkin
Namespace: App\Domain\Checkin\Models\Checkin
| Campo | Tipo | Descrição |
|---|---|---|
| ulid | string | Identificador público |
| nome_crianca | string | Nome da criança |
| idade | integer | Idade da criança (nullable) |
| alergias | text | Alergias/restrições de saúde (nullable) |
| qr_token | string (unique) | Token do QR code de checkout |
| status | enum CheckinStatus | Status atual |
| checkin_at | datetime | Momento do check-in |
| checkout_at | datetime | Momento do check-out (nullable) |
| crianca_id | FK members | Membro-criança vinculado (nullable — modo visitante) |
| responsavel_id | FK members | Responsável membro vinculado (nullable — modo visitante) |
| responsavel_nome | string | Nome do responsável visitante (nullable) |
| voluntario_id | FK users | Voluntário que realizou o check-in |
| event_id | FK events | Evento vinculado (nullable) |
Relationships:
crianca()— belongsTo Member (crianca_id)responsavel()— belongsTo Member (responsavel_id)voluntario()— belongsTo Userevent()— belongsTo Event
Scopes: hoje(), byEvent(event_id)
Enums
CheckinStatus
| Valor | Label |
|---|---|
ativo | Ativo (criança presente) |
finalizado | Finalizado (checkout realizado) |
cancelado | Cancelado |
Actions
| Action | Descrição |
|---|---|
| CreateCheckinAction | Cria check-in, gera QR token único e registra voluntário |
| ConfirmCheckoutAction | Confirma saída via QR code — valida que quem retira é o responsável autorizado |
| CancelCheckinAction | Cancela check-in ativo |
| GenerateCheckinLabelAction | Gera etiqueta PDF (chillerlan/QRCode + Spatie PDF) com nome, idade, alergias e QR code |
Fluxo de QR Code
- Check-in criado →
qr_tokenUUID único gerado - Etiqueta impressa com QR code apontando para rota pública de checkout
- Voluntário escaneia QR code para ver dados da criança e confirmar saída
ConfirmCheckoutActionvalida responsável e registracheckout_at
Endpoints
| Método | Rota | Controller | Descrição |
|---|---|---|---|
| GET | /checkins | CheckinController@index | Lista check-ins do dia |
| GET | /checkins/create | CheckinController@create | Formulário de check-in |
| POST | /checkins | CheckinController@store | Realizar check-in |
| GET | /checkins/{ulid} | CheckinController@show | Detalhes do check-in |
| GET | /checkins/qr/{qrToken} | CheckoutController@showByToken | Ver dados pelo QR code (público) |
| POST | /checkins/{ulid}/checkout | CheckoutController@confirm | Confirmar saída |
| GET | /checkins/{ulid}/label | CheckinLabelController@download | Download da etiqueta PDF |
A rota de download da etiqueta usa withoutMiddleware(HandleInertiaRequests) para retornar PDF puro.
Permissões
| Permissão | Quem tem |
|---|---|
| checkin.manage | admin-igreja, voluntario-kids |
O role voluntario-kids tem acesso exclusivo a este módulo, sem acesso a membros, finanças ou outros dados sensíveis.
Feature Flags
| Flag | Descrição |
|---|---|
kids_checkin | Habilita o módulo de Check-in Kids |
kids_print_label | Habilita geração de etiqueta PDF para impressão |
A action GenerateCheckinLabelAction verifica kids_print_label antes de gerar a etiqueta, lançando exceção se o recurso não estiver disponível no plano.