Files
DaSaSo/DaSaSo.ViewModel/SewerMainListViewModel.cs
2021-10-07 13:43:01 +02:00

107 lines
3.9 KiB
C#

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 ICommand SchadenCommand { get; set; }
public ICommand Schlauchliner { get; set; }
public BaseViewModel CurrentSewerViewModel => Navigator.CurrentViewModel;
public bool CanSelectDamage => Schaden != null;
public bool IsLoading
{
get => _isLoading;
set
{
if (_isLoading != value)
{
_isLoading = value;
OnPropertyChanged();
}
}
}
private SewerDamage _schaden;
public SewerDamage Schaden
{
get => _schaden;
set
{
_schaden = value;
OnPropertyChanged();
OnPropertyChanged(nameof(CanSelectDamage));
}
}
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<SewerObject> 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));
ActualProject.SewerDamageChanged += ActualProject_SewerDamageChanged;
//SchadenCommand = UpdateCurrentSewerViewModelCommand.Execute(); // new SelectDamageCommand(this);
}
private void ActualProject_SewerDamageChanged(object? sender, EventArgs e)
{
Schaden = ActualProject.AktuellSewerDamage;
OnPropertyChanged(nameof(Schaden));
}
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();
}
}
}