# 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).