using DatenDB; using Deckungsbeitrag.AA_Klassen; using HarfBuzzSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Font = System.Drawing.Font; namespace Deckungsbeitrag.AA_Forms { public partial class FormWSVerfolgung : Form { private readonly SPSDaten _monitor; //Ziel der Eventanfragen für die SPS. private string Userid; private Maschine maschine; private Auftrag auftrag; private Fehlermeldungen meldung = new Fehlermeldungen(); private Aufgabe aufgabe; private WSFach fach; private Auftrag extraAuftrag; public bool ws1transport = false; public bool ws2transport = false; public FormWSVerfolgung() { InitializeComponent(); } public FormWSVerfolgung(string userid) : this() { this.Userid = userid; if (userid.Contains("01")) this.maschine = Maschine.GetMaschine(null, "Waschstrasse 1"); if (userid.Contains("02")) this.maschine = Maschine.GetMaschine(null, "Waschstrasse 2"); this._monitor = new SPSDaten(); //Je nach Maschine werden die richtigen Events erstellt. if (maschine.MaschineID == 1) { _monitor.WS1Transport += Transport_ValueChanged; //_monitor.Presse1Leer += WS1_Value_Changed; //_monitor.Trockner1Beladen += WS1_Value_Changed; //_monitor.Trockner1Entladen += WS1_Value_Changed; //_monitor.TischSummaryWS1_print += TischSummary_print; //_monitor.BegleitzettelWS1_print += Begleitzettel_print; } //Maschine 1 else { _monitor.WS2Transport += Transport_ValueChanged; //_monitor.Presse2Leer += WS2_Value_Changed; //_monitor.Trockner2Beladen += WS2_Value_Changed; //_monitor.Trockner2Entladen += WS2_Value_Changed; //_monitor.TischSummaryWS2_print += TischSummary_print; //_monitor.BegleitzettelWS2_print += Begleitzettel_print; } //Maschine 2 } private void WSVerfolgung_Load(object sender, EventArgs e) { // WaitCursor und Controls ausblenden. this.Cursor = Cursors.WaitCursor; //Funktionen.HideControls(this.Controls); // StatusStrip DropDown this.toolStripDropDownButtonInfo.DropDownItems.Clear(); List aufgabenliste = Aufgabe.GetList((int)Kategorie.Waschstrasse); foreach(Aufgabe auf in aufgabenliste) { ToolStripMenuItem item = new ToolStripMenuItem(auf.Bezeichnung); item.Tag = auf; item.Click += AufgabeAuswaehlen_Click; toolStripDropDownButtonInfo.DropDownItems.Add(item); } this.BackColor = Color.Black; this.WindowState = FormWindowState.Maximized; this.FormBorderStyle = FormBorderStyle.None; this.tableLayoutPanelWSVerfolgung.Height = this.statusStripWSVerfolgung.Top; if (maschine.TrocknerKaputt) this.tableLayoutPanelWSVerfolgung.RowCount = maschine.Faecher - 1; else this.tableLayoutPanelWSVerfolgung.RowCount = maschine.Faecher; this.tableLayoutPanelWSVerfolgung.RowStyles.Clear(); for (int i = 0; i < tableLayoutPanelWSVerfolgung.RowCount; i++) { tableLayoutPanelWSVerfolgung.RowStyles.Add(new RowStyle(SizeType.Percent, 100f / tableLayoutPanelWSVerfolgung.RowCount)); } Panel_Laden(1); //DefaultCursor und Controls einblenden. //Funktionen.ShowControls(this.Controls); this.Cursor = Cursors.Default; } private void AufgabeAuswaehlen_Click(object sender, EventArgs e) { ToolStripMenuItem item = (ToolStripMenuItem)sender; if (((Aufgabe)item.Tag).Bezeichnung == "Extra Kunde") { FormNeuerAuftrag neuerAuftrag = new FormNeuerAuftrag(this.Userid); if (neuerAuftrag.ShowDialog() == DialogResult.OK) { this.extraAuftrag = neuerAuftrag.Auftrag; } } this.aufgabe = (Aufgabe)item.Tag; Fach_speichern(); } private void Panel_Laden(int start) { List fachliste = WSFach.GetFachliste(maschine); // Wenn erster Start dann Auftrag aus letztem Fach holen? if (start == 1) { if (meldung.MaschinenStart() == DialogResult.Yes) { this.auftrag = Auftrag.GetAuftrag(fachliste[0].AuftragID); this.aufgabe = Aufgabe.GetAufgabe(null, fachliste[0].AufgabeID); } else { this.auftrag = null; this.aufgabe = null; } } // Alle Controls aus dem Panel entfernen. this.tableLayoutPanelWSVerfolgung.Controls.Clear(); // UserControls mit Daten aus Fachliste in Panel laden. if (fachliste.Count > 0) { for (int row = 0; row < fachliste.Count; row++) { Auftrag auftrag = Auftrag.GetAuftrag(fachliste[row].AuftragID); Aufgabe aufgabe = Aufgabe.GetAufgabe(null, fachliste[row].AufgabeID); UCFach ucfach = new UCFach(); ucfach.Dock = DockStyle.Fill; // Fach Name und Farbe if (this.maschine.Bezeichnung == "Waschstrasse 1") { switch (row + 1) { case int n when (n <= 4): ucfach.ForeColor = Config.FarbenConfig.Farben["Beladeband"]; ucfach.FachName = $"F"; break; case int n when (n >= 5 && n <= 13): ucfach.ForeColor = Config.FarbenConfig.Farben["Waschstrasse"]; ucfach.FachName = $"W"; break; case int n when (n == 14): ucfach.ForeColor = Config.FarbenConfig.Farben["Presse"]; ucfach.FachName = $"P"; break; case int n when (n == 15): ucfach.ForeColor = Config.FarbenConfig.Farben["Hubband"]; ucfach.FachName = $"H"; break; case int n when (n == 16): ucfach.ForeColor = Config.FarbenConfig.Farben["Trockner"]; ucfach.FachName = $"T"; break; case int n when (n == 17): if (maschine.TrocknerKaputt) { ucfach.ForeColor = Config.FarbenConfig.Farben["Entladeband"]; ucfach.FachName = $"E"; } else { ucfach.ForeColor = Config.FarbenConfig.Farben["Trockner"]; ucfach.FachName = $"T"; } break; case int n when (n == 18): ucfach.ForeColor = Config.FarbenConfig.Farben["Entladeband"]; ucfach.FachName = $"E"; break; default: break; } } ucfach.KundeName = Kunde.GetKunde(null, auftrag.KundeID, null).Suchtext; CultureInfo deCult = new CultureInfo("de-DE"); ucfach.LieferTag = ((Liefertag)auftrag.Liefertag.DayOfWeek).ToString(); // Wenn Fachliste Item hat Aufgabe. if (aufgabe != null) { // Wenn Aufgabe ist ein Extra Kunde. if (aufgabe.Bezeichnung == "Extra Kunde") ucfach.Aufgabe = "Extra Kunde " + Kunde.GetKunde(null, Auftrag.GetAuftrag(fachliste[row].ExtraAuftragID).KundeID, null).Suchtext; else ucfach.Aufgabe = aufgabe.Bezeichnung; // Hintergrund des Fachs in der Farbe der Aufgabe. ACHTUNG WEGEN KONTRAST ZU SCHRIFTFARBE. ucfach.BackColor = aufgabe.Farbe; } else ucfach.Aufgabe = null; this.tableLayoutPanelWSVerfolgung.Controls.Add(ucfach, 0, row); } } } private void Open_NeuerAuftrag() { FormNeuerAuftrag neuerAuftrag = new FormNeuerAuftrag(this.Userid); if (neuerAuftrag.ShowDialog() == DialogResult.OK) { this.auftrag = neuerAuftrag.Auftrag; Fach_speichern(); } } private void Fach_speichern() { this.fach = new WSFach(); this.fach.AuftragID = (int)this.auftrag.AuftragID; this.fach.MaschineID = (int)this.maschine.MaschineID; this.fach.Gewaschen = DateTime.Now; this.fach.Gewicht = 0; this.fach.WProgrammID = 1; if (this.aufgabe != null) this.fach.AufgabeID = this.aufgabe.AufgabeID; if (this.extraAuftrag != null) this.fach.ExtraAuftragID = this.extraAuftrag.AuftragID; if (this.fach.Save() == 1) Panel_Laden(2); } /// /// Value für Transport hat sich geändert und Fach wird gespeichert. /// /// /// private void Transport_ValueChanged(object sender, EventArgs e) { //this.SuspendLayout(); // Warten bis erster Transport durchgeführt wurde. while (_monitor.WS_1_Transport == true & _monitor.WS_2_Transport == true) { } if (_monitor.WS_1_Transport || _monitor.WS_2_Transport) { Maschine ms = (Maschine)this.maschine; if (this.auftrag != null) { Fach_speichern(); this.fach.FachID = null; this.aufgabe = null; this.extraAuftrag = null; } else { MessageBox.Show($"Kein Auftrag erstellt. LEERFACH wird eingegeben. Bitte in BB1 bearbeiten."); } //WENN kein Kunde gewählt dann Fach mit KundeID 0. _monitor.WS_2_Transport = _monitor.WS_1_Transport = false; } //this.ResumeLayout(false); } //Wenn sich SPSDaten Transport ändert wird Event ausgelöst. (Bis jetzt mit Button ausgelöst) /// /// KEIN VERWEIS NOTWENDIG /// Wenn ESC gedrückt wird schließt sich das Fenster. /// /// /// protected override bool ProcessDialogKey(Keys keyData) { //TODO: Umbau in Switch. if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape) { this.Close(); return true; } if (Form.ModifierKeys == Keys.None && keyData == Keys.Insert) { Open_NeuerAuftrag(); return true; } if (Form.ModifierKeys == Keys.None && keyData == Keys.R) { } return base.ProcessDialogKey(keyData); } /// /// ShortCuts für /// /// /// private void FormWSVerfolgung_KeyDown(object sender, KeyEventArgs e) { if (e.Control && e.KeyCode == Keys.I) // Ctrl+I { e.Handled = true; e.SuppressKeyPress = true; toolStripDropDownButtonInfo.DropDown.Show(); } } } }