202 lines
6.8 KiB
C#
202 lines
6.8 KiB
C#
using Database;
|
|
using KlassenBIB;
|
|
using SanSystem.Einstellungen;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace SanSystem
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public partial class frmStrassenList : Form
|
|
{
|
|
StreetListSettings streetListSetting = new StreetListSettings();
|
|
string aktuallStreetName = string.Empty;
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public frmStrassenList()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
bool mehrereOrteAktiv()
|
|
{
|
|
return Datenbank.Instance.loadedProjekt.Objekte.Select(x => x.OrtName).Distinct().Count() > 1;
|
|
}
|
|
|
|
private void buildStreetList()
|
|
{
|
|
trv_street.Nodes.Clear();
|
|
if (Datenbank.Instance.loadedProjekt == null) return;
|
|
rdbtn_ort.Enabled = mehrereOrteAktiv();
|
|
if (!mehrereOrteAktiv()) rdbtn_street.Checked = true;
|
|
|
|
if (rdbtn_street.Checked) buildUnsortedStreetList();
|
|
if (rdbtn_ort.Checked) buildSortedSteetList();
|
|
}
|
|
|
|
private void buildSortedSteetList()
|
|
{
|
|
|
|
List<string> ortteile = Datenbank.Instance.loadedProjekt.Objekte.Select(x => x.OrtName).Distinct().ToList();
|
|
int aktuellOpened = -1;
|
|
bool aktuelleStrasse = false;
|
|
foreach (string ort in ortteile)
|
|
{
|
|
List<string> strassen = Datenbank.Instance.loadedProjekt.Objekte.Where(y => y.OrtName != null && y.OrtName.Equals(ort)).Select(x => x.StrasseName).Distinct().ToList();
|
|
TreeNode[] streetnodes = new TreeNode[strassen.Count];
|
|
|
|
for(int i = 0; i < strassen.Count; i++)
|
|
{
|
|
streetnodes[i] = new TreeNode();
|
|
Tuple<int, int> x = getStatikFromStreet(strassen[i]);
|
|
streetnodes[i].Text = string.Format("{0} ({1} / {2})", strassen[i], x.Item1, x.Item2);
|
|
if (strassen[i].Equals(aktuallStreetName))
|
|
aktuelleStrasse = true;
|
|
streetnodes[i].Tag = strassen[i];
|
|
}
|
|
|
|
TreeNode node = new TreeNode(ort, streetnodes);
|
|
int looper = trv_street.Nodes.Add(node);
|
|
if(aktuelleStrasse)
|
|
{
|
|
aktuelleStrasse = false;
|
|
aktuellOpened = looper;
|
|
}
|
|
}
|
|
if(aktuellOpened != -1)
|
|
{
|
|
trv_street.Nodes[aktuellOpened].ExpandAll();
|
|
}
|
|
|
|
}
|
|
|
|
private Tuple<int,int> getStatikFromStreet(string strassename)
|
|
{
|
|
IEnumerable<KlassenBIB.Inspektionsobjekt> objekte = Datenbank.Instance.loadedProjekt.Objekte.Where(x => x.StrasseName.Equals(strassename));
|
|
int counter = 0;
|
|
foreach (var objekt in objekte)
|
|
{
|
|
bool fertig = false;
|
|
foreach (var x in objekt.Sanierung)
|
|
{
|
|
AbstractSanieren abstractSanieren = (AbstractSanieren)x;
|
|
if (abstractSanieren.Fertig == true)
|
|
{
|
|
fertig = true;
|
|
}
|
|
else
|
|
{
|
|
fertig = false;
|
|
break;
|
|
}
|
|
}
|
|
if (fertig)
|
|
{
|
|
counter++;
|
|
}
|
|
}
|
|
return new Tuple<int, int>(counter,objekte.Count());
|
|
}
|
|
|
|
private void buildUnsortedStreetList()
|
|
{
|
|
|
|
List<string> strassen = Datenbank.Instance.loadedProjekt.Objekte.Select(x => x.StrasseName).Distinct().ToList();
|
|
List<string> streets = new List<string>();
|
|
|
|
foreach (string strassename in strassen)
|
|
{
|
|
string streetname = string.Empty;
|
|
Tuple<int, int> x = getStatikFromStreet(strassename);
|
|
|
|
trv_street.Nodes.Add(new TreeNode()
|
|
{
|
|
Text = string.Format("{0} ({1} / {2})", strassename, x.Item1, x.Item2),
|
|
Tag = strassename
|
|
});
|
|
|
|
}
|
|
}
|
|
|
|
private void frmStrassenList_Load(object sender, EventArgs e)
|
|
{
|
|
|
|
|
|
|
|
this.Height = this.MdiParent.Height - 120;
|
|
if(streetListSetting.SortedSelected())
|
|
{
|
|
rdbtn_street.Checked = false;
|
|
rdbtn_ort.Checked = true;
|
|
}
|
|
else
|
|
{
|
|
rdbtn_street.Checked = true;
|
|
rdbtn_ort.Checked = false;
|
|
}
|
|
buildStreetList();
|
|
|
|
}
|
|
|
|
|
|
private void btn_add_Click(object sender, EventArgs e)
|
|
{
|
|
KlassenBIB.Inspektionsobjekt inspektionsobjekt = new KlassenBIB.Inspektionsobjekt();
|
|
inspektionsobjekt.Projektnummer = Global.Instance.ProjektNummer;
|
|
Datenbank.Instance.loadedProjekt.Objekte.Add(inspektionsobjekt);
|
|
frmObjektEdit frmObjektEdit = new frmObjektEdit(inspektionsobjekt,true);
|
|
frmObjektEdit.MdiParent = this.MdiParent;
|
|
frmObjektEdit.FormClosed += FrmObjekt_FormClosed;
|
|
frmObjektEdit.Show();
|
|
}
|
|
|
|
|
|
private void FrmObjekt_FormClosed(object sender, FormClosedEventArgs e)
|
|
{
|
|
buildStreetList();
|
|
}
|
|
|
|
private void trv_street_DoubleClick(object sender, EventArgs e)
|
|
{
|
|
if ((sender as TreeView).SelectedNode == null) return;
|
|
string selectedStreetName = (string)(sender as TreeView).SelectedNode.Tag;
|
|
if (selectedStreetName == null || selectedStreetName.Equals("")) return;
|
|
aktuallStreetName = selectedStreetName;
|
|
frmObjekteList frmObjekteList = new frmObjekteList(selectedStreetName);
|
|
frmObjekteList.MdiParent = this.MdiParent;
|
|
frmObjekteList.FormClosed += FrmObjekt_FormClosed;
|
|
frmObjekteList.Show();
|
|
}
|
|
|
|
private void rdbtn_street_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (rdbtn_ort.Checked)
|
|
{
|
|
streetListSetting.SetRadioButton("Sorted");
|
|
}
|
|
else if (rdbtn_street.Checked)
|
|
{
|
|
streetListSetting.SetRadioButton("Unsorted");
|
|
}
|
|
buildStreetList();
|
|
}
|
|
|
|
private void frmStrassenList_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
streetListSetting.SaveSettings();
|
|
}
|
|
}
|
|
|
|
}
|