68 lines
2.3 KiB
C#
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");
|
|
}
|
|
}
|
|
} |