67 lines
1.9 KiB
Markdown
67 lines
1.9 KiB
Markdown
# ✏️ 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 32–59
|
||
|
||
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 71–83
|
||
|
||
```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 86–123
|
||
|
||
### Validações (Linhas 87–99)
|
||
- Nome não pode estar vazio
|
||
- Especialidade não pode estar vazia
|
||
|
||
### Gravação (Linhas 101–122)
|
||
```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
|