using DaSaSo.Domain.Model; using DaSaSo.Domain.Services; using DaSaSo.Domain.Services.SewerObjectService; using DaSaSo.Domain.Services.SewerPointServices; using DaSaSo.EntityFramework.Services; using DaSaSo.ViewModel.Commands; using DaSaSo.ViewModel.Interface; using Microsoft.Toolkit.Mvvm.Input; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input; namespace DaSaSo.ViewModel { public class SewerMainListViewModel : BaseViewModel { private ISewerMainNavigator _navigator { get; set; } private readonly SewerObjectDataService _dataservice; private readonly ISewerObjectService _sewerObjectService; private readonly IRenavigator _renavigator; private IActualProject _actualProject { get; set; } public ICommand UpdateCurrentSewerViewModelCommand { get; } public ICommand CloseCommand { get; set; } public BaseViewModel CurrentSewerViewModel => _navigator.CurrentViewModel; public bool IsLoading { get => _isLoading; set { if (_isLoading != value) { _isLoading = value; OnPropertyChanged(); } } } public string Strasse { get => _actualProject.AktuellSewerObject.StreetName; } public string AktualObject { get => _actualProject.AktuellSewerObject.ObjektName; } bool _isLoading = true; public bool CanSaveSewer => !string.IsNullOrEmpty(_actualProject.AktuellSewerObject.StreetName); public SewerMainListViewModel(IDataService dataService, ISewerMainNavigator navigator,IActualProject actualProject, IViewModelSewerMainFactory viewModelFactory, IRenavigator renavigator, ISewerObjectService sewerObjectService, ISewerpointService sewerpointService) { _navigator = navigator; _actualProject = actualProject; _dataservice = (SewerObjectDataService)dataService; _renavigator = renavigator; _sewerObjectService = sewerObjectService; CloseCommand = new SaveSewerCommand(_dataservice,_actualProject,_sewerObjectService,_renavigator,_navigator); //RelayCommand(SaveSewer); LoadModel(); UpdateCurrentSewerViewModelCommand = new UpdateCurrentSewerViewModelCommand(_navigator, viewModelFactory); _navigator.StateChanged += () => OnPropertyChanged(nameof(CurrentSewerViewModel)); } private async void LoadModel() { IsLoading = true; SewerObject sewer = await _dataservice.Get(_actualProject.AktuellSewerObject.Id); _actualProject.SetSewerObject(sewer,false); IsLoading = false; } public override void Dispose() { _navigator.StateChanged -= () => OnPropertyChanged(nameof(CurrentSewerViewModel)); base.Dispose(); } } }