# US03 - Detalhe e Edição de Beneficiário (Admin) **Como** Administrador do RefoodOne **Quero** visualizar, criar e editar as informações de um beneficiário específico **Para** manter os dados dos beneficiários atualizados no sistema. ## Descrição do Fluxo Este ecrã serve dois propósitos: 1. **Criação**: Acedido através do botão "Novo Beneficiário" na listagem (US02), abrindo o formulário vazio para preenchimento. 2. **Edição/Visualização**: Acedido através do botão de ação "Editar" na listagem (US02), abrindo o formulário pré-preenchido com os dados do beneficiário selecionado. ## Critérios de Aceitação ### 1. Interface Gráfica (UI) - **Campos do Formulário**: - **Número** (obrigatório, numérico único - identificador do beneficiário no sistema) - **Nome** (obrigatório, texto) - **Contacto** (obrigatório, número de telefone/telemóvel válido) - **Nº Pessoas do Agregado** (obrigatório, numérico, mínimo 1) - **Observações** (opcional, área de texto livre para notas adicionais) - **Estado** (Ativo / Inativo - apenas na edição) - **Botões de Ação**: - **Guardar** (submete o formulário e guarda os dados) - **Cancelar** (volta para a listagem sem guardar alterações) ### 2. Comportamento e Regras de Negócio - Apenas utilizadores com a função **Admin** podem aceder/gravar neste ecrã. - **Validações**: - O campo **Número** deve ser único na base de dados. Se o Administrador tentar guardar um número já existente, o sistema deve exibir um aviso claro em PT-PT. - Todos os campos obrigatórios devem ser validados antes de permitir guardar. - **Redirecionamento**: - Após guardar com sucesso (inserir ou atualizar), o sistema deve redirecionar o utilizador de volta para a listagem de beneficiários (US02) com uma mensagem de sucesso (ex: *"Beneficiário guardado com sucesso"*). - Clicar em Cancelar deve redirecionar de volta para a listagem (US02) sem efetuar qualquer alteração. ### 3. Integração de Dados / Segurança - As operações de escrita (INSERT/UPDATE) devem ser efetuadas de forma segura na base de dados SQLite através do Drizzle ORM. - O processamento do formulário deve ser feito inteiramente no servidor (`+page.server.ts` actions).