using System.Collections.ObjectModel;
using System.Threading.Tasks;
using System.Windows.Input;
using MauiAppStock.Models;
using MauiAppStock.Data;
using MauiAppStock.Helpers;

namespace MauiAppStock.ViewModels
{
    public class FournisseursViewModel : BaseViewModel
    {
        public ObservableCollection<Fournisseur> Fournisseurs { get; set; }
        public ICommand LoadFournisseursCommand { get; }
        public ICommand DeleteFournisseurCommand { get; }

        public FournisseursViewModel()
        {
            Fournisseurs = new ObservableCollection<Fournisseur>();
            LoadFournisseursCommand = new AsyncCommand(LoadFournisseurs);
            DeleteFournisseurCommand = new AsyncCommand<Fournisseur>(DeleteFournisseur);
        }

        private async Task LoadFournisseurs()
        {
            Fournisseurs.Clear();
            var fournisseursList = await Database.GetFournisseursAsync();
            foreach (var fournisseur in fournisseursList)
            {
                Fournisseurs.Add(fournisseur);
            }
        }

        private async Task DeleteFournisseur(Fournisseur fournisseur)
        {
            if (fournisseur != null)
            {
                await Database.DeleteFournisseurAsync(fournisseur);
                Fournisseurs.Remove(fournisseur);
            }
        }
    }
}