using BrightIdeasSoftware; using DatenDB; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Printing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Deckungsbeitrag { public partial class FormFahrerScreen : Form { private Benutzer Benutzer; public Benutzer Fahrer; public Auftrag Auftrag; public List fahrerauftragliste; private ListViewItem.ListViewSubItem _currentsubitem = null; Color Wirlblau = Color.FromArgb(1, 53, 101); ToolTip toolTip1 = new ToolTip(); public FormFahrerScreen() { InitializeComponent(); } public FormFahrerScreen(Benutzer benutzer) : this() { this.Benutzer = benutzer; } private void FormFahrerScreen_Load(object sender, EventArgs e) { this.listViewAuftrag.SuspendLayout(); this.listViewAuftrag.BeginUpdate(); get_Columns(); get_Groups(); get_Items(); get_lvDesign(); this.listViewAuftrag.EndUpdate(); this.listViewAuftrag.ResumeLayout(); } private void get_lvDesign() { this.listViewAuftrag.ForeColor = Color.White; //this.listViewAuftrag.MouseMove += new MouseEventHandler(listViewAuftrag_Hover); toolTip1.ToolTipIcon = ToolTipIcon.Info; toolTip1.ToolTipTitle = "BESCHREIBUNG"; toolTip1.SetToolTip(listViewAuftrag, ""); //COLUMNS RESIZE this.listViewAuftrag.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); ListView.ColumnHeaderCollection cc = listViewAuftrag.Columns; int[] colBreite = new int[cc.Count]; for (int i = 0; i < cc.Count; i++) { int colWidth = TextRenderer.MeasureText(cc[i].Text, listViewAuftrag.Font).Width + 10; if (colWidth > cc[i].Width) { colBreite[i] = cc[i].Width = colWidth; } else colBreite[i] = cc[i].Width; }//COLUMNS BREITE CONTENT ODER HEADER SIZE this.listViewAuftrag.AllowColumnReorder = true; //GROUP-ITEMS BACKCOLOR int groups = this.listViewAuftrag.Groups.Count; for (int i = 0; i < this.listViewAuftrag.Groups.Count; i++) { ListViewGroup group = this.listViewAuftrag.Groups[i]; if (i % 2 == 0) foreach (ListViewItem item in group.Items) item.BackColor = Wirlblau; else foreach (ListViewItem item in group.Items) item.BackColor = Wirlblau; } } private void get_Items() { this.listViewAuftrag.Items.Clear(); ListViewItem item; foreach(FahrerAuftrag auftrag in FahrerAuftrag.GetAuftragList()) { item = new ListViewItem(); if (auftrag.FahrerID != null) item.Name = Benutzer.GetBenutzer(null, auftrag.FahrerID).Vorname + " " + Benutzer.GetBenutzer(null, auftrag.FahrerID).Nachname; else item.Name = "Alle Fahrer"; item.Tag = auftrag; item.Text = auftrag.Wann.ToShortDateString(); item.SubItems.Add(auftrag.KundeNummer); item.SubItems.Add(auftrag.Kunde); item.SubItems.Add(auftrag.Aufgabe); item.SubItems.Add(auftrag.Zusatz); item.SubItems.Add(auftrag.Gedruckt.HasValue ? "JA" : "NEIN"); item.SubItems.Add(Benutzer.GetBenutzer(null, auftrag.ErstelltVon).Vorname + " " + Benutzer.GetBenutzer(null, auftrag.ErstelltVon).Nachname); item.SubItems.Add(auftrag.Erstellt.HasValue ? auftrag.Erstellt.Value.ToString("dd.MM.yyyy HH:mm") : string.Empty); foreach (ListViewGroup group in this.listViewAuftrag.Groups) if (group.Name == item.Name) item.Group = group; this.listViewAuftrag.Items.Add(item); } } private void get_Columns() { this.listViewAuftrag.Columns.Clear(); foreach(string s in FahrerAuftrag.ASPECTS.Split(',')) {//COLUMNS ERSTELLEN!!! ColumnHeader col = new ColumnHeader(); col.Name = col.Text = s; col.Width = 100; if (!col.Name.Contains("ID") && col.Name != "Fahrer" && col.Name != "Erledigt" && col.Name != "Beschreibung") this.listViewAuftrag.Columns.Add(col); } } private void get_Groups() { this.listViewAuftrag.Groups.Clear(); ListViewGroup group; group = new ListViewGroup("Alle Fahrer", HorizontalAlignment.Left); group.Name = group.Header; group.Tag = null; this.listViewAuftrag.Groups.Add(group); foreach (Benutzer fahrer in Benutzer.GetFahrerList()) { group = new ListViewGroup(fahrer.Vorname + " " + fahrer.Nachname, HorizontalAlignment.Left); group.Name = group.Header; group.Tag = fahrer; if (!this.listViewAuftrag.Groups.Contains(group)) this.listViewAuftrag.Groups.Add(group); } } private void listViewAuftrag_MouseMove(object sender, MouseEventArgs e) { ListView lv = (ListView)sender; if (lv != null) { ListViewHitTestInfo htInfo = lv.HitTest(e.X, e.Y); if (htInfo != null) { if (htInfo.Item != null && htInfo.SubItem != null) { // wenn Subitem in Spalte 2 (Index == 1) gewählt if (htInfo.Item.SubItems.IndexOf(htInfo.SubItem) == 3) { if (_currentsubitem != htInfo.SubItem | _currentsubitem == null) { toolTip1.Show(Aufgabe.GetAufgabe(htInfo.SubItem.Text, null).Beschreibung, lv, e.X, e.Y); _currentsubitem = htInfo.SubItem; } } else { toolTip1.Hide(lv); _currentsubitem = null; } } //else //{ // toolTip1.Hide(lv); // _currentsubitem = null; //} } } } private void tSButtonDrucken_Click(object sender, EventArgs e) { if(Benutzer == null) Benutzer = do_Login(); fahrerauftragliste = new List(); foreach (ListViewItem item in this.listViewAuftrag.Items) { if (item.Checked == true) { FahrerAuftrag fahrerauftrag = (FahrerAuftrag)item.Tag; Auftrag auftrag = Auftrag.GetAuftrag(fahrerauftrag.AuftragID); if (auftrag.ArbeiterID != null) { if (auftrag.ArbeiterID == Benutzer.BenutzerID) { auftrag.Gedruckt = DateTime.Now; auftrag.GedrucktVon = Benutzer.BenutzerID; if (auftrag.Save()[0] == 1) fahrerauftragliste.Add(fahrerauftrag); } else MessageBox.Show($"Der Auftrag vom {fahrerauftrag.Wann.ToShortDateString()} ist nicht dein Auftrag."); } else { auftrag.Gedruckt = DateTime.Now; auftrag.GedrucktVon = Benutzer.BenutzerID; if (auftrag.Save()[0] == 1) fahrerauftragliste.Add(fahrerauftrag); } } } PrintDialog dialog = new PrintDialog(); if (dialog.ShowDialog() == DialogResult.OK) { PrintPreviewDialog previewDialog = new PrintPreviewDialog(); PrintDocument printDocument = new PrintDocument(); printDocument.PrintPage += new PrintPageEventHandler(printDocument_PrintPage); printDocument.PrinterSettings = dialog.PrinterSettings; previewDialog.UseAntiAlias = true; previewDialog.Document = printDocument; (previewDialog as Form).WindowState = FormWindowState.Maximized; previewDialog.ShowDialog(); } FormFahrerScreen_Load(this, null); } private void tSButtonErledigt_Click(object sender, EventArgs e) { if (Benutzer == null) Benutzer = do_Login(); fahrerauftragliste = new List(); foreach(ListViewItem item in this.listViewAuftrag.Items) { if (item.Checked == true) { FahrerAuftrag fahrerauftrag = (FahrerAuftrag)item.Tag; Auftrag auftrag = Auftrag.GetAuftrag(fahrerauftrag.AuftragID); if (auftrag.ArbeiterID != null) { if (auftrag.ArbeiterID == Benutzer.BenutzerID) { auftrag.Erledigt = DateTime.Now; auftrag.ErledigtVon = Benutzer.BenutzerID; if (auftrag.Save()[0] == 1) fahrerauftragliste.Add(fahrerauftrag); } else MessageBox.Show($"Der Auftrag vom {fahrerauftrag.Wann.ToShortDateString()} ist nicht dein Auftrag."); } else { auftrag.Erledigt = DateTime.Now; auftrag.ErledigtVon = Benutzer.BenutzerID; if (auftrag.Save()[0] == 1) fahrerauftragliste.Add(fahrerauftrag); } } } FormFahrerScreen_Load(this, null); } private Benutzer do_Login() { Benutzer benutzer = new Benutzer(); FormLogin loginForm = new FormLogin(); if (loginForm.ShowDialog() == DialogResult.OK) { benutzer = loginForm.Person; } return benutzer; }//LOGIN damit Fahrer nur ihre Aufträge drucken und erledigen können. private Image druck_Auftrag() { Bitmap bitmap = new Bitmap(1120, 790); Graphics g = Graphics.FromImage(bitmap); Pen pen = new Pen(Brushes.Black); Font kat1 = new Font("Arial", 20, FontStyle.Bold); Font kat2 = new Font("Arial", 12, FontStyle.Regular); Font kat3 = new Font("Arial", 8, FontStyle.Regular); SizeF datum = g.MeasureString("22.22.2222", kat2); SizeF gedruckt = g.MeasureString("Datum: 22.22.2222", kat2); //SEITE WEISS & KOPFZEILE ERSTELLEN g.FillRectangle(Brushes.White, 0, 0, bitmap.Width, bitmap.Height); g.DrawString($"Fahrer: {Benutzer.Vorname} {Benutzer.Nachname}", kat1, Brushes.Black, 50, 50); g.DrawString($"Datum: {DateTime.Now.Date.ToShortDateString()}", kat2, Brushes.Black, 740 - gedruckt.Width, 50); int y = 100; int height = 100; foreach (FahrerAuftrag auftrag in fahrerauftragliste) { Rectangle rahmen = new Rectangle(50, y, 690, height); g.DrawRectangle(pen, rahmen); g.DrawLine(pen, new Point(50, y + (int)datum.Height), new Point(740, y + (int)datum.Height)); g.DrawString(auftrag.Wann.ToShortDateString(), kat2, Brushes.Black, 50, y); g.DrawString(auftrag.KundeNummer + " " + auftrag.Kunde, kat2, Brushes.Black, (790 / 2) - (g.MeasureString(auftrag.KundeNummer + " " + auftrag.Kunde, kat2).Width / 2), y); g.DrawString(auftrag.Aufgabe, kat2, Brushes.Black, 740 - g.MeasureString(auftrag.Aufgabe, kat2).Width, y); //ZUSATZ SCHREIBEN g.DrawString("Zusatz:", kat2, Brushes.Black, 50, y + (int)datum.Height + 5); if (g.MeasureString(auftrag.Zusatz, kat2).Width + 100 <= 790) g.DrawString(auftrag.Zusatz, kat2, Brushes.Black, 50, y + (int)datum.Height * 2 + 10); else g.DrawString("Zusatztext zu lange. Bitte händisch hinzufügen.", kat2, Brushes.Black, 50, y + (int)datum.Height * 2 + 10); y += height + 5; }//AUFTRÄGE ERSTELLEN Image image = bitmap; return image; }//AUFTRÄGE DRUCKENTWURF private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { e.Graphics.DrawImage(druck_Auftrag(), 0, 0); } } }