You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
571 lines
24 KiB
571 lines
24 KiB
using BiskLog_Point_Of_Sale.Classes;
|
|
using BiskLog_Point_Of_Sale.Multiple_Login;
|
|
using BiskLog_Point_Of_Sale.Properties;
|
|
using Point_Of_Sale_Managment;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace BiskLog_Point_Of_Sale.Delivery
|
|
{
|
|
public partial class TruckManagement : Form
|
|
{
|
|
Point drawingPoint = new Point(0, 0);
|
|
Point pointerPoint = new Point(0, 0);
|
|
SqlConnection cn;
|
|
SqlCommand cm;
|
|
SqlDataReader dr;
|
|
SortedList<string, string> truckWithD = new SortedList<string, string>();
|
|
SortedList<string, string> trucksWithoutD = new SortedList<string, string>();
|
|
DatabaseConn conn = new DatabaseConn();
|
|
string selectedLicense;
|
|
PictureBox currentSender = null;
|
|
public TruckManagement()
|
|
{
|
|
InitializeComponent();
|
|
cn = new SqlConnection(conn.MyConnection());
|
|
holding.Left = (ClientSize.Width - holding.Width) / 2;
|
|
}
|
|
private void ADDANEWTRUCKToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
newTruckAddition();
|
|
}
|
|
public int loadTrucks()
|
|
{
|
|
try
|
|
{
|
|
cn.Open();
|
|
cm = new SqlCommand("Select truckID,licensePlate,driver from tblTrucks where branchID = @branchID", cn);
|
|
cm.Parameters.AddWithValue("@branchID", Settings.Default.BranchID);
|
|
cm.ExecuteNonQuery();
|
|
dr = cm.ExecuteReader();
|
|
while (dr.Read())
|
|
{
|
|
if (!String.IsNullOrEmpty(dr[2].ToString()))
|
|
{
|
|
truckWithD.Add(dr[0].ToString(), dr[1].ToString());
|
|
}
|
|
else
|
|
{
|
|
trucksWithoutD.Add(dr[0].ToString(), dr[1].ToString());
|
|
}
|
|
}
|
|
dr.Close();
|
|
cn.Close();
|
|
return 1;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ErrorLogging.WriteToFile(ex.ToString());
|
|
cn.Close();
|
|
return 0;
|
|
}
|
|
}
|
|
public void newTruckAddition()
|
|
{
|
|
try
|
|
{
|
|
NewTruck newTruck = new NewTruck();
|
|
newTruck.BringToFront();
|
|
newTruck.ShowDialog();
|
|
if (newTruck.DialogResult == DialogResult.OK)
|
|
{
|
|
if (newTruck.created && newTruck.ready)
|
|
{
|
|
creation(newTruck.licensePlate, newTruck.truckID, mainpanel2);
|
|
truckWithD.Add(newTruck.truckID, newTruck.licensePlate);
|
|
}
|
|
else if (newTruck.created)
|
|
{
|
|
trucksWithoutD.Add(newTruck.truckID, newTruck.licensePlate);
|
|
Notcreation(newTruck.licensePlate, newTruck.truckID, mainpanel2);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ErrorLogging.WriteToFile(ex.ToString());
|
|
}
|
|
}
|
|
public void creation(string license, string truckIdentity, Panel paneld = null)
|
|
{
|
|
var panel = new Panel();
|
|
panel.BackColor = Color.FromName("GradientActiveCaption");
|
|
panel.Size = new Size(170, 110);
|
|
panel.Name = truckIdentity;
|
|
|
|
var truckID = new Label();
|
|
truckID.Name = "Truck" + String.Format("{0:d12}", (DateTime.Now.Ticks / 10) % 1000000000);
|
|
truckID.Text = license;
|
|
truckID.AutoSize = true;
|
|
truckID.ForeColor = Color.FromArgb(0, 52, 69);
|
|
truckID.Font = new Font("Segoe UI", 12, FontStyle.Bold);
|
|
truckID.Cursor = Cursors.Hand;
|
|
truckID.Location = new Point(drawingPoint.X, drawingPoint.Y);
|
|
panel.Controls.Add(truckID);
|
|
|
|
var picture = new PictureBox();
|
|
picture.Name = "TruckImage" + String.Format("{0:d12}", (DateTime.Now.Ticks / 10) % 1000000000); ;
|
|
picture.Cursor = Cursors.Hand;
|
|
picture.Size = new Size(130, 90);
|
|
picture.Location = new Point(drawingPoint.X - 5, drawingPoint.Y + 24);
|
|
picture.Image = Resources.truck;
|
|
picture.SizeMode = PictureBoxSizeMode.StretchImage;
|
|
|
|
if (paneld == null)
|
|
{
|
|
picture.MouseClick += pictureTable2;
|
|
panel.Controls.Add(picture);
|
|
mainpanel.Controls.Add(panel);
|
|
}
|
|
else
|
|
{
|
|
picture.MouseClick += Picture_MouseClick;
|
|
panel.Controls.Add(picture);
|
|
panel.Location = pointerPoint;
|
|
paneld.Controls.Add(panel);
|
|
}
|
|
}
|
|
private void pictureTable2(object sender, MouseEventArgs e)
|
|
{
|
|
var cellPos = GetRowColIndex(mainpanel, mainpanel.PointToClient(Cursor.Position));
|
|
if (e.Button == MouseButtons.Right)
|
|
{
|
|
drawingPoint = new Point(MousePosition.X, MousePosition.Y);
|
|
truckMenu.Show(drawingPoint);
|
|
try
|
|
{
|
|
currentSender = sender as PictureBox;
|
|
Control c = mainpanel.GetControlFromPosition(cellPos.Value.X, cellPos.Value.Y);
|
|
selectedLicense = c.Name.ToString();
|
|
}
|
|
catch { }
|
|
}
|
|
}
|
|
public void Notcreation(string license, string truckIdentity, Panel paneld = null)
|
|
{
|
|
var panel = new Panel();
|
|
panel.Name = truckIdentity;
|
|
panel.BackColor = Color.FromName("GradientActiveCaption");
|
|
panel.Size = new Size(170, 110);
|
|
|
|
var truckID = new Label();
|
|
truckID.Name = "Truck" + String.Format("{0:d12}", (DateTime.Now.Ticks / 10) % 1000000000);
|
|
truckID.Text = license;
|
|
truckID.AutoSize = true;
|
|
truckID.ForeColor = Color.FromArgb(0, 52, 69);
|
|
truckID.Font = new Font("Segoe UI", 12, FontStyle.Bold);
|
|
truckID.Cursor = Cursors.Hand;
|
|
truckID.Location = new Point(drawingPoint.X, drawingPoint.Y);
|
|
panel.Controls.Add(truckID);
|
|
|
|
var picture = new PictureBox();
|
|
picture.Name = "TruckImage" + String.Format("{0:d12}", (DateTime.Now.Ticks / 10) % 1000000000); ;
|
|
picture.Cursor = Cursors.Hand;
|
|
picture.Size = new Size(130, 90);
|
|
picture.Location = new Point(drawingPoint.X - 5, drawingPoint.Y + 24);
|
|
picture.Image = Resources.truck2;
|
|
picture.SizeMode = PictureBoxSizeMode.StretchImage;
|
|
|
|
if (paneld == null)
|
|
{
|
|
picture.MouseClick += pictureTable1;
|
|
panel.Controls.Add(picture);
|
|
mainpanel.Controls.Add(panel);
|
|
}
|
|
else
|
|
{
|
|
picture.MouseClick += Picture_MouseClick1;
|
|
panel.Controls.Add(picture);
|
|
|
|
/* Calculations
|
|
*/
|
|
int x = 0, y = 0;
|
|
if (this.Width > mainpanel2.Width)
|
|
{
|
|
x = (mainpanel2.Width / this.Width) * pointerPoint.X;
|
|
}
|
|
else
|
|
{
|
|
x = (this.Width / mainpanel2.Width) * pointerPoint.X;
|
|
}
|
|
|
|
if (this.Height > mainpanel2.Height)
|
|
{
|
|
y = (mainpanel2.Height / this.Height) * pointerPoint.Y;
|
|
}
|
|
else
|
|
{
|
|
y = (this.Height / mainpanel2.Height) * pointerPoint.Y;
|
|
}
|
|
panel.Location = new Point(x, y);
|
|
mainpanel2.Controls.Add(panel);
|
|
}
|
|
}
|
|
private void pictureTable1(object sender, MouseEventArgs e)
|
|
{
|
|
var cellPos = GetRowColIndex(mainpanel, mainpanel.PointToClient(Cursor.Position));
|
|
if (e.Button == MouseButtons.Right)
|
|
{
|
|
drawingPoint = new Point(MousePosition.X, MousePosition.Y);
|
|
NOdRIVER.Show(drawingPoint);
|
|
try
|
|
{
|
|
currentSender = sender as PictureBox;
|
|
Control c = mainpanel.GetControlFromPosition(cellPos.Value.X, cellPos.Value.Y);
|
|
selectedLicense = c.Name.ToString();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ErrorLogging.WriteToFile(ex.ToString());
|
|
}
|
|
}
|
|
}
|
|
Point? GetRowColIndex(TableLayoutPanel tlp, Point point)
|
|
{
|
|
if (point.X > tlp.Width || point.Y > tlp.Height)
|
|
return null;
|
|
|
|
int w = tlp.Width;
|
|
int h = tlp.Height;
|
|
int[] widths = tlp.GetColumnWidths();
|
|
|
|
int i;
|
|
for (i = widths.Length - 1; i >= 0 && point.X < w; i--)
|
|
w -= widths[i];
|
|
int col = i + 1;
|
|
|
|
int[] heights = tlp.GetRowHeights();
|
|
for (i = heights.Length - 1; i >= 0 && point.Y < h; i--)
|
|
h -= heights[i];
|
|
|
|
int row = i + 1;
|
|
|
|
return new Point(col, row);
|
|
}
|
|
private void Picture_MouseClick1(object sender, MouseEventArgs e)
|
|
{
|
|
if (e.Button == MouseButtons.Right)
|
|
{
|
|
drawingPoint = new Point(MousePosition.X, MousePosition.Y);
|
|
NOdRIVER.Show(drawingPoint);
|
|
try
|
|
{
|
|
currentSender = sender as PictureBox;
|
|
Control c = sender as Control;
|
|
selectedLicense = c.Parent.Name;
|
|
}
|
|
catch { }
|
|
}
|
|
}
|
|
private void Picture_MouseClick(object sender, MouseEventArgs e)
|
|
{
|
|
if (e.Button == MouseButtons.Right)
|
|
{
|
|
drawingPoint = new Point(MousePosition.X, MousePosition.Y);
|
|
truckMenu.Show(drawingPoint);
|
|
try
|
|
{
|
|
currentSender = sender as PictureBox;
|
|
Control c = sender as Control;
|
|
selectedLicense = c.Parent.Name;
|
|
}
|
|
catch { }
|
|
}
|
|
}
|
|
private async void TruckManagement_Load(object sender, EventArgs e)
|
|
{
|
|
mainpanel.Visible = false;
|
|
mainpanel2.Visible = false;
|
|
mainpanel.Controls.Clear();
|
|
mainpanel2.Controls.Clear();
|
|
Task<int> task = new Task<int>(loadTrucks);
|
|
holding.Visible = true;
|
|
task.Start();
|
|
int result = await task;
|
|
if (result != 1)
|
|
{
|
|
string title = "Error occurred";
|
|
string message = "An error occurred while loading trucks, please try again later!!!";
|
|
NoAction noAction = new NoAction(title, message);
|
|
noAction.BringToFront();
|
|
noAction.ShowDialog();
|
|
}
|
|
else
|
|
{
|
|
try
|
|
{
|
|
foreach (var truck in truckWithD)
|
|
{
|
|
creation(truck.Value, truck.Key);
|
|
}
|
|
foreach (var truck in trucksWithoutD)
|
|
{
|
|
Notcreation(truck.Value, truck.Key);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ErrorLogging.WriteToFile(ex.ToString());
|
|
}
|
|
}
|
|
holding.Visible = false;
|
|
mainpanel.Dock = DockStyle.Top;
|
|
mainpanel2.BringToFront();
|
|
mainpanel2.Dock = DockStyle.Fill;
|
|
mainpanel.Visible = true;
|
|
mainpanel2.Visible = true;
|
|
}
|
|
private void Mainpanel_MouseClick(object sender, MouseEventArgs e)
|
|
{
|
|
if (e.Button == MouseButtons.Right)
|
|
{
|
|
pointerPoint = new Point(MousePosition.X, MousePosition.Y);
|
|
mainMenu.Show(pointerPoint);
|
|
mainpanel.Visible = true;
|
|
}
|
|
}
|
|
private async void ToolStripMenuItem2_Click(object sender, EventArgs e)
|
|
{
|
|
if (!String.IsNullOrEmpty(selectedLicense))
|
|
{
|
|
string titleD = "Confirmation";
|
|
string messageD = "Are you sure you would like to remove this truck ?";
|
|
Confirmation confirmation = new Confirmation(titleD, messageD);
|
|
confirmation.BringToFront();
|
|
confirmation.ShowDialog();
|
|
if (confirmation.DialogResult == DialogResult.Yes)
|
|
{
|
|
Task<int> task = new Task<int>(() => deleteTruck(selectedLicense));
|
|
holding.Visible = true;
|
|
task.Start();
|
|
int result = await task;
|
|
if (result == 1)
|
|
{
|
|
removeTruckPanelStyle();
|
|
}
|
|
else
|
|
{
|
|
string title = "Error occurred";
|
|
string message = "An error occurred while trying to remove truck, please try again later!!";
|
|
NoAction noAction = new NoAction(title, message);
|
|
noAction.BringToFront();
|
|
noAction.ShowDialog();
|
|
}
|
|
holding.Visible = false;
|
|
}
|
|
}
|
|
currentSender = null;
|
|
}
|
|
public void removeTruckPanelStyle()
|
|
{
|
|
if (truckWithD.ContainsKey(selectedLicense))
|
|
{
|
|
truckWithD.Remove(selectedLicense);
|
|
Control c = mainpanel.Controls[selectedLicense];
|
|
mainpanel.Controls.Remove(c);
|
|
c = mainpanel2.Controls[selectedLicense];
|
|
mainpanel2.Controls.Remove(c);
|
|
}
|
|
else if (trucksWithoutD.ContainsKey(selectedLicense))
|
|
{
|
|
trucksWithoutD.Remove(selectedLicense);
|
|
Control c = mainpanel2.Controls[selectedLicense];
|
|
mainpanel2.Controls.Remove(c);
|
|
c = mainpanel.Controls[selectedLicense];
|
|
mainpanel.Controls.Remove(c);
|
|
}
|
|
}
|
|
public int deleteTruck(string truck)
|
|
{
|
|
try
|
|
{
|
|
if (truckWithD.ContainsKey(selectedLicense))
|
|
{
|
|
cn.Open();
|
|
cm = new SqlCommand("Declare @driverOFT nvarchar(50) = (Select driver from tblTrucks where truckID = @truckID where branchID = @branchID) " +
|
|
"Update tblDrivers set status = 'UNASSIGNED' where driverID = @driverOFT and branchID = @branchID " +
|
|
"Delete from tblTrucks where truckID = @truckID and branchID = @branchID " +
|
|
"Insert Into tblTruck_DriverMapping(truckID, driverID, dateEntry, operation, countID) values " +
|
|
"(@truckID, @driverOFT, @dateEntry, @operation, @countID) ", cn);
|
|
cm.Parameters.AddWithValue("@truckID", truck);
|
|
cm.Parameters.AddWithValue("@dateEntry", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fffff"));
|
|
cm.Parameters.AddWithValue("@operation", "TRUCK REMOVAL");
|
|
cm.Parameters.AddWithValue("@countID", Settings.Default.BranchID + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
cm.Parameters.AddWithValue("@branchID", Settings.Default.BranchID);
|
|
//cm.Parameters.AddWithValue("@driverOFT", "NOT ASSIGNED");
|
|
cm.ExecuteNonQuery();
|
|
cn.Close();
|
|
}
|
|
else if (trucksWithoutD.ContainsKey(selectedLicense))
|
|
{
|
|
cn.Open();
|
|
cm = new SqlCommand("Delete from tblTrucks where truckID = @truckID and branchID = @branchID " +
|
|
"Insert Into tblTruck_DriverMapping(truckID, driverID, dateEntry, operation, countID) values " +
|
|
"(@truckID, @driverOFT, @dateEntry, @operation, @countID) ", cn);
|
|
cm.Parameters.AddWithValue("@truckID", truck);
|
|
cm.Parameters.AddWithValue("@dateEntry", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fffff"));
|
|
cm.Parameters.AddWithValue("@operation", "TRUCK REMOVAL");
|
|
cm.Parameters.AddWithValue("@countID", Settings.Default.BranchID + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
cm.Parameters.AddWithValue("@driverOFT", "NOT ASSIGNED");
|
|
cm.Parameters.AddWithValue("@branchID", Settings.Default.BranchID);
|
|
cm.ExecuteNonQuery();
|
|
cn.Close();
|
|
}
|
|
return 1;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
cn.Close();
|
|
ErrorLogging.WriteToFile(ex.ToString());
|
|
return 0;
|
|
}
|
|
}
|
|
public int removeDriver(string truck)
|
|
{
|
|
try
|
|
{
|
|
cn.Open();
|
|
cm = new SqlCommand("Declare @driverOFT varchar(50) = (Select driver from tblTrucks where truckID = @truckID and branchID = @branchID) " +
|
|
"Update tblDrivers set status = 'UNASSIGNED' where driverID = @driverOFT and branchID = @branchID " +
|
|
"Update tblTrucks set driver = null where truckID = @truckID and branchID = @branchID " +
|
|
"Insert Into tblTruck_DriverMapping(truckID, driverID, dateEntry, operation, countID) values " +
|
|
"(@truckID, @driverOFT, @dateEntry, @operation, @countID) ", cn);
|
|
cm.Parameters.AddWithValue("@truckID", truck);
|
|
cm.Parameters.AddWithValue("@dateEntry", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fffff"));
|
|
cm.Parameters.AddWithValue("@operation", "DRIVER RELEASED FROM TRUCK");
|
|
cm.Parameters.AddWithValue("@countID", Settings.Default.BranchID + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
|
cm.Parameters.AddWithValue("@branchID", Settings.Default.BranchID);
|
|
cm.ExecuteNonQuery();
|
|
cn.Close();
|
|
return 1;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
cn.Close();
|
|
ErrorLogging.WriteToFile(ex.ToString());
|
|
return 0;
|
|
}
|
|
}
|
|
private async void removeDRIVERToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
if (!String.IsNullOrEmpty(selectedLicense))
|
|
{
|
|
string titleC = "Confirmation";
|
|
string messageC = "Are you sure you would like to remove the designated driver for this truck ?";
|
|
Confirmation confirmation = new Confirmation(titleC, messageC);
|
|
confirmation.BringToFront();
|
|
confirmation.ShowDialog();
|
|
if (confirmation.DialogResult == DialogResult.Yes)
|
|
{
|
|
Task<int> task = new Task<int>(() => removeDriver(selectedLicense));
|
|
holding.Visible = true;
|
|
task.Start();
|
|
int result = await task;
|
|
if (result == 1)
|
|
{
|
|
string title = "Success";
|
|
string message = "Driver unassigned from truck successfully";
|
|
NoAction action = new NoAction(title, message);
|
|
action.BringToFront();
|
|
action.ShowDialog();
|
|
currentSender.Image = Resources.truck2;
|
|
currentSender.MouseClick += Picture_MouseClick1;
|
|
foreach (var value in truckWithD)
|
|
{
|
|
if (value.Key == selectedLicense)
|
|
{
|
|
trucksWithoutD.Add(selectedLicense, value.Value);
|
|
truckWithD.Remove(selectedLicense);
|
|
holding.Visible = false;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
string title = "Error occurred";
|
|
string message = "An error occurred while unassigning driver from truck, please try again later !!";
|
|
NoAction action = new NoAction(title, message);
|
|
action.BringToFront();
|
|
action.ShowDialog();
|
|
}
|
|
holding.Visible = false;
|
|
}
|
|
}
|
|
currentSender = null;
|
|
}
|
|
private void toolStripMenuItem1_Click(object sender, EventArgs e)
|
|
{
|
|
string title = "Confirmation";
|
|
string message = "Are you sure you would like to assign a new driver to this truck, the driver assigned would be the designated driver for this truck.";
|
|
Confirmation confirmation = new Confirmation(title, message);
|
|
confirmation.BringToFront();
|
|
confirmation.ShowDialog();
|
|
if (confirmation.DialogResult == DialogResult.Yes)
|
|
{
|
|
DriverAssignment assignment = new DriverAssignment(selectedLicense);
|
|
assignment.BringToFront();
|
|
assignment.ShowDialog();
|
|
if (assignment.DialogResult == DialogResult.OK)
|
|
{
|
|
currentSender.Image = Resources.truck;
|
|
currentSender.MouseClick += Picture_MouseClick;
|
|
foreach (var value in trucksWithoutD)
|
|
{
|
|
if (value.Key == selectedLicense)
|
|
{
|
|
truckWithD.Add(selectedLicense, value.Value);
|
|
trucksWithoutD.Remove(selectedLicense);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
currentSender = null;
|
|
}
|
|
private void INVENTORYToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
if (trucksWithoutD.ContainsKey(selectedLicense))
|
|
{
|
|
TruckInventory truckInventory = new TruckInventory(selectedLicense);
|
|
truckInventory.BringToFront();
|
|
truckInventory.ShowDialog();
|
|
}
|
|
else if (truckWithD.ContainsKey(selectedLicense))
|
|
{
|
|
TruckInventory truckInventory = new TruckInventory(selectedLicense, true);
|
|
truckInventory.BringToFront();
|
|
truckInventory.ShowDialog();
|
|
}
|
|
currentSender = null;
|
|
}
|
|
private void ASSIGNMENTSToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
if (!String.IsNullOrEmpty(selectedLicense))
|
|
{
|
|
if (trucksWithoutD.ContainsKey(selectedLicense))
|
|
{
|
|
Assignments assignments = new Assignments(selectedLicense);
|
|
assignments.BringToFront();
|
|
assignments.ShowDialog();
|
|
}
|
|
else if (truckWithD.ContainsKey(selectedLicense))
|
|
{
|
|
Assignments assignments = new Assignments(selectedLicense, true);
|
|
assignments.BringToFront();
|
|
assignments.ShowDialog();
|
|
}
|
|
}
|
|
currentSender = null;
|
|
}
|
|
}
|
|
}
|
|
|