# Detalhes da Implementação: Múltiplos Horários de Medicamentos

Este documento detalha as mudanças técnicas feitas em 15 de Abril de 2026 para suportar múltiplos horários num único medicamento.

## Motivação
Anteriormente, cada medicamento podia ter apenas um horário (ex: "08:00"). Se o utilizador precisasse de tomar o mesmo comprimido de 8 em 8 horas, teria de criar 3 entradas separadas. Agora, uma única entrada suporta todos os horários.

## Alterações Técnicas

### 1. Layout (`dialog_add_medication.xml`)
- **Removido:** `TextView (text_med_time)` que exibia o horário fixo.
- **Adicionado:**
  - `ChipGroup (chip_group_times)` para exibir dinamicamente os horários selecionados.
  - `MaterialButton (btn_add_time)` com texto "Adicionar" para abrir o seletor.

### 2. Diálogo (`MedicationDialog.java`)
- **Estado:** Agora guarda uma `List<String> selectedTimes`.
- **Lógica de Seleção:**
  - `showTimePicker()`: Abre o `TimePickerDialog` e adiciona o horário à lista se ainda não existir.
  - `Collections.sort()`: Mantém os chips ordenados cronologicamente.
  - `refreshTimeChips()`: Recria os chips no `ChipGroup` sempre que a lista muda.
- **Persistência:** No momento de guardar, a lista de horários é unida por vírgulas (ex: `"08:00, 14:00, 20:00"`) no campo `time` do modelo `Medication`.

### 3. Fragmento e Alarmes (`MedicationFragment.java`)
- **Agendamento:** Quando um medicamento é guardado, o código faz o `split(",\\s*")` na string de horários e percorre cada um.
- **IDs de Alarme Únicos:** Para cada horário, gera um ID único usando `(nome + horario).hashCode()`. Isso evita que um alarme substitua o outro.
- **Limpeza:** Antes de atualizar ou ao eliminar, o sistema percorre os horários antigos e cancela todos os `PendingIntent` correspondentes para evitar alarmes "fantasma".

## Compatibilidade
- O modelo `Medication` não precisou de alteração de campo, mantendo a compatibilidade com a base de dados Firestore atual.
- A lista principal (`MedicationAdapter`) apenas exibe a string combinada, o que é visualmente limpo para o utilizador.

---
*Documentação técnica de implementação - Cuida+*
