Files
2026-05-31 20:22:50 +01:00

35 lines
2.2 KiB
Markdown

# US05 - Editar Horário e Dias de Turno (Admin)
**Como** Administrador ou Gestor de Turnos do RefoodOne
**Quero** editar o horário (horas de início e fim) e os dias da semana de um turno específico
**Para** adaptar o funcionamento das entregas conforme a disponibilidade dos voluntários e as necessidades da Refood PdN.
## Descrição do Fluxo
O utilizador clica no botão "Editar" de um turno específico na listagem de turnos (US04). É apresentado um formulário pré-preenchido onde pode alterar a hora de início, a hora de fim e selecionar/deselecionar os dias da semana em que o turno é realizado.
## Critérios de Aceitação
### 1. Interface Gráfica (UI)
- **Campos do Formulário**:
- **Identificador** (Apenas leitura/desativado, ex: "T1")
- **Hora de Início** (Obrigatório, seletor de tempo no formato HH:MM)
- **Hora de Fim** (Obrigatório, seletor de tempo no formato HH:MM)
- **Dias da Semana** (Obrigatório, checkboxes permitindo selecionar múltiplos dias, ex: Segunda a Domingo)
- **Botões de Ação**:
- **Guardar** (Submete o formulário e grava as alterações)
- **Cancelar** (Volta para a listagem sem guardar)
### 2. Comportamento e Regras de Negócio
- Apenas utilizadores com as funções de **Admin** ou **Gestor de Turnos** podem aceder a este ecrã e guardar alterações.
- **Validações**:
- A hora de fim deve ser posterior à hora de início.
- A duração configurada deve respeitar as regras do sistema (ex: 2 horas por turno por defeito, ou emitir um aviso/validação caso não seja).
- Pelo menos um dia da semana deve ser selecionado (não é permitido ter um turno ativo sem dias associados).
- **Redirecionamento**:
- Após guardar com sucesso, redirecionar para a listagem de turnos (US04) com uma mensagem de sucesso em PT-PT (ex: *"Horário do turno guardado com sucesso"*).
- Clicar em Cancelar redireciona de volta para a listagem (US04) sem efetuar qualquer alteração.
### 3. Integração de Dados / Segurança
- As alterações de horário e dias devem ser guardadas com segurança na base de dados SQLite através do Drizzle ORM.
- O processamento da ação do formulário deve ocorrer no servidor (`+page.server.ts` actions).