121 lines
4.2 KiB
C#
121 lines
4.2 KiB
C#
using DaSaSo.Domain.Enums;
|
|
using DaSaSo.Domain.Model;
|
|
using DaSaSo.EntityFramework;
|
|
using DaSaSo.EntityFramework.Services;
|
|
using DaSaSo.ViewModel.Commands;
|
|
using DaSaSo.ViewModel.Enums;
|
|
using DaSaSo.ViewModel.Interface;
|
|
using DaSaSo.ViewModel.State.Navigation;
|
|
using Microsoft.Toolkit.Mvvm.Input;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Input;
|
|
|
|
namespace DaSaSo.ViewModel
|
|
{
|
|
public sealed class MainWindowViewModel : BaseViewModel
|
|
{
|
|
private readonly IViewModelAbstractFactory viewModelFactory;
|
|
private readonly IActualProject _actualProject;
|
|
private string _clientname = "";
|
|
private string _projektname = "";
|
|
private string _buildingsitename = "";
|
|
public bool CanSelectProject { get => _actualProject.AktuellClient != null; }
|
|
public bool CanSelectBuildingSite { get => _actualProject.AktuellProjekt != null; }
|
|
public bool CanSelectSewerObjects { get => _actualProject.AktuellBaustelle != null; }
|
|
|
|
public IMainWindowNavigator _navigator { get; set; }
|
|
public ICommand UpdateCurrentViewModelCommand { get; }
|
|
public BaseViewModel CurrentViewModel => _navigator.CurrentViewModel;
|
|
|
|
public string ClientName
|
|
{
|
|
get => _clientname;
|
|
set
|
|
{
|
|
if(_clientname != value)
|
|
{
|
|
_clientname = value;
|
|
OnPropertyChanged();
|
|
}
|
|
}
|
|
}
|
|
|
|
public string Projektname
|
|
{
|
|
get => _projektname;
|
|
set
|
|
{
|
|
if (_projektname != value)
|
|
{
|
|
_projektname = value;
|
|
OnPropertyChanged();
|
|
}
|
|
}
|
|
}
|
|
public string Buildingsitename
|
|
{
|
|
get => _buildingsitename;
|
|
set
|
|
{
|
|
if (_buildingsitename != value)
|
|
{
|
|
_buildingsitename = value;
|
|
OnPropertyChanged();
|
|
}
|
|
}
|
|
}
|
|
|
|
public MainWindowViewModel(IMainWindowNavigator navigator,IViewModelAbstractFactory viewModelFactory, IActualProject actualProject)
|
|
{
|
|
this._navigator = navigator;
|
|
this.viewModelFactory = viewModelFactory;
|
|
|
|
_navigator.StateChanged += _navigator_StateChanged;
|
|
|
|
UpdateCurrentViewModelCommand = new UpdateCurrentViewModelCommand(navigator, viewModelFactory);
|
|
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Home);
|
|
_actualProject = actualProject;
|
|
_actualProject.ClientChanged += _actualProject_ClientChanged;
|
|
_actualProject.ProjectChanged += _actualProject_ProjectChanged;
|
|
_actualProject.BuildingSiteChanged += _actualProject_BuildingSiteChanged;
|
|
_actualProject.SewerObjectChanged += _actualProject_SewerObjectChanged;
|
|
}
|
|
|
|
private void _actualProject_SewerObjectChanged(object? sender, EventArgs e)
|
|
{
|
|
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.SewerMainMenu);
|
|
}
|
|
|
|
private void _navigator_StateChanged()
|
|
{
|
|
OnPropertyChanged(nameof(CurrentViewModel));
|
|
}
|
|
|
|
private void _actualProject_BuildingSiteChanged(object? sender, EventArgs e)
|
|
{
|
|
Buildingsitename = _actualProject.AktuellBaustelle.BuildingSiteNumber;
|
|
OnPropertyChanged(nameof(CanSelectSewerObjects));
|
|
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.SewerObjects);
|
|
}
|
|
|
|
private void _actualProject_ProjectChanged(object? sender, EventArgs e)
|
|
{
|
|
Projektname = _actualProject.AktuellProjekt.Name;
|
|
OnPropertyChanged(nameof(CanSelectBuildingSite));
|
|
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Buildingsites);
|
|
}
|
|
|
|
private void _actualProject_ClientChanged(object? sender, EventArgs e)
|
|
{
|
|
ClientName = _actualProject.AktuellClient.Firstname;
|
|
OnPropertyChanged(nameof(CanSelectProject));
|
|
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Projects);
|
|
}
|
|
}
|
|
}
|