Guilhermes
This commit is contained in:
68
GuilhermesApp/Pages/RegisterPage.xaml.cs
Normal file
68
GuilhermesApp/Pages/RegisterPage.xaml.cs
Normal file
@@ -0,0 +1,68 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user