Files
DaSaSo/DaSaSo.Wpf/ViewModel/SewerObjectListViewModel.cs
2022-03-30 14:59:12 +02:00

93 lines
3.4 KiB
C#

using DaSaSo.Domain.DesignModel;
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Domain.Services.SewerObjectService;
using DaSaSo.EntityFramework.Services;
using DaSaSo.InMemoryProvider;
using DaSaSo.Wpf.ViewModel.Commands;
using DaSaSo.Wpf.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.Wpf.ViewModel
{
public class SewerObjectListViewModel : BaseViewModel
{
private readonly SewerObjectDataService _sewerObjectDataService;
private readonly IActualProject _actualProject;
private readonly ISewerObjectService _sewerObjectService;
public ObservableCollection<SewerObjectsToStreet> SewerObjects { get; }
public object Testme { get; set; }
public ICommand EditCommand { get; set; }
public ICommand AddCommand { get; set; }
public SewerObjectListViewModel(IDataService<SewerObject> sewerObjectDataService, IActualProject actualProject, ISewerObjectService sewerObjectService)
{
SewerObjects = new ObservableCollection<SewerObjectsToStreet>();
this._sewerObjectDataService = (sewerObjectDataService as SewerObjectDataService);
_sewerObjectService = sewerObjectService;
this._actualProject = actualProject;
LoadSewerObjects();
EditCommand = new SelectSewerObjectCommand(actualProject, this);
AddCommand = new AddSewerObjectCommand(actualProject, sewerObjectService);
}
public 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()
{
//BUG: Streetname can be null, programm Terminate
IEnumerable<SewerObject>? sewerobjects = await _sewerObjectDataService.GetAllByBuildingsite(_actualProject.AktuellBaustelle);
List<SewerObject> _sewers = sewerobjects.ToList();
// Get all Streetnames
IEnumerable<string>? streetnames = sewerobjects.Select(x => x.StreetName).Distinct();
List<SewerObjectsToStreet> result = new List<SewerObjectsToStreet>();
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<SewerObjectsToStreet> target, List<SewerObjectsToStreet> source)
{
target.Clear();
foreach (var i in source)
target.Add(i);
}
}
}