using DaSaSo.Domain.Model; using DaSaSo.Domain.Services; using DaSaSo.Domain.Services.ProjectServices; using DaSaSo.EntityFramework.Services; using DaSaSo.ViewModel.Commands; using DaSaSo.ViewModel.Interface; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input; namespace DaSaSo.ViewModel { public class ProjectListViewModel : BaseViewModel { private ProjectDataService genericDataService; private IActualProject actualProject; private IRenavigator renavigator; public ObservableCollection Projekte { get; } private Project? _selectedProject; public Project SelectedProject { get => _selectedProject; set { if(_selectedProject != value) { _selectedProject = value; OnPropertyChanged(); OnPropertyChanged(nameof(CanSelectProject)); } } } public ICommand SelectCommand { get; set; } public ICommand AddCommand { get; set; } public ICommand EditCommand { get; set; } public bool CanSelectProject => SelectedProject != null; public ProjectListViewModel(IDataService genericDataService, IActualProject actualProject, IRenavigator renavigator, IProjectService projectService) { Projekte = new ObservableCollection(); if (genericDataService == null) throw new ArgumentNullException("genericDataService"); this.genericDataService = (genericDataService as ProjectDataService); this.actualProject = actualProject; this.renavigator = renavigator; SelectCommand = new SelectProjectCommand(actualProject, this); AddCommand = new AddProjectCommand(genericDataService,actualProject, projectService,renavigator); EditCommand = new EditProjectCommand(genericDataService, actualProject, renavigator,projectService, this); LoadProjecte(); } public async void LoadProjecte() { var projects = await genericDataService.GetAll(); InitCollection(Projekte, projects); } private void InitCollection(ObservableCollection target, IEnumerable source) { target.Clear(); foreach (var i in source) target.Add(i); } } }