154 lines
6.0 KiB
C#
154 lines
6.0 KiB
C#
using CommunityToolkit.Mvvm.Input;
|
|
using dcnsanplanung.bewertung;
|
|
using dcnsanplanung.DAL.Services.PostgresqlData;
|
|
using dcnsanplanung.shared.Model;
|
|
using Schnittstelle.Import.XML.v2013.Model;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Input;
|
|
|
|
namespace dcnsanplanung.wpf.ViewModel
|
|
{
|
|
internal class MainWindowViewModel : BaseViewModel
|
|
{
|
|
public List<Haltung> VerfügbareHaltungen { get; set; } = new List<Haltung>();
|
|
|
|
Queue<Haltung> Einzelfallbetrachtung = new Queue<Haltung>();
|
|
|
|
public ICommand LoadXMLFile { get; set; }
|
|
public ICommand Klassifiere { get; set; }
|
|
public ICommand SelectEinzelfall { get; set; }
|
|
public ICommand ExecuteBewertung { get; set; }
|
|
|
|
public string ZahlEinzelfall => Einzelfallbetrachtung.Count.ToString();
|
|
|
|
private Haltung? selectedHaltung;
|
|
public Haltung? SelectedHaltung
|
|
{
|
|
get => selectedHaltung;
|
|
set
|
|
{
|
|
if(selectedHaltung != value)
|
|
{
|
|
selectedHaltung = value;
|
|
OnPropertyChanged();
|
|
}
|
|
}
|
|
}
|
|
public MainWindowViewModel()
|
|
{
|
|
|
|
LoadHaltungen();
|
|
LoadXMLFile = new RelayCommand(() => dooAsync());
|
|
Klassifiere = new RelayCommand(() => dooKlassifiziereAsync());
|
|
ExecuteBewertung = new RelayCommand(() => dooBewertungAsync());
|
|
SelectEinzelfall = new RelayCommand(() => selectEinzelfall());
|
|
|
|
}
|
|
|
|
private async void dooBewertungAsync()
|
|
{
|
|
DAL.Services.PostgresqlData.HaltungDataService haltungDataService = new DAL.Services.PostgresqlData.HaltungDataService("Host = 10.1.0.2; Database = sanplaner; Username = sanplaner; Password = sanplaner");
|
|
var s = await haltungDataService.GetAllByProjekt(0);
|
|
SchadenDataService schadenDataService = new SchadenDataService("Host = 10.1.0.2; Database = sanplaner; Username = sanplaner; Password = sanplaner");
|
|
foreach (var item in s)
|
|
{
|
|
|
|
IEnumerable<Schaden> src_kodierung = await schadenDataService.GetAllByHaltung(item);
|
|
item.Kodierungen = src_kodierung.ToList();
|
|
}
|
|
|
|
BewM149.CalculateHaltung(s.ToList());
|
|
|
|
MessageBox.Show("Fertig");
|
|
}
|
|
|
|
private void selectEinzelfall()
|
|
{
|
|
if (Einzelfallbetrachtung.Count < 1) return;
|
|
Haltung? einzelfall = Einzelfallbetrachtung.Dequeue();
|
|
if (einzelfall == null) return;
|
|
W_ObjektView w_ObjektView = new W_ObjektView();
|
|
w_ObjektView.DataContext = new HaltungObjektViewModel(einzelfall);
|
|
w_ObjektView.Show();
|
|
OnPropertyChanged("ZahlEinzelfall");
|
|
|
|
}
|
|
|
|
private async void dooKlassifiziereAsync()
|
|
{
|
|
DAL.Services.PostgresqlData.HaltungDataService haltungDataService = new DAL.Services.PostgresqlData.HaltungDataService("Host = 10.1.0.2; Database = sanplaner; Username = sanplaner; Password = sanplaner");
|
|
var s = await haltungDataService.GetAllByProjekt(0);
|
|
// Alle Haltungen laden
|
|
SchadenDataService schadenDataService = new SchadenDataService("Host = 10.1.0.2; Database = sanplaner; Username = sanplaner; Password = sanplaner");
|
|
foreach (var item in s)
|
|
{
|
|
|
|
IEnumerable<Schaden> src_kodierung = await schadenDataService.GetAllByHaltung(item);
|
|
item.Kodierungen = src_kodierung.ToList();
|
|
}
|
|
|
|
// Alle Schäden Klassifizieren
|
|
foreach(var haltung in s)
|
|
{
|
|
bool einzelfall = false;
|
|
foreach(var schaden in haltung.Kodierungen)
|
|
{
|
|
var k = bewertung.BewM149.Klassifiziere(schaden.Hauptcode, schaden.CH1, schaden.CH2, schaden.Q1, schaden.Q2, (int)haltung.DN);
|
|
//SchadenDataService schadenDataService = new SchadenDataService("Host = localhost; Database = sanplaner; Username = dcnsanplaner; Password = sanplaner");
|
|
schaden.KB = k["B"];
|
|
schaden.KD = k["D"];
|
|
schaden.KS = k["S"];
|
|
|
|
// HACK für keine Einzelfallbetrachtung zu generieren.
|
|
if (schaden.KB == 7) schaden.KB = 2;
|
|
if (schaden.KD == 7) schaden.KD = 2;
|
|
if (schaden.KS == 7) schaden.KS = 2;
|
|
|
|
|
|
/*
|
|
if(schaden.KB == 7 || schaden.KD == 7 || schaden.KS == 7)
|
|
{
|
|
einzelfall = true;
|
|
}
|
|
*/
|
|
await schadenDataService.Update(schaden);
|
|
}
|
|
if(einzelfall)
|
|
{
|
|
Einzelfallbetrachtung.Enqueue(haltung);
|
|
OnPropertyChanged("ZahlEinzelfall");
|
|
}
|
|
}
|
|
MessageBox.Show("Fertig");
|
|
}
|
|
|
|
async Task dooAsync()
|
|
{
|
|
DAL.Helper.WriteToDatabase writer = new DAL.Helper.WriteToDatabase(@"C:\Users\damia\Desktop\dev\dcnsanplanung\OOWV.xml");
|
|
await writer.WriteInHaltung();
|
|
LoadHaltungen();
|
|
|
|
MessageBox.Show("Fertig mit Importieren");
|
|
//await writer.WriteInLV();
|
|
}
|
|
|
|
private async void LoadHaltungen()
|
|
{
|
|
DAL.Services.PostgresqlData.HaltungDataService haltungDataService = new DAL.Services.PostgresqlData.HaltungDataService("Host = 10.1.0.2; Database = sanplaner; Username = sanplaner; Password = sanplaner");
|
|
var s = await haltungDataService.GetAllByProjekt(0);
|
|
foreach(var item in s)
|
|
{
|
|
VerfügbareHaltungen.Add(item);
|
|
}
|
|
OnPropertyChanged(nameof(VerfügbareHaltungen));
|
|
|
|
}
|
|
}
|
|
}
|