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 VerfügbareHaltungen { get; set; } = new List(); Queue Einzelfallbetrachtung = new Queue(); 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 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 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)); } } }