using DaSaSo.Domain.Model; using DaSaSo.Domain.Services; using DaSaSo.Domain.Services.BuildingsiteServices; using DaSaSo.EntityFramework.Services; using DaSaSo.ViewModel.Commands; using DaSaSo.ViewModel.Interface; 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 DaSaSo.ViewModel { public class BuildingsiteListViewModel: BaseViewModel { public ObservableCollection Buildingsites { get; } private readonly IActualProject _actualProject; private readonly IRenavigator _renavigator; private readonly BuildingsiteDataService _buildingSiteDataService; private Buildingsite? _selectedBuildingsite; public Buildingsite? SelectedBuildingsite { get => _selectedBuildingsite; set { if(_selectedBuildingsite != value) { _selectedBuildingsite = value; OnPropertyChanged(); OnPropertyChanged(nameof(CanSelectBuildingsite)); } } } public ICommand SelectCommand { get; set; } public ICommand AddCommand { get; set; } public ICommand EditCommand { get; set; } public bool CanSelectBuildingsite => SelectedBuildingsite != null; public BuildingsiteListViewModel(IDataService buildingSiteDataService, IActualProject actualProject, IRenavigator renavigator,IBuildingsiteService buildingsiteService) { _actualProject = actualProject; _renavigator = renavigator; _buildingSiteDataService = buildingSiteDataService as BuildingsiteDataService; Buildingsites = new ObservableCollection(); EditCommand = new EditBuildingsiteCommand(buildingSiteDataService,actualProject,renavigator,buildingsiteService,this); SelectCommand = new SelectBuildingsiteCommand(actualProject, this); AddCommand = new AddBuildingsiteCommand(buildingSiteDataService, actualProject, buildingsiteService,renavigator); LoadBuildingsites(); } private async void LoadBuildingsites() { var buildingsites = await _buildingSiteDataService.GetAllByProjekt(_actualProject.AktuellProjekt); InitCollection(Buildingsites, buildingsites); } private void InitCollection(ObservableCollection target, IEnumerable source) { target.Clear(); foreach (var i in source) target.Add(i); } } }