98 lines
2.7 KiB
C#
98 lines
2.7 KiB
C#
using CommunityToolkit.Mvvm.ComponentModel;
|
|
using CommunityToolkit.Mvvm.Input;
|
|
using System.Collections.ObjectModel;
|
|
using TravelMateAdmin.Models;
|
|
using TravelMateAdmin.Services;
|
|
|
|
namespace TravelMateAdmin.ViewModels;
|
|
|
|
public partial class MessagesViewModel : ObservableObject
|
|
{
|
|
private readonly IDatabaseService _databaseService;
|
|
|
|
[ObservableProperty]
|
|
private ObservableCollection<Message> messages = new();
|
|
|
|
[ObservableProperty]
|
|
private bool isLoading;
|
|
|
|
[ObservableProperty]
|
|
private string selectedFilter = "Tout";
|
|
|
|
public List<string> Filters { get; } = new() { "Tout", "À faire", "Fait" };
|
|
|
|
public MessagesViewModel(IDatabaseService databaseService)
|
|
{
|
|
_databaseService = databaseService;
|
|
}
|
|
|
|
[RelayCommand]
|
|
public async Task LoadMessagesAsync()
|
|
{
|
|
IsLoading = true;
|
|
|
|
try
|
|
{
|
|
System.Diagnostics.Debug.WriteLine($"=== CHARGEMENT MESSAGES ===");
|
|
System.Diagnostics.Debug.WriteLine($"Filtre sélectionné: {SelectedFilter}");
|
|
|
|
bool? isDone = SelectedFilter switch
|
|
{
|
|
"À faire" => false,
|
|
"Fait" => true,
|
|
_ => null
|
|
};
|
|
|
|
System.Diagnostics.Debug.WriteLine($"isDone filter: {isDone}");
|
|
var messagesList = await _databaseService.GetMessagesFilteredAsync(isDone);
|
|
System.Diagnostics.Debug.WriteLine($"Messages récupérés: {messagesList.Count}");
|
|
|
|
Messages.Clear();
|
|
foreach (var message in messagesList)
|
|
{
|
|
System.Diagnostics.Debug.WriteLine($"Message: {message.FullName} - {message.Email}");
|
|
Messages.Add(message);
|
|
}
|
|
System.Diagnostics.Debug.WriteLine($"Total messages affichés: {Messages.Count}");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
System.Diagnostics.Debug.WriteLine($"❌ Error loading messages: {ex.Message}");
|
|
System.Diagnostics.Debug.WriteLine($"Stack trace: {ex.StackTrace}");
|
|
}
|
|
finally
|
|
{
|
|
IsLoading = false;
|
|
}
|
|
}
|
|
|
|
[RelayCommand]
|
|
private async Task GoBackAsync()
|
|
{
|
|
await Shell.Current.GoToAsync("..");
|
|
}
|
|
|
|
[RelayCommand]
|
|
private async Task ToggleMessageStatusAsync(Message message)
|
|
{
|
|
if (message == null) return;
|
|
|
|
var success = await _databaseService.UpdateMessageStatusAsync(message.Id, !message.Done);
|
|
if (success)
|
|
{
|
|
message.Done = !message.Done;
|
|
}
|
|
}
|
|
|
|
[RelayCommand]
|
|
private async Task RefreshAsync()
|
|
{
|
|
await LoadMessagesAsync();
|
|
}
|
|
|
|
partial void OnSelectedFilterChanged(string value)
|
|
{
|
|
_ = LoadMessagesAsync();
|
|
}
|
|
}
|