Files
ExemploAppMAUI/GuilhermesApp/Pages/RegisterPage.xaml.cs
Guilherme Gaspar 44f456eb29 Guilhermes
2026-03-23 17:42:36 +00:00

68 lines
2.3 KiB
C#

using GuilhermesApp.Helpers;
using Firebase.Database.Query;
namespace GuilhermesApp.Pages;
public partial class RegisterPage : ContentPage
{
private FirebaseService _firebaseService = new FirebaseService();
public RegisterPage()
{
InitializeComponent();
}
private async void OnRegisterAccountClicked(object sender, EventArgs e)
{
// 1. Validar se está tudo preenchido
if (string.IsNullOrWhiteSpace(NomeEntry.Text) || string.IsNullOrWhiteSpace(TelemovelEntry.Text) ||
GeneroPicker.SelectedIndex == -1 || string.IsNullOrWhiteSpace(EmailEntry.Text) ||
string.IsNullOrWhiteSpace(PasswordEntry.Text))
{
await DisplayAlert("Erro", "Preenche todos os campos.", "OK");
return;
}
// 2. Validar passwords
if (PasswordEntry.Text != ConfirmPasswordEntry.Text)
{
await DisplayAlert("Erro", "As passwords não coincidem.", "OK");
return;
}
if (PasswordEntry.Text.Length < 6)
{
await DisplayAlert("Erro", "A password tem de ter pelo menos 6 caracteres.", "OK");
return;
}
try
{
// 3. Cria a conta na Autenticação
var userCredential = await _firebaseService.AuthClient.CreateUserWithEmailAndPasswordAsync(EmailEntry.Text, PasswordEntry.Text);
var uid = userCredential.User.Uid; // O ID único do utilizador
// 4. Guarda os restantes dados na Realtime Database, na pasta "Users"
await _firebaseService.DbClient
.Child("Users")
.Child(uid)
.PutAsync(new
{
Nome = NomeEntry.Text,
Telemovel = TelemovelEntry.Text,
Genero = GeneroPicker.SelectedItem.ToString(),
Email = EmailEntry.Text
});
await DisplayAlert("Sucesso", "Conta criada com sucesso!", "OK");
// Volta para a página de Login
await Shell.Current.GoToAsync("..");
}
catch (Exception ex)
{
// Mostra o erro exato que vem do Firebase
await DisplayAlert("Erro", $"Não foi possível criar a conta. Detalhe: {ex.Message}", "OK");
}
}
}