310 lines
10 KiB
C#
310 lines
10 KiB
C#
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<FahrerAuftrag> 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<FahrerAuftrag>();
|
|
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<FahrerAuftrag>();
|
|
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);
|
|
}
|
|
}
|
|
}
|