using DaSaSo.Domain.DesignModel; using DaSaSo.Domain.Model; using DaSaSo.Domain.Services; using DaSaSo.EntityFramework.Services; using DaSaSo.InMemoryProvider; using DaSaSo.ViewModel.Interface; using Microsoft.Toolkit.Mvvm.Input; 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 SewerObjectListViewModel : BaseViewModel { private readonly SewerObjectDataService _sewerObjectDataService; private readonly IActualProject _actualProject; public ObservableCollection SewerObjects { get; } public object Testme { get; set; } public ICommand Bearbeiten { get; set; } public SewerObjectListViewModel(IDataService sewerObjectDataService, IActualProject actualProject) { SewerObjects = new ObservableCollection(); this._sewerObjectDataService = (sewerObjectDataService as SewerObjectDataService); this._actualProject = actualProject; LoadSewerObjects(); Bearbeiten = new RelayCommand(function); } private void function() { SewerObject? SelectedSewer = GetSelectedSewer(); if (SelectedSewer == null) return; Debugger.Break(); } private SewerObject? GetSelectedSewer() { SewerObject? result = null; foreach(SewerObjectsToStreet? streetcollection in SewerObjects) { foreach(SewerObject? sewer in streetcollection.SewerObjects) { if (sewer.IsSelected) { result = sewer; break; } } if (result != null) break; } return result; } private async void LoadSewerObjects() { IEnumerable? sewerobjects = await _sewerObjectDataService.GetAllByBuildingsite(_actualProject.AktuellBaustelle); List _sewers = sewerobjects.ToList(); // Get all Streetnames IEnumerable? streetnames = sewerobjects.Select(x => x.StreetName).Distinct(); List result = new List(); foreach(string streetname in streetnames) { SewerObjectsToStreet res = new SewerObjectsToStreet(); res.Streetname = streetname; // Get all Objects that called in street res.SewerObjects = _sewers.FindAll(x => x.StreetName.Equals(streetname)); result.Add(res); } InitCollection(SewerObjects, result); } private void InitCollection(ObservableCollection target, List source) { target.Clear(); foreach (var i in source) target.Add(i); } } }