using Database; using KlassenBIB; using System; 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; 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 (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(); 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.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); 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["Sanierung"].Visible = false; } private void dGObjekte_CellEndEdit(object sender, DataGridViewCellEventArgs e) { CheckEntries(); } } }