This commit is contained in:
Husky
2020-07-15 17:18:52 +02:00
parent 3e9a353fc0
commit 7911a44f2f
23 changed files with 290 additions and 127 deletions

View File

@@ -2,6 +2,7 @@
using KanSan.Base.Interfaces;
using KanSan.Base.Models;
using KanSan.ViewModel.Commands;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Win32;
using Syncfusion.XlsIO;
using System;
@@ -11,6 +12,7 @@ using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text;
using System.Windows.Input;
@@ -32,10 +34,11 @@ namespace KanSan.ViewModel
private Sewer _selectedObjekt;
public static Baustelle Baustelle;
//public static Sewer SelectedObjekt;
public static List<LeistungsverzeichnisPosition> LVPositionen = null;
public static IServiceProvider ServiceProvider { get; private set; }
public ICommand ListClientsCommand { get; set; }
public ICommand ListProjectsCommand { get; set; }
public ICommand ListBaustellenCommand { get; set; }
@@ -48,13 +51,13 @@ namespace KanSan.ViewModel
{
get
{
Trace.WriteLine(actualViewModel);
return actualViewModel;
//return actualViewModel;
}
set
{
if (actualViewModel == value) return;
Trace.WriteLine("Setze viewModel auf " + value);
Trace.WriteLine("AktualView Geändert zu " + value);
actualViewModel = value;
OnPropertyChanged();
}
@@ -145,6 +148,7 @@ namespace KanSan.ViewModel
}
}
public Sewer SelectedObjekt
{
get
@@ -161,6 +165,7 @@ namespace KanSan.ViewModel
OnPropertyChanged();
}
}
private void SaveInRegistry(string key, string value)
{
Registry.SetValue(REGISTRYKEY, key, value);
@@ -223,10 +228,11 @@ namespace KanSan.ViewModel
}
public MainWindowViewModel()
{
ServiceProvider = ConfigureServiceProvider();
LadeRegistry();
LoadBaustellenLeistungsverzeichnis();
ListClients();
@@ -235,6 +241,22 @@ namespace KanSan.ViewModel
ListBaustellenCommand = new RelayCommand(paramter => ListBaustellen());
ListObjectsCommand = new RelayCommand(parameter => ListObjekte());
Mediator.Subscribe("GoTo1Screen", OnGo1Screen);
}
private void OnGo1Screen(object obj)
{
ListClients();
}
private IServiceProvider ConfigureServiceProvider()
{
IServiceCollection service = new ServiceCollection();
service.AddSingleton<MainWindowViewModel>();
return service.BuildServiceProvider();
}
private void ListClients()

View File

@@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace KanSan.ViewModel
{
class Mediator
{
private static IDictionary<string, List<Action<object>>> pl_dict = new Dictionary<string, List<Action<object>>>();
public static void Subscribe(string token, Action<object> callback)
{
if(!pl_dict.ContainsKey(token))
{
var list = new List<Action<object>>();
list.Add(callback);
pl_dict.Add(token, list);
}
else
{
bool found = false;
foreach(var item in pl_dict[token])
{
if (item.Method.ToString() == callback.Method.ToString())
found = true;
}
if (!found)
pl_dict[token].Add(callback);
}
}
public static void Unsubscribe(string token, Action<object> callback)
{
if (pl_dict.ContainsKey(token))
pl_dict[token].Remove(callback);
}
public static void Notify(string token, object args = null)
{
if(pl_dict.ContainsKey(token))
{
foreach (var callback in pl_dict[token])
callback(args);
}
}
}
}

View File

@@ -5,6 +5,7 @@ using KanSan.Base.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
namespace KanSan.ViewModel
@@ -170,6 +171,8 @@ namespace KanSan.ViewModel
public void Speichern()
{
objekt.PunktOben = getPoint(punktOben, true);
objekt.PunktUnten = getPoint(punktUnten, true);
objekt.StrasseName = strassename;
objekt.DN = durchmesser;
objekt.Haltungslaenge = haltungslaenge;
@@ -182,6 +185,29 @@ namespace KanSan.ViewModel
unitOfWork.KanaeleRepository.Update(objekt);
unitOfWork.Commit();
}
private SewerPoint getPoint(string objektnummer, bool createIfNotFound = false)
{
List<SewerPoint> sewerPoints = unitOfWork.ObjekteRepository.Get(x => x.Objektnummer.Equals(objektnummer)).ToList();
if (sewerPoints.Count < 1)
{
if (createIfNotFound == false)
return null;
else
{
Guid guidNr = Guid.NewGuid();
unitOfWork.ObjekteRepository.Update(new SewerPoint()
{
Objektnummer = objektnummer,
GuidNr = guidNr
});
unitOfWork.Commit();
return unitOfWork.ObjekteRepository.Get(x => x.GuidNr.Equals(guidNr)).ToList().First();
}
}
return sewerPoints.First();
}
}
}

View File

@@ -3,6 +3,7 @@ using KanSan.Base.Interfaces;
using KanSan.Base.Interfaces.UI;
using KanSan.Base.Models;
using KanSan.ViewModel.Commands;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -19,7 +20,17 @@ namespace KanSan.ViewModel
}
public class ObjekteListViewModel : BaseViewModel
{
public ICommand ObjektSelected { get; set; }
private ICommand _objektSelected;
public ICommand ObjektSelected {
get
{
return _objektSelected ?? (_objektSelected = new RelayCommand(x =>
{
Mediator.Notify("GoTo1Screen", "");
}));
}
}
IUnitOfWork unitOfWork = new UnitOfWork(new KanSanContext());
@@ -42,20 +53,24 @@ namespace KanSan.ViewModel
}).ToList();
kanalObjekte = x;
ObjektSelected = new RelayCommand(SelectObjekt);
//ObjektSelected = new RelayCommand(SelectObjekt);
//kanalObjekte = unitOfWork.KanaeleRepository.Get(x => x.Baustelle.Equals(selectedBaustelle)).ToList();
}
private void SelectObjekt(object obj)
{
//Debugger.Break();
if (!(obj is Sewer)) return;
Sewer sewer = (Sewer)obj;
if (sewer == null) return;
SewerMainWindowViewModel t = new SewerMainWindowViewModel(sewer);
//MainWindowViewModel.SelectedObjekt = sewer;
/*SewerMainWindowViewModel t = new SewerMainWindowViewModel(sewer);
Debugger.Break();
//throw new NotImplementedException();
*/
}
public Sewer NeueObjektHinzufügen()

View File

@@ -12,7 +12,7 @@ using System.Text;
namespace KanSan.ViewModel
{
public class SchaedenListViewModel : ISchaedenListViewModel
public class SchaedenListViewModel : BaseViewModel, ISchaedenListViewModel
{
private Sewer actualSelectedSewer;
IUnitOfWork unitOfWork = new UnitOfWork(new KanSanContext());

View File

@@ -1,9 +1,13 @@
using KanSan.Base.Models;
using KanSan.ViewModel.Commands;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Text;
using System.Windows.Input;
namespace KanSan.ViewModel
{
@@ -12,7 +16,21 @@ namespace KanSan.ViewModel
private Sewer model;
private SchaedenViewModel schadenViewModel;
private Schaeden schaden;
private BaseViewModel aktualView;
public BaseViewModel AktualView
{
get
{
return aktualView;
}
set
{
if (aktualView == value) return;
aktualView = value;
OnPropertyChanged();
}
}
public Sewer Objekt
{
@@ -56,12 +74,30 @@ namespace KanSan.ViewModel
}
public ICommand StammdatenSelect { get; private set; }
public ICommand SchädenübersichtSelect { get; private set; }
public SewerMainWindowViewModel(Sewer model)
{
if (model == null) throw new ArgumentNullException();
this.model = model;
StammdatenSelect = new RelayCommand(parameter => SelectStammdaten());
SchädenübersichtSelect = new RelayCommand(parameter => SelectSchädenübersicht());
var x = MainWindowViewModel.ServiceProvider.GetService<MainWindowViewModel>();
x.ActualViewModel = new ObjekteEditViewModel(model);
}
private void SelectSchädenübersicht()
{
AktualView = new SchaedenListViewModel(model);
}
private void SelectStammdaten()
{
AktualView = new ObjekteEditViewModel(model);
}
}
}