Files
MainSoftware/GuiWPF/ViewModel/MainWindowViewModel.cs
2022-05-30 17:04:24 +02:00

234 lines
7.8 KiB
C#

using DichtheitManagement.Contract;
using Mappings;
using Models;
using Ninject;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace GuiWPF.ViewModel
{
enum MenuEntries
{
AUFTRAGGEBER = 0,
BAUVORHABEN = 1,
INSPEKTIONSOBJEKTE = 2
}
public class MainWindowViewModel : ViewModelBase
{
private MenuEntries _selectedMenu;
public ICommand LoadHomePageCommand { get; private set; }
public ICommand LoadSettingsPageCommand { get; private set;}
public ICommand LoadAuftraggeberListPageCommand { get; private set; }
public ICommand LoadEditAuftraggeberPageCommand { get; private set; }
public ICommand AddNewInspektionsObjektCommand { get; private set; }
public ICommand NextMenuEntriePageCommand { get; set; }
private Models.Auftraggeber _selectedAuftraggeber;
private Models.Bauvorhaben _selectedBauvorhaben;
private Models.Inspektionsobjekt _selectedsewerobject;
public List<Models.Bauvorhaben> BauvorhabenListe
{
get
{
if(SelectedAuftraggeber != null && SelectedAuftraggeber.Baustellen != null)
return SelectedAuftraggeber.Baustellen.ToList();
return new List<Models.Bauvorhaben>();
}
set
{
OnPropertyChanged();
}
}
public List<Models.Inspektionsobjekt> InspektionsobjekteListe
{
get
{
if(SelectedAuftraggeber != null && SelectedBauvorhaben.Prüfobjekte != null)
return SelectedBauvorhaben.Prüfobjekte.ToList();
return new List<Models.Inspektionsobjekt>();
}
set
{
OnPropertyChanged();
}
}
public Models.Bauvorhaben SelectedBauvorhaben
{
get => _selectedBauvorhaben;
set
{
if(value != _selectedBauvorhaben)
{
_selectedBauvorhaben = value;
OnPropertyChanged();
InspektionsobjekteListe.Clear();
InspektionsobjekteListe = _selectedBauvorhaben.Prüfobjekte;
}
}
}
public Models.Auftraggeber SelectedAuftraggeber
{
get => _selectedAuftraggeber;
set
{
if(value != _selectedAuftraggeber)
{
_selectedAuftraggeber = value;
OnPropertyChanged();
}
}
}
public Models.Inspektionsobjekt SelectedSewerObject
{
get => _selectedsewerobject;
set
{
if(value != _selectedsewerobject)
{
_selectedsewerobject = value;
OnPropertyChanged();
CurrentViewModel = new SewerObjectDetailsPageViewModel(SelectedSewerObject);
}
}
}
private ViewModelBase _currentViewModel;
private ViewModelBase _aktuellmenu;
private IQueryable<Models.Auftraggeber> auftraggeberlist = null;
private IAuftraggeberManager auftraggeberManager = null;
private IBaustelleManager baustellenManager = null;
private StandardKernel kernel = null;
public ViewModelBase CurrentViewModel
{
get => _currentViewModel;
set
{
_currentViewModel = value;
OnPropertyChanged();
}
}
public ViewModelBase AktuellMenu
{
get => _aktuellmenu;
set
{
_aktuellmenu = value;
OnPropertyChanged();
}
}
void SetMenu(MenuEntries newMenu)
{
switch(newMenu)
{
case MenuEntries.AUFTRAGGEBER:
AktuellMenu = new AuftraggeberListPageViewModel(kernel);
_selectedMenu = MenuEntries.AUFTRAGGEBER;
break;
case MenuEntries.BAUVORHABEN:
AktuellMenu = new BauvorhabenListPageViewModel(kernel,SelectedAuftraggeber);
_selectedMenu = MenuEntries.BAUVORHABEN;
break;
case MenuEntries.INSPEKTIONSOBJEKTE:
AktuellMenu = new SewerObjectListPageViewModel(kernel, SelectedBauvorhaben, this);
_selectedMenu = MenuEntries.INSPEKTIONSOBJEKTE;
break;
}
}
public MainWindowViewModel()
{
this.LoadHomePage();
this.LoadAuftraggeberListPageCommand = new DelegateCommand(o => this.LoadAuftraggeberListPage());
this.LoadEditAuftraggeberPageCommand = new DelegateCommand(o => this.LoadAuftraggeberEditPage());
this.LoadHomePageCommand = new DelegateCommand(o => this.LoadHomePage());
this.LoadSettingsPageCommand = new DelegateCommand(o => this.LoadSettingsPage());
this.AddNewInspektionsObjektCommand = new DelegateCommand(o => this.AddNewInspektionsObjekt());
this.NextMenuEntriePageCommand = new DelegateCommand(o => this.NextMenuEntrie());
kernel = new StandardKernel();
new KernelInitializer().Initialize(kernel);
/*auftraggeberManager = kernel.Get<IAuftraggeberManager>();
baustellenManager = kernel.Get<IBaustelleManager>();
auftraggeberlist = auftraggeberManager.GetAllAuftraggeber();*/
SetMenu(MenuEntries.AUFTRAGGEBER);
}
private void NextMenuEntrie()
{
switch(_selectedMenu)
{
case MenuEntries.AUFTRAGGEBER:
SelectedAuftraggeber = (AktuellMenu as AuftraggeberListPageViewModel).SelectedAuftraggeber;
SetMenu(MenuEntries.BAUVORHABEN);
break;
case MenuEntries.BAUVORHABEN:
SelectedBauvorhaben = (AktuellMenu as BauvorhabenListPageViewModel).SelectedBauvorhaben;
SetMenu(MenuEntries.INSPEKTIONSOBJEKTE);
break;
case MenuEntries.INSPEKTIONSOBJEKTE:
break;
}
}
private void AddNewInspektionsObjekt()
{
if (SelectedBauvorhaben.Prüfobjekte == null)
SelectedBauvorhaben.Prüfobjekte = new List<Models.Inspektionsobjekt>();
SelectedBauvorhaben.Prüfobjekte.Add(new Models.Inspektionsobjekt());
auftraggeberManager.Update(SelectedAuftraggeber);
}
private void LoadHomePage()
{
CurrentViewModel = new HomePageViewModel(
new HomePage { PageTitle = "This is the Home Page" });
}
private void LoadSettingsPage()
{
CurrentViewModel = new SettingsPageViewModel(
new SettingsPage() { PageTitle = "This is the SettingsPage" });
//auftraggeberManager.Update(auftraggeberlist.OrderBy(y => y.Id).Last());
BauvorhabenEditPageViewModel bauvorhaben = new BauvorhabenEditPageViewModel();
}
private void LoadAuftraggeberEditPage()
{
CurrentViewModel = new AuftraggeberEditPageViewModel(auftraggeberManager.GetAllAuftraggeber().OrderBy(y => y.Id).Last(),auftraggeberManager);
}
private void LoadAuftraggeberListPage()
{
//CurrentViewModel = new AuftraggeberListPageViewModel(auftraggeberManager);
}
}
}