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.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 DriverAssignment : Form { SqlConnection cn; SqlCommand cm; SqlDataReader dr; DatabaseConn conn = new DatabaseConn(); string truck; public DriverAssignment(string truck) { InitializeComponent(); cn = new SqlConnection(conn.MyConnection()); this.truck = truck; } public int loadDrivers() { try { cn.Open(); cm = new SqlCommand("Select driverID,firstname,surname from tblDrivers where branchID = @branchID and status = 'UNASSIGNED'", cn); cm.Parameters.AddWithValue("@branchID", Settings.Default.BranchID); cm.ExecuteNonQuery(); dr = cm.ExecuteReader(); while (dr.Read()) { ComboboxItem combobox = new ComboboxItem(); combobox.Text = dr[1].ToString().ToUpper() + " " + dr[2].ToString().ToUpper(); combobox.Value = dr[0].ToString(); truckDrivers.Invoke(new Action(() => truckDrivers.Items.Add(combobox))); } dr.Close(); cn.Close(); return 1; } catch (Exception ex) { cn.Close(); ErrorLogging.WriteToFile(ex.ToString()); return 0; } } private async void DriverAssignment_Load(object sender, EventArgs e) { Task task = new Task(loadDrivers); task.Start(); await task; } public int assignDriver(string truck, string driver) { cn.Open(); SqlTransaction transaction; transaction = cn.BeginTransaction(); try { cm = new SqlCommand("Update tblDrivers set status = @status where driverID = @driverID and branchID = @branchID", cn, transaction); cm.Parameters.AddWithValue("@status", "ASSIGNED"); cm.Parameters.AddWithValue("@branchID", Settings.Default.BranchID); cm.Parameters.AddWithValue("@driverID", driver); cm.ExecuteNonQuery(); cm = new SqlCommand("Update tblTrucks set driver = @driver where truckID = @truckID and branchID = @branchID", cn, transaction); cm.Parameters.AddWithValue("@truckID", truck); cm.Parameters.AddWithValue("@branchID", Settings.Default.BranchID); cm.Parameters.AddWithValue("@driver", driver); cm.ExecuteNonQuery(); cm = new SqlCommand("Insert into tblTruck_DriverMapping (truckID,driverID,dateEntry,operation,countID) values " + "(@truckID,@driverID,@dateEntry,@operation,@countID)", cn, transaction); cm.Parameters.AddWithValue("@truckID", truck); cm.Parameters.AddWithValue("@driverID", driver); cm.Parameters.AddWithValue("@dateEntry", DateTime.Now); cm.Parameters.AddWithValue("@operation", "DRIVER ASSIGNED TO TRUCK"); cm.Parameters.AddWithValue("@countID", DateTime.Now.ToString("yyyyMMddHHmmssfff")); cm.ExecuteNonQuery(); transaction.Commit(); cn.Close(); return 1; } catch (Exception ex) { transaction.Rollback(); cn.Close(); ErrorLogging.WriteToFile(ex.ToString()); return 0; } } private async void btnAdd_Click(object sender, EventArgs e) { string truckDriver = (truckDrivers.SelectedItem as ComboboxItem).Value.ToString(); Task task = new Task(() => assignDriver(truck, truckDriver)); holding.Visible = true; task.Start(); int result = await task; if (result == 1) { string title = "Success"; string message = "New driver assigned successfully"; NoAction noaction = new NoAction(title, message); noaction.BringToFront(); noaction.ShowDialog(); this.DialogResult = DialogResult.OK; this.Close(); } else { string title = "Error occurred"; string message = "An error occurred while assigning driver to truck"; NoAction noaction = new NoAction(title, message); noaction.BringToFront(); noaction.ShowDialog(); } holding.Visible = false; } private void exit_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.Cancel; this.Close(); } private void exit_MouseEnter(object sender, EventArgs e) { exit.BackColor = Color.Crimson; } private void exit_MouseLeave(object sender, EventArgs e) { exit.BackColor = Color.FromArgb(20, 158, 137); } } }