Files
dcnsanplanung/dcnsanplanung.wpf/ViewModel/MainWindowViewModel.cs

120 lines
4.5 KiB
C#

using CommunityToolkit.Mvvm.Input;
using dcnsanplanung.DAL.Services.PostgresqlData;
using dcnsanplanung.shared.Model;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 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());
SelectEinzelfall = new RelayCommand(() => selectEinzelfall());
}
private void selectEinzelfall()
{
Haltung? einzelfall = Einzelfallbetrachtung.Dequeue();
if (einzelfall == null) return;
W_ObjektView w_ObjektView = new W_ObjektView();
w_ObjektView.DataContext = new HaltungObjektViewModel(einzelfall);
w_ObjektView.Show();
}
private async void dooKlassifiziereAsync()
{
DAL.Services.PostgresqlData.HaltungDataService haltungDataService = new DAL.Services.PostgresqlData.HaltungDataService("Host = localhost; Database = sanplaner; Username = dcnsanplaner; Password = sanplaner");
var s = await haltungDataService.GetAllByProjekt(0);
// Alle Haltungen laden
SchadenDataService schadenDataService = new SchadenDataService("Host = localhost; Database = sanplaner; Username = dcnsanplaner; 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");
if (k.Count == 0) continue;
schaden.KB = k["B"];
schaden.KD = k["D"];
schaden.KS = k["S"];
if(schaden.KB == 7 || schaden.KD == 7 || schaden.KS == 7)
{
einzelfall = true;
}
await schadenDataService.Update(schaden);
}
if(einzelfall)
{
Einzelfallbetrachtung.Enqueue(haltung);
OnPropertyChanged("ZahlEinzelfall");
}
}
}
async Task dooAsync()
{
DAL.Helper.WriteToDatabase writer = new DAL.Helper.WriteToDatabase(@"D:\Airbus\Airbus Nordenham RW Viewer für Sanierungskonzept\Airbus Nordenham RW.xml");
await writer.WriteInHaltung();
//Debugger.Break();
await writer.WriteInLV();
}
private async void LoadHaltungen()
{
DAL.Services.PostgresqlData.HaltungDataService haltungDataService = new DAL.Services.PostgresqlData.HaltungDataService("Host = localhost; Database = sanplaner; Username = dcnsanplaner; Password = sanplaner");
var s = await haltungDataService.GetAllByProjekt(0);
foreach(var item in s)
{
VerfügbareHaltungen.Add(item);
}
OnPropertyChanged(nameof(VerfügbareHaltungen));
}
}
}