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 INavigator Navigator { get; set; } public ICommand UpdateCurrentViewModelCommand { get; } 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(INavigator navigator,IViewModelAbstractFactory viewModelFactory, IActualProject actualProject) { this.Navigator = navigator; this.viewModelFactory = viewModelFactory; UpdateCurrentViewModelCommand = new UpdateCurrentViewModelCommand(navigator, viewModelFactory); UpdateCurrentViewModelCommand.Execute(EViewType.Home); _actualProject = actualProject; _actualProject.ClientChanged += _actualProject_ClientChanged; _actualProject.ProjectChanged += _actualProject_ProjectChanged; _actualProject.BuildingSiteChanged += _actualProject_BuildingSiteChanged; } private void _actualProject_BuildingSiteChanged(object? sender, EventArgs e) { Buildingsitename = _actualProject.AktuellBaustelle.BuildingSiteNumber; } private void _actualProject_ProjectChanged(object? sender, EventArgs e) { Projektname = _actualProject.AktuellProjekt.Name; } private void _actualProject_ClientChanged(object? sender, EventArgs e) { ClientName = _actualProject.AktuellClient.Firstname; } } }