diff --git a/KanSan.Base/Interfaces/UI/ITätigkeitNewViewModel.cs b/KanSan.Base/Interfaces/UI/ITätigkeitNewViewModel.cs
new file mode 100644
index 0000000..011fc46
--- /dev/null
+++ b/KanSan.Base/Interfaces/UI/ITätigkeitNewViewModel.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace KanSan.Base.Interfaces.UI
+{
+ public interface ITätigkeitNewViewModel
+ {
+ }
+}
diff --git a/KanSan.ViewModel/KanSan.ViewModel.csproj b/KanSan.ViewModel/KanSan.ViewModel.csproj
index c015015..cf78868 100644
--- a/KanSan.ViewModel/KanSan.ViewModel.csproj
+++ b/KanSan.ViewModel/KanSan.ViewModel.csproj
@@ -16,6 +16,7 @@
+
diff --git a/KanSan.ViewModel/MainWindowViewModel.cs b/KanSan.ViewModel/MainWindowViewModel.cs
index 5ab62b6..e155da1 100644
--- a/KanSan.ViewModel/MainWindowViewModel.cs
+++ b/KanSan.ViewModel/MainWindowViewModel.cs
@@ -2,6 +2,7 @@
using KanSan.Base.Interfaces;
using KanSan.Base.Models;
using Microsoft.Win32;
+using Syncfusion.XlsIO;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -25,6 +26,7 @@ namespace KanSan.ViewModel
private Sewer _selectedObjekt;
public static Baustelle Baustelle;
+ public static List LVPositionen = null;
public string ApplicationTitle
@@ -43,6 +45,19 @@ namespace KanSan.ViewModel
}
}
+ void LoadBaustellenLeistungsverzeichnis()
+ {
+ if (LVPositionen == null)
+ LVPositionen = new List();
+ if (LVPositionen.Count > 0)
+ LVPositionen.Clear();
+ IEnumerable baustelleLeistungsverzeichnis = unitOfWork.LeistungsverzeichnisReferenz.Get(x => x.Baustelle.Equals(Baustelle), includeProperties: "LVPosition");
+ foreach(BaustelleLeistungsverzeichnisReferenz referenz in baustelleLeistungsverzeichnis)
+ {
+ LVPositionen.Add(referenz.LVPosition);
+ }
+ }
+
public Kunde SelectedKunde
{
get
@@ -172,6 +187,12 @@ namespace KanSan.ViewModel
public MainWindowViewModel()
{
LadeRegistry();
+ LoadBaustellenLeistungsverzeichnis();
+ }
+
+ public void GenerateExcelFile()
+ {
+
}
}
}
diff --git a/KanSan.ViewModel/Schaeden/SchaedenListViewModel.cs b/KanSan.ViewModel/Schaeden/SchaedenListViewModel.cs
index f497470..922cff9 100644
--- a/KanSan.ViewModel/Schaeden/SchaedenListViewModel.cs
+++ b/KanSan.ViewModel/Schaeden/SchaedenListViewModel.cs
@@ -2,8 +2,11 @@
using KanSan.Base.Interfaces;
using KanSan.Base.Interfaces.UI;
using KanSan.Base.Models;
+using Syncfusion.XlsIO;
+using Syncfusion.XlsIO.FormatParser.FormatTokens;
using System;
using System.Collections.Generic;
+using System.Diagnostics;
using System.Linq;
using System.Text;
@@ -22,7 +25,7 @@ namespace KanSan.ViewModel
public SchaedenListViewModel(Sewer actualSelectedSewer)
{
this.actualSelectedSewer = actualSelectedSewer;
- schaeden = unitOfWork.SchaedenRepository.Get(x => x.Sewer.Equals(actualSelectedSewer)).ToList();
+ schaeden = unitOfWork.SchaedenRepository.Get(x => x.Sewer.Equals(actualSelectedSewer),includeProperties: "Sanierungskonzept,Sanierungskonzept.Taetigkeiten,Sanierungskonzept.Taetigkeiten.LeistungsverzeichnisPosition").ToList();
}
public Schaeden NeueSchaden()
@@ -40,5 +43,81 @@ namespace KanSan.ViewModel
if (res.Count < 1) throw new Exception("Der zuvor eingefügte Schäden konnte nicht gefunden werden");
return res.First();
}
+
+ public void GenerateExcelFile()
+ {
+ // Dictionary um rauszufinden welche Leistungsverzeichnis Positionen in welche Spalte sind
+ Dictionary LVPosSpalte = new Dictionary();
+ ExcelEngine excelEngine = new ExcelEngine();
+ IWorkbook workbook = excelEngine.Excel.Workbooks.Open("aufmass.xls");
+ IWorksheet sheet = workbook.Worksheets[0];
+
+ // Generate LeistungsverzeichnisPositionen
+ //Spalte G => O => 7 / 15
+ //Zeile = 8
+
+ sheet.Range["B9"].Text = MainWindowViewModel.Baustelle.Projekt.Kunde.Vorname;
+ sheet.Range["B10"].Text = MainWindowViewModel.Baustelle.BaustelleNummer;
+ sheet.Range["D10"].Text = MainWindowViewModel.Baustelle.OrtTeil;
+ sheet.Range["D11"].Text = actualSelectedSewer.Material.ToString();
+
+ sheet.Range["A15"].Text = actualSelectedSewer.StrasseName;
+ sheet.Range["B15"].Text = actualSelectedSewer.DN.ToString();
+ sheet.Range["C15"].Text = actualSelectedSewer.PunktOben.Objektnummer;
+ sheet.Range["D15"].Text = actualSelectedSewer.PunktUnten.Objektnummer;
+ sheet.Range["F15"].Number = Convert.ToDouble(actualSelectedSewer.Haltungslaenge);
+
+ #region LeistungsverzeichnisGenerierung
+ for (int spalte = 7; spalte <= 15; spalte++)
+ {
+ int i = spalte - 7;
+ if (i >= MainWindowViewModel.LVPositionen.Count) break;
+ sheet.Range[8, spalte].Text = MainWindowViewModel.LVPositionen[i].Beschreibung;
+ LVPosSpalte.Add(MainWindowViewModel.LVPositionen[i].GuidNr, spalte);
+ }
+ #endregion
+
+ /* E16 für Station
+ * G - O8 für LV
+ * P15 für Datum
+ * Q15 für Bemerkung
+ * R15 für v.TV
+ * S15 für n.TV
+ */
+ // Zeile 15 => 40
+
+ int counter = 15;
+ foreach(Schaeden schaden in Schaeden)
+ {
+ sheet.Range[counter, 5].Number = Convert.ToDouble(schaden.Entfernung);
+ List taetigkeiten = schaden.Sanierungskonzept.Taetigkeiten;
+
+ IEnumerable datums = taetigkeiten.Select(x => x.ZeitStempel.Date).Distinct();
+ foreach (DateTime datum in datums)
+ {
+ List tätigkeit = taetigkeiten.FindAll(x => x.ZeitStempel.Date.Equals(datum));
+ foreach (Taetigkeiten tätig in tätigkeit)
+ {
+ int column = LVPosSpalte[tätig.LeistungsverzeichnisPosition.GuidNr];
+ if (tätig.ZeitStempel != DateTime.MinValue)
+ {
+ sheet.Range[counter, column].Number = Convert.ToDouble(tätig.Anzahl);
+
+ sheet.Range[counter, 16].DateTime = tätig.ZeitStempel;
+ }
+ else
+ {
+ sheet.Range[counter, column].Text = "x";
+ }
+ }
+ counter++;
+ }
+
+
+
+ }
+
+ workbook.SaveAs("test.xls");
+ }
}
}
diff --git a/KanSan.ViewModel/TaetigkeitEditViewModel.cs b/KanSan.ViewModel/Tätigkeiten/TaetigkeitEditViewModel.cs
similarity index 98%
rename from KanSan.ViewModel/TaetigkeitEditViewModel.cs
rename to KanSan.ViewModel/Tätigkeiten/TaetigkeitEditViewModel.cs
index f42765b..4fce47e 100644
--- a/KanSan.ViewModel/TaetigkeitEditViewModel.cs
+++ b/KanSan.ViewModel/Tätigkeiten/TaetigkeitEditViewModel.cs
@@ -107,6 +107,7 @@ namespace KanSan.ViewModel
IEnumerable baustelleLeistungsverzeichnis = unitOfWork.LeistungsverzeichnisReferenz.Get(x => x.Baustelle.Equals(MainWindowViewModel.Baustelle),includeProperties:"LVPosition");
lvPositionen = new List();
+ // TODO auslagern
foreach(BaustelleLeistungsverzeichnisReferenz referenz in baustelleLeistungsverzeichnis)
{
if((model.LeistungsverzeichnisPosition != null) && (model.LeistungsverzeichnisPosition.GuidNr.Equals(referenz.LVPosition.GuidNr)))
@@ -115,6 +116,7 @@ namespace KanSan.ViewModel
}
lvPositionen.Add(referenz.LVPosition);
}
+ //MainWindowViewModel.LVPositionen = lvPositionen;
var x = LVPositionen.Equals(leistungsverzeichnis);
}
diff --git a/KanSan/KanSan.csproj b/KanSan/KanSan.csproj
index 30ef310..4676b73 100644
--- a/KanSan/KanSan.csproj
+++ b/KanSan/KanSan.csproj
@@ -15,11 +15,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -27,4 +27,10 @@
+
+
+ PreserveNewest
+
+
+
\ No newline at end of file
diff --git a/KanSan/KanSan.csproj.user b/KanSan/KanSan.csproj.user
index c5da6b8..d553e6f 100644
--- a/KanSan/KanSan.csproj.user
+++ b/KanSan/KanSan.csproj.user
@@ -67,6 +67,9 @@
Code
+
+ Code
+
@@ -138,5 +141,8 @@
Designer
+
+ Designer
+
\ No newline at end of file
diff --git a/KanSan/MainWindow.xaml.cs b/KanSan/MainWindow.xaml.cs
index 8380c37..97885a6 100644
--- a/KanSan/MainWindow.xaml.cs
+++ b/KanSan/MainWindow.xaml.cs
@@ -18,6 +18,7 @@ using KanSan.Base.Models;
using KanSan.ViewModel;
using Microsoft.EntityFrameworkCore;
using Syncfusion.Windows.Shared;
+using Syncfusion.XlsIO;
namespace KanSan
{
@@ -38,7 +39,10 @@ namespace KanSan
public MainWindow()
{
InitializeComponent();
+
+
this.DataContext = new MainWindowViewModel();
+ (this.DataContext as MainWindowViewModel).GenerateExcelFile();
#if DEBUG
System.Diagnostics.PresentationTraceSources.DataBindingSource.Switch.Level = SourceLevels.Critical;
#endif
diff --git a/KanSan/SampleData/TätigkeitNewViewModelSampleData.cs b/KanSan/SampleData/TätigkeitNewViewModelSampleData.cs
new file mode 100644
index 0000000..02e7304
--- /dev/null
+++ b/KanSan/SampleData/TätigkeitNewViewModelSampleData.cs
@@ -0,0 +1,28 @@
+using KanSan.Base.Interfaces.UI;
+using KanSan.Base.Models;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+
+namespace KanSan.SampleData
+{
+ class TätigkeitNewViewModelSampleData : ITätigkeitNewViewModel
+ {
+ List lvPositionen = new List();
+ public List LVPositionen => lvPositionen;
+
+ public TätigkeitNewViewModelSampleData()
+ {
+
+ for (int i = 1; i <= 10; i++)
+ {
+ lvPositionen.Add(new Base.Models.LeistungsverzeichnisPosition()
+ {
+ Beschreibung = "TV Inspektion DN " + i + "00"
+ });
+ }
+
+ }
+ }
+}
diff --git a/KanSan/UI/Schäden/UCSchaedenList.xaml b/KanSan/UI/Schäden/UCSchaedenList.xaml
index 313944f..3a090e1 100644
--- a/KanSan/UI/Schäden/UCSchaedenList.xaml
+++ b/KanSan/UI/Schäden/UCSchaedenList.xaml
@@ -21,6 +21,7 @@
+
@@ -52,5 +53,6 @@
+
diff --git a/KanSan/UI/Schäden/UCSchaedenList.xaml.cs b/KanSan/UI/Schäden/UCSchaedenList.xaml.cs
index 835d12f..ece49f6 100644
--- a/KanSan/UI/Schäden/UCSchaedenList.xaml.cs
+++ b/KanSan/UI/Schäden/UCSchaedenList.xaml.cs
@@ -70,6 +70,11 @@ namespace KanSan.UI
schaeden = schaeden
});
}
+
+ private void GenerateExcel_Click(object sender, RoutedEventArgs e)
+ {
+ (DataContext as SchaedenListViewModel).GenerateExcelFile();
+ }
}
public class SelectSchaedenEventArgs : EventArgs
{
diff --git a/KanSan/UI/Tätigkeiten/UCTätigkeitenNew.xaml b/KanSan/UI/Tätigkeiten/UCTätigkeitenNew.xaml
new file mode 100644
index 0000000..c7f6df4
--- /dev/null
+++ b/KanSan/UI/Tätigkeiten/UCTätigkeitenNew.xaml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/KanSan/UI/Tätigkeiten/UCTätigkeitenNew.xaml.cs b/KanSan/UI/Tätigkeiten/UCTätigkeitenNew.xaml.cs
new file mode 100644
index 0000000..91b19e8
--- /dev/null
+++ b/KanSan/UI/Tätigkeiten/UCTätigkeitenNew.xaml.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace KanSan.UI
+{
+ ///
+ /// Interaktionslogik für UCTätigkeitenNew.xaml
+ ///
+ public partial class UCTätigkeitenNew : UserControl
+ {
+ public UCTätigkeitenNew()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/KanSan/aufmass.xls b/KanSan/aufmass.xls
new file mode 100644
index 0000000..327eac6
Binary files /dev/null and b/KanSan/aufmass.xls differ
diff --git a/KanSan/my_controls.xaml b/KanSan/my_controls.xaml
index a70c4f2..696950e 100644
--- a/KanSan/my_controls.xaml
+++ b/KanSan/my_controls.xaml
@@ -5,6 +5,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+