using SewerStammGen.Shared.Contracts;
using SewerStammGen.Shared.Domain;
using StammGenerator.Commands;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;

namespace StammGenerator.ViewModel
{
    public class AuftraggeberListViewModel : BaseViewModel
    {
        private readonly ObservableCollection<Auftraggeber> _auftraggeber;
        private readonly IAuftraggeberDataService _auftraggeberDataService;

        public Auftraggeber? SelectedAuftraggeber { get; set; }
        public ObservableCollection<Auftraggeber> Auftraggeber { get => _auftraggeber; }
        public ICommand AddCommand { get; set; }
        public ICommand EditCommand { get; set; }

        public AuftraggeberListViewModel(IAuftraggeberDataService auftraggeberDataService)
        {
            _auftraggeber = new ObservableCollection<Auftraggeber>();
            _auftraggeberDataService = auftraggeberDataService;

            AddCommand = new AuftraggeberAddCommand();
            EditCommand = new AuftraggeberEditCommand();

            LoadAuftraggeber();
        }

       

        private async void LoadAuftraggeber()
        {
            var auftraggeber = await _auftraggeberDataService.GetAll();
            InitCollection(_auftraggeber, auftraggeber);
        }

        private void InitCollection(ObservableCollection<Auftraggeber> dest, IEnumerable<Auftraggeber> source)
        {
            dest.Clear();
            foreach(var sourceItem in source)
            {
                dest.Add(sourceItem);
            }
        }
    }
}
