124 lines
4.9 KiB
C#
124 lines
4.9 KiB
C#
using KanSan.Base;
|
|
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;
|
|
|
|
namespace KanSan.ViewModel
|
|
{
|
|
public class SchaedenListViewModel : ISchaedenListViewModel
|
|
{
|
|
private Sewer actualSelectedSewer;
|
|
IUnitOfWork unitOfWork = new UnitOfWork(new KanSanContext());
|
|
|
|
private List<Schaeden> schaeden;
|
|
|
|
|
|
public List<Schaeden> Schaeden { get => schaeden; }
|
|
|
|
public SchaedenListViewModel(Sewer actualSelectedSewer)
|
|
{
|
|
this.actualSelectedSewer = actualSelectedSewer;
|
|
schaeden = unitOfWork.SchaedenRepository.Get(x => x.Sewer.Equals(actualSelectedSewer),includeProperties: "Sanierungskonzept,Sanierungskonzept.Taetigkeiten,Sanierungskonzept.Taetigkeiten.LeistungsverzeichnisPosition").ToList();
|
|
}
|
|
|
|
public Schaeden NeueSchaden()
|
|
{
|
|
Guid guid = Guid.NewGuid();
|
|
Schaeden neueSchaden = new Schaeden()
|
|
{
|
|
GuidNr = guid,
|
|
Sewer = actualSelectedSewer
|
|
};
|
|
unitOfWork.SchaedenRepository.Update(neueSchaden,false);
|
|
unitOfWork.Commit();
|
|
|
|
List<Schaeden> res = unitOfWork.SchaedenRepository.Get(x => x.GuidNr.Equals(guid)).ToList();
|
|
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<Guid, int> LVPosSpalte = new Dictionary<Guid, int>();
|
|
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> taetigkeiten = schaden.Sanierungskonzept.Taetigkeiten;
|
|
|
|
IEnumerable<DateTime> datums = taetigkeiten.Select(x => x.ZeitStempel.Date).Distinct();
|
|
foreach (DateTime datum in datums)
|
|
{
|
|
List<Taetigkeiten> 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");
|
|
}
|
|
}
|
|
}
|