Biskilog POS desktop appilcation
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.

149 lines
5.5 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.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<int> task = new Task<int>(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<int> task = new Task<int>(() => 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);
}
}
}