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

83 lines
2.5 KiB
C#

using GuilhermesApp.Helpers;
using Firebase.Database.Query;
namespace GuilhermesApp.Pages;
public partial class FormsHistoryPage : ContentPage
{
private FirebaseService _firebaseService = new FirebaseService();
public FormsHistoryPage()
{
InitializeComponent();
}
protected override async void OnAppearing()
{
base.OnAppearing();
await CarregarHistorico();
}
private async Task CarregarHistorico()
{
try
{
var user = _firebaseService.AuthClient.User;
if (user == null) return;
// Vai buscar todos os registos na pasta Forms do utilizador
var forms = await _firebaseService.DbClient
.Child("Forms")
.Child(user.Uid)
.OnceAsync<FormResult>();
LoadingIndicator.IsRunning = false;
LoadingIndicator.IsVisible = false;
if (forms.Count == 0)
{
EmptyLabel.IsVisible = true;
}
else
{
// Converte os dados, inverte a ordem (para o mais recente ficar no topo) e mostra na lista
var listaOrdenada = forms.Select(f => f.Object).Reverse().ToList();
FormsCollection.ItemsSource = listaOrdenada;
FormsCollection.IsVisible = true;
}
}
catch (Exception)
{
LoadingIndicator.IsRunning = false;
LoadingIndicator.IsVisible = false;
await DisplayAlert("Erro", "Não foi possível carregar o histórico.", "OK");
}
}
private async void OnFormSelected(object sender, SelectionChangedEventArgs e)
{
if (e.CurrentSelection.FirstOrDefault() is FormResult form)
{
string exercicio = form.FezExercicio ? "Sim" : "Não";
string mensagem = $"Humor: {form.Humor}\nStress: {form.Stress}/10\nSono: {form.Sono}\nExercício: {exercicio}\nNotas: {form.Notas}";
await DisplayAlert($"Detalhes de {form.Data}", mensagem, "Fechar");
// Limpa a seleção para permitir clicar novamente no mesmo
((CollectionView)sender).SelectedItem = null;
}
}
}
// Classe de apoio para mapear os dados do Firebase
public class FormResult
{
public string? Data { get; set; }
public string? Humor { get; set; }
public double Stress { get; set; }
public string? Sono { get; set; }
public bool FezExercicio { get; set; }
public string? Notas { get; set; }
}