using DatenDB; using Deckungsbeitrag.AA_Klassen; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Deckungsbeitrag.UserControls { public partial class UCTabPageLKW : UserControl { public UCTabPageLKW() { InitializeComponent(); } private void FlowLayout_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent("KundeData")) // Custom Format e.Effect = DragDropEffects.Copy; } private void FlowLayout_DragOver(object sender, DragEventArgs e) { e.Effect = DragDropEffects.Copy; } private void FlowLayout_DragDrop(object sender, DragEventArgs e) { FlowLayoutPanel dropTarget = sender as FlowLayoutPanel; if (e.Data.GetDataPresent("KundeData")) { KundenControl kunde = e.Data.GetData("KundeData") as KundenControl; if (kunde != null) { // Kunde klonen (nicht original bewegen) KundenControl kundeKopie = (KundenControl)kunde.Clone(); kundeKopie.Parent = dropTarget; dropTarget.Controls.Add(kundeKopie); } } } // ★ SPEICHERN – nutzt TAG der FlowLayoutPanels ★ public TourenDaten SpeichereDaten() { var data = new TourenDaten { FahrzeugName = this.Parent?.Text ?? "Unbekannt", KundenProTag = new List() }; // Alle FlowLayoutPanels durchgehen foreach (Control ctrl in tableLayoutPanelTage.Controls) { if (ctrl is FlowLayoutPanel flp && flp.Tag is string tag) // ← TAG! { // Kunden sammeln foreach (Control kundeCtrl in flp.Controls) { if (kundeCtrl is KundenControl kc) { data.KundenProTag.Add(new KundeData { Name = kc.KundenName, Region = kc.Region, Tag = tag // ← Wochentag mit speichern! }); } } // Counter finden (labelContMO -> MO, etc.) string counterName = $"labelCont{tag}"; var counterLabel = tableLayoutPanelTage.Controls.Find(counterName, true).FirstOrDefault() as Label; if (counterLabel != null) data.Counter[tag] = int.Parse(counterLabel.Text); } } return data; } // ★ LADEN – TAG der FlowLayoutPanels nutzen ★ public void LadeDaten(TourenDaten data) { // Zuerst alle FlowLayoutPanels leeren foreach (Control ctrl in tableLayoutPanelTage.Controls) { if (ctrl is FlowLayoutPanel flp) flp.Controls.Clear(); } // Kunden nach TAG verteilen var kundenGruppiert = data.KundenProTag.GroupBy(k => k.Tag); foreach (var gruppe in kundenGruppiert) { string tag = gruppe.Key; FlowLayoutPanel zielFlp = tableLayoutPanelTage.Controls .OfType() .FirstOrDefault(flp => flp.Tag?.ToString() == tag); if (zielFlp != null) { foreach (var kundeData in gruppe) { var kunde = new KundenControl(kundeData.Name, kundeData.Region); zielFlp.Controls.Add(kunde); } } // Counter setzen if (data.Counter.TryGetValue(tag, out int count)) { string counterName = $"labelCont{tag}"; var counterLabel = tableLayoutPanelTage.Controls.Find(counterName, true).FirstOrDefault() as Label; counterLabel.Text = count.ToString(); } } } } } //TODO: Kein Clone mehr wenn im Panel bewegt wird. Nur neue Position übernehmen. (Fahrreihenfolge) //TODO: Kein Clone wenn zwischen den Panelen bewegt wird.