using Database;
using KlassenBIB;
using SanSystem.Einstellungen;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SanSystem
{
///
///
///
public partial class frmObjekteList : Form
{
private List inspektionsobjekte;
ObjecteListSetting objecteListSetting = new ObjecteListSetting();
///
///
///
///
private void loadObjekte(string streetname)
{
dGObjekte.DataSource = null;
inspektionsobjekte = Datenbank.Instance.loadedProjekt.Objekte.FindAll(x => x.StrasseName.Equals(streetname));
dGObjekte.DataSource = inspektionsobjekte;
}
private bool CheckEntries()
{
for(int i = 0; i < dGObjekte.Rows.Count; i++)
{
DataGridViewRow dgvw = dGObjekte.Rows[i];
Inspektionsobjekt tmp = (Inspektionsobjekt)dgvw.DataBoundItem;
if (tmp == null) continue;
dgvw.DefaultCellStyle.BackColor = Color.White;
int anzahlSan = tmp.Sanierung.Count;
int anzahlfertig = 0;
int counter = 0;
foreach(Sanierung san in tmp.Sanierung)
{
Sanieren _san = (san as Sanieren);
if (_san.Fertig) anzahlfertig++;
counter++;
}
if (!tmp.Haltungslaenge.Equals(0))
dgvw.DefaultCellStyle.BackColor = Color.Aquamarine;
if (counter != 0 && (anzahlfertig == anzahlSan))
dgvw.DefaultCellStyle.BackColor = Color.Green;
if (
(tmp.BisPunkt== null || tmp.BisPunkt.Equals(""))
|| (tmp.VonPunkt == null || tmp.VonPunkt.Equals(""))
|| (tmp.Objektbezeichnung == null || tmp.Objektbezeichnung.Equals(""))
|| tmp.Kanalrohrweite.Equals(0)
) dgvw.DefaultCellStyle.BackColor = Color.Olive;
if(tmp.Projektnummer == null || tmp.Projektnummer.Equals("")) dgvw.DefaultCellStyle.BackColor = Color.Red;
}
return true;
}
///
///
///
///
public frmObjekteList(string streetname)
{
InitializeComponent();
DataGridViewCheckBoxColumn checkBoxColumn = new DataGridViewCheckBoxColumn();
checkBoxColumn.Name = "Auswahl";
checkBoxColumn.HeaderText = "Auswahl";
//checkBoxColumn.Width = objecteListSetting.configuration["Auswahl"];
dGObjekte.Columns.Add(checkBoxColumn);
lbl_ort.Text = Global.Instance.language.Labels["ort"];
lbl_projekt.Text = Global.Instance.language.Labels["projekt"];
lbl_street.Text = Global.Instance.language.Labels["street"];
btn_add.Text = Global.Instance.language.Labels["add_objekt"];
gb_error_messages.Text = Global.Instance.language.Labels["error_messages"];
lbl_grounddata.Text = Global.Instance.language.Labels["error_groundData"];
lbl_projwrong.Text = Global.Instance.language.Labels["error_projwrong"];
label1.BackColor = Color.Red;
label5.BackColor = Color.Olive;
loadObjekte(streetname);
txt_strasse.Text = streetname;
string fehlermeldung = string.Empty;
// Prüfen nach Projektnummern
List projektnummern = inspektionsobjekte.Select(x => x.Projektnummer).Distinct().ToList();
if(projektnummern.Count > 1) fehlermeldung = string.Format("{0}", Global.Instance.language.Fehlermeldungen["duplicate_projektnumber_in_street"]);
// Prüfen nach Ortnamen
List ortnamen = inspektionsobjekte.Select(x => x.OrtName).Distinct().ToList();
if (ortnamen.Count > 1) fehlermeldung = string.Format("{0}\n\n{1}",fehlermeldung,Global.Instance.language.Fehlermeldungen["difference_ortnames_in_street"]);
if (!fehlermeldung.Equals(string.Empty)) MessageBox.Show(fehlermeldung, "Inhalt Fehler", MessageBoxButtons.OK, MessageBoxIcon.Warning);
if (projektnummern.Count > 1)
{
Dictionary mayProNr = new Dictionary();
List anzahle = new List();
foreach (string _prnr in projektnummern)
{
int anzahl = inspektionsobjekte.Where(x => x.Projektnummer.Equals(_prnr)).Count();
mayProNr.Add(_prnr, anzahl);
anzahle.Add(anzahl);
}
int max = anzahle.Max();
List empProjNummer = new List();
foreach (KeyValuePair kvp in mayProNr)
{
if (kvp.Value.Equals(max)) empProjNummer.Add(kvp.Key);
else
continue;
}
if (empProjNummer.Count > 1) MessageBox.Show(Global.Instance.language.Fehlermeldungen["suggest_proj_nr_not_found"]);
else
MessageBox.Show(string.Format("{0}\n{1}", Global.Instance.language.Fehlermeldungen["suggest_proj_nr"], empProjNummer.Last()));
}
txt_ort.Text = ortnamen.First();
if (projektnummern.First() == null)
{
MessageBox.Show(Global.Instance.language.Fehlermeldungen["wrong_project_number"], "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
string[] vs = projektnummern.First().Split('-');
if (vs.Length > 0)
txt_pro_nr_1.Text = vs[0];
if (vs.Length > 1)
txt_pro_nr_2.Text = vs[1];
if (vs.Length > 2)
txt_pro_nr_3.Text = vs[2];
}
private void frmObjekteList_Load(object sender, EventArgs e)
{
}
private void dGObjekte_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridView dataGridView = (DataGridView)sender;
if (dataGridView == null) return;
DataGridViewSelectedRowCollection dataGridViewRowsSelect = dataGridView.SelectedRows;
if (dataGridViewRowsSelect.Count > 1) return;
DataGridViewRow dgvr = dataGridViewRowsSelect[0];
Inspektionsobjekt inspektionsobjekt = (Inspektionsobjekt)dgvr.DataBoundItem;
if (inspektionsobjekt == null) return;
frmObjektEdit frmObjektEdit = new frmObjektEdit(inspektionsobjekt);
frmObjektEdit.MdiParent = this.MdiParent;
frmObjektEdit.Show();
}
private void btn_add_Click(object sender, EventArgs e)
{
Inspektionsobjekt inspektionsobjekt = new Inspektionsobjekt();
inspektionsobjekt.Guid = Guid.NewGuid();
inspektionsobjekt.Projektnummer = inspektionsobjekte.First().Projektnummer;
inspektionsobjekt.OrtName = inspektionsobjekte.First().OrtName;
inspektionsobjekt.StrasseName = inspektionsobjekte.First().StrasseName;
Datenbank.Instance.loadedProjekt.Objekte.Add(inspektionsobjekt);
frmObjektEdit frmObjektEdit = new frmObjektEdit(inspektionsobjekt,true);
frmObjektEdit.FormClosed += FrmObjektEdit_FormClosed;
frmObjektEdit.ShowDialog();
}
private void FrmObjektEdit_FormClosed(object sender, FormClosedEventArgs e)
{
loadObjekte(txt_strasse.Text);
CheckEntries();
}
private void dGObjekte_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
CheckEntries();
dGObjekte.Columns["StrasseName"].Visible = false;
dGObjekte.Columns["OrtName"].Visible = false;
dGObjekte.Columns["Projektnummer"].Visible = false;
dGObjekte.Columns["Rohrmaterial"].Visible = false;
dGObjekte.Columns["Kanalrohrweite"].Visible = false;
dGObjekte.Columns["Schachtlaenge"].Visible = false;
dGObjekte.Columns["Objektbezeichnung"].Visible = false;
dGObjekte.Columns["Haltunggemessen"].Visible = false;
dGObjekte.Columns["Bemerkung"].Visible = false;
dGObjekte.Columns["Auswahl"].Width = objecteListSetting.GetWidth(dGObjekte.Columns["Auswahl"]); // objecteListSetting.configuration["Auswahl"];
dGObjekte.Columns["Hausnummer"].Width = objecteListSetting.GetWidth(dGObjekte.Columns["Hausnummer"]);//objecteListSetting.configuration["Hausnummer"];
dGObjekte.Columns["VonPunkt"].Width = objecteListSetting.GetWidth(dGObjekte.Columns["VonPunkt"]);//objecteListSetting.configuration["VonPunkt"];
dGObjekte.Columns["BisPunkt"].Width = objecteListSetting.GetWidth(dGObjekte.Columns["BisPunkt"]);// objecteListSetting.configuration["BisPunkt"];
dGObjekte.Columns["Haltungslaenge"].Width = objecteListSetting.GetWidth(dGObjekte.Columns["Haltungslaenge"]); //objecteListSetting.configuration["Haltungslaenge"];
//dGObjekte.Columns["Sanierung"].Visible = false;
}
private void dGObjekte_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
CheckEntries();
}
private void frmObjekteList_FormClosing(object sender, FormClosingEventArgs e)
{
objecteListSetting.SetWidth(dGObjekte.Columns["Hausnummer"]);
objecteListSetting.SetWidth(dGObjekte.Columns["VonPunkt"]);
objecteListSetting.SetWidth(dGObjekte.Columns["BisPunkt"]);
objecteListSetting.SetWidth(dGObjekte.Columns["Haltungslaenge"]);
objecteListSetting.SetWidth(dGObjekte.Columns["Auswahl"]);
objecteListSetting.SaveSettings();
}
private void btn_make_ausdruck_Click(object sender, EventArgs e)
{
List ausdruck = new List();
DataGridViewCheckBoxCell checkBoxCell = null;
foreach(DataGridViewRow dr in dGObjekte.Rows)
{
checkBoxCell = (DataGridViewCheckBoxCell)dr.Cells["Auswahl"];
if (checkBoxCell == null) break;
if (checkBoxCell.Value == null) continue;
if ((bool)checkBoxCell.Value) ausdruck.Add((dr.DataBoundItem as Inspektionsobjekt));
}
if (ausdruck.Count <= 0) return;
Hashtable grundDaten = new Hashtable()
{
{"Ausdruck_datum","" },
{"Strasse","" },
{"Ort","" },
{"gesamt_liner","" },
{"harzmenge","" }
};
grundDaten["Ausdruck_datum"] = DateTime.Now.ToLongDateString();
grundDaten["Strasse"] = txt_strasse.Text;
grundDaten["Ort"] = txt_ort.Text;
DataTable linereintraege = getLinerTable();
double linerges = 0;
foreach(Inspektionsobjekt obj in ausdruck)
{
DataRow dr = linereintraege.NewRow();
double linergesamt = obj.Haltungslaenge + obj.Schachtlaenge;
dr["hausnummer"] = obj.Hausnummer;
dr["liner_laenge"] = obj.Haltungslaenge;
dr["schacht_laenge"] = obj.Schachtlaenge;
dr["liner_gesamt"] = linergesamt;
dr["bemerkung"] = obj.Bemerkung;
linerges += linergesamt;
linereintraege.Rows.Add(dr);
}
grundDaten["gesamt_liner"] = linerges;
grundDaten["harzmenge"] = linerges * 1.8;
BerichtGen.FrmOptions options = new BerichtGen.FrmOptions("JUME", "KalibrierungAuflistung.docx", "","", grundDaten, null, linereintraege);
options.ShowDialog();
}
private static DataTable getLinerTable()
{
DataTable dataTable = new DataTable("Liner");
DataColumn dataColumn = new DataColumn("hausnummer") { MaxLength = 80 };
dataTable.Columns.Add(dataColumn);
dataColumn = new DataColumn("liner_laenge") { MaxLength = 50 };
dataTable.Columns.Add(dataColumn);
dataColumn = new DataColumn("schacht_laenge") { MaxLength = 50 };
dataTable.Columns.Add(dataColumn);
dataColumn = new DataColumn("liner_gesamt") { MaxLength = 50 };
dataTable.Columns.Add(dataColumn);
dataColumn = new DataColumn("bemerkung") { MaxLength = 255 };
dataTable.Columns.Add(dataColumn);
return dataTable;
}
private void btn_set_kali_Click(object sender, EventArgs e)
{
List ausdruck = new List();
DataGridViewCheckBoxCell checkBoxCell = null;
foreach (DataGridViewRow dr in dGObjekte.Rows)
{
checkBoxCell = (DataGridViewCheckBoxCell)dr.Cells["Auswahl"];
if (checkBoxCell == null) break;
if (checkBoxCell.Value == null) continue;
if ((bool)checkBoxCell.Value)
{
Inspektionsobjekt objekt = (dr.DataBoundItem as Inspektionsobjekt);
bool bereitsVorhanden = false;
foreach(Sanierung san in objekt.Sanierung)
{
if(san is InlinerSanierung)
{
bereitsVorhanden = true;
break;
}
}
if(!bereitsVorhanden)
ausdruck.Add(objekt);
}
}
if (ausdruck.Count <= 0) return;
FrmKalibrierungFestlegung frmKalibrierungFestlegung = new FrmKalibrierungFestlegung(ausdruck);
frmKalibrierungFestlegung.ShowDialog();
}
private void btn_statistik_Click(object sender, EventArgs e)
{
FrmSelectMassenDate frmSelectMassenDate = new FrmSelectMassenDate(inspektionsobjekte);
frmSelectMassenDate.ShowDialog();
}
}
}