# US09 - Interface de Registo de Entregas **Como** Voluntário ou Administrador do RefoodOne **Quero** um ecrã com botões grandes para cada beneficiário ativo e um popup de confirmação **Para** registar de forma rápida e tátil as entregas de cabazes em dispositivos tablet. ## Descrição do Fluxo O voluntário acede ao menu "Entregas". O ecrã apresenta uma grelha de botões táteis correspondentes a todos os beneficiários ativos. Ao tocar no botão de um beneficiário (ex: "#124"), abre-se um popup de confirmação exibindo os dados principais do beneficiário (Nome e Nº de Pessoas do Agregado). Ao clicar em "Confirmar", o sistema grava a entrega associando o turno ativo e a data corrente, e fecha o popup. ## Critérios de Aceitação ### 1. Interface Gráfica (UI) - **Ecrã de Grelha (Grid)**: - Apresenta botões organizados em grelha (vários por linha dependendo da resolução). - Cada botão corresponde a um **beneficiário ativo**. - O rótulo (label) do botão deve ser o **número do beneficiário** em destaque. - Os botões devem ser dimensionados para facilitar o toque com o dedo (design tátil ideal para tablets). - **Popup de Confirmação (Modal)**: - Disparado ao clicar no botão de um beneficiário. - Deve mostrar em destaque: - **Nome do beneficiário** - **Nº de pessoas do agregado familiar** (do registo do beneficiário) - Botões de Ação no popup: - **Confirmar** (submete o registo de entrega, cor verde) - **Cancelar** (fecha o popup sem registar, cor cinzenta) ### 2. Comportamento e Regras de Negócio - Apenas beneficiários com estado **Ativo** devem ser exibidos na grelha. - **Prevenção de Duplicados (Desativação do Botão)**: - Se um beneficiário já tiver uma entrega registada na data corrente (dia de hoje), o seu respetivo botão na grelha de entregas deve estar **desativado** (disabled). - O botão desativado deve ter um aspeto visual distinto (ex: cor cinzenta ou verde-suave com um visto de "concluído") para indicar claramente que a entrega já foi efetuada no dia de hoje. - **Gravação Automática**: - Ao confirmar, o sistema regista a entrega na base de dados (`deliveries`). - A data de entrega é preenchida pelo servidor com a **data atual** (no formato YYYY-MM-DD). - O turno é determinado automaticamente pelo servidor com base no **dia da semana e hora atual** em que o registo está a ser submetido (se cair fora do horário de funcionamento de qualquer turno, associa-se o turno padrão ou mais próximo). ### 3. Integração de Dados / Segurança - O ecrã deve carregar os dados dos beneficiários e turnos no servidor (`+page.server.ts`). - A gravação deve ocorrer via SvelteKit Action (`POST` request) para garantir que a data e o turno sejam calculados e validados de forma segura no lado do servidor. - Apenas utilizadores autenticados podem aceder e registar entregas.