Files
cuidamais_med/docs/05_EditarPerfilActivity.md
2026-04-22 12:41:12 +01:00

67 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ✏️ EditarPerfilActivity.java — Edição do Perfil
> **Ficheiro:** `app/src/main/java/com/example/medcuida/pro/EditarPerfilActivity.java`
> **Layout:** `activity_editar_perfil.xml` | **Linhas:** 125
---
## Descrição Geral
Permite ao médico **editar os seus dados pessoais**: nome, especialidade e género. As alterações são guardadas **simultaneamente** nas coleções `utilizadores` e `medicos` do Firestore.
---
## Campos Editáveis
| Campo | Tipo de Input | Obrigatório |
|---|---|---|
| Nome completo | `TextInputEditText` | ✅ Sim |
| Especialidade | `TextInputEditText` | ✅ Sim |
| Género | `AutoCompleteTextView` (dropdown) | Não |
| Email | `TextInputEditText` (só leitura) | — |
---
## Inicialização (`onCreate`) — Linhas 3259
1. Verifica autenticação — se não há utilizador, fecha a Activity
2. Associa as views do layout
3. Configura o **dropdown de género** com 3 opções: `Masculino`, `Feminino`, `Outro`
4. **Botão Voltar**`finish()`
5. **Botão Guardar**`guardarAlteracoes()`
6. Chama `carregarDados()` para preencher os campos atuais
---
## `carregarDados()` — Linhas 7183
```java
db.collection("utilizadores").document(currentUserId).get()
```
- Lê o documento do médico na coleção `utilizadores`
- Preenche os campos: `nome_completo`, `especialidade`, `email`, `sexo`
- Em caso de erro → mostra toast
---
## `guardarAlteracoes()` — Linhas 86123
### Validações (Linhas 8799)
- Nome não pode estar vazio
- Especialidade não pode estar vazia
### Gravação (Linhas 101122)
```java
Map<String, Object> updates = new HashMap<>();
updates.put("nome_completo", name);
updates.put("especialidade", specialty);
updates.put("sexo", gender);
```
1. Desativa o botão para evitar duplo clique
2. Atualiza na coleção `utilizadores`
3. **Também atualiza em `medicos`** para manter sincronizado
4. Sucesso → mostra toast + `finish()`
5. Erro → reativa o botão