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.

260 lines
9.7 KiB

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
{
public partial class AddCustomer : Form
{
Customers customersList;
SqlConnection cn;
SqlCommand cm;
DatabaseConn conn = new DatabaseConn();
public AddCustomer(Customers customers, bool update = false, List<string> id = null)
{
InitializeComponent();
cn = new SqlConnection(conn.MyConnection());
customersList = customers;
if (update)
{
title.Text = "Edit Customer Details";
btnUpdate.Left = (ClientSize.Width - btnUpdate.Width) / 2;
btnUpdate.Visible = true;
btnNew.Visible = false;
lblCustomerID.Text = id[0];
lblCustomerID.Visible = true;
lblID.Visible = true;
txtFirstname.Text = id[1];
txtSurname.Text = id[2];
txtAddress.Text = id[3];
txtEmail.Text = id[4];
txtPhone.Text = id[5];
txtTIN.Text = id[6];
}
else
{
title.Text = "New Customer";
btnNew.Left = (ClientSize.Width - btnNew.Width) / 2;
btnNew.Visible = true;
}
}
private void Exit_Click(object sender, EventArgs e)
{
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, 132);
}
public int checkEmptyBox()
{
int total = 0;
foreach (Control c in panel2.Controls)
{
if ((c is TextBox) && (!String.IsNullOrEmpty(c.Text)))
{
total++;
}
}
if (String.IsNullOrEmpty(txtEmail.Text))
{
total++;
}
return total;
}
public int SaveDetails()
{
try
{
cn.Open();
lblCustomerID.Invoke(new Action(() =>
{
string number = String.Format("{0:d9}", (DateTime.Now.Ticks / 10) % 1000000000);
lblCustomerID.Text = (txtFirstname.Text.Substring(0, 2) + number).ToUpper(); ;
cm = new SqlCommand("Insert into tblCustomers (customerID,Firstname,Surname,address,email,telephone,dateAdded,branchID,status,tin,financialStatus,name_key1,name_key2) " +
"values (@customerID,@Firstname,@Surname,@address,@email,@telephone,@dateAdded,@branchID,@status,@tin,@financialStatus,@name_key1,@name_key2)", cn);
cm.Parameters.AddWithValue("@customerID", lblCustomerID.Text);
cm.Parameters.AddWithValue("@Firstname", txtFirstname.Text);
cm.Parameters.AddWithValue("@Surname", txtSurname.Text);
cm.Parameters.AddWithValue("@address", txtAddress.Text);
cm.Parameters.AddWithValue("@telephone", txtPhone.Text);
cm.Parameters.AddWithValue("@dateAdded", DateTime.Now);
cm.Parameters.AddWithValue("@email", txtEmail.Text);
cm.Parameters.AddWithValue("@branchID", Settings.Default.BranchID);
cm.Parameters.AddWithValue("@status", "ACTIVE");
cm.Parameters.AddWithValue("@tin", txtTIN.Text);
cm.Parameters.AddWithValue("@financialStatus", "not owing");
cm.Parameters.AddWithValue("@name_key1", txtFirstname.Text + " " + txtSurname.Text);
cm.Parameters.AddWithValue("@name_key2", txtSurname.Text + " " + txtFirstname.Text);
cm.ExecuteNonQuery();
}));
cn.Close();
return 1;
}
catch
{
cn.Close();
return 0;
}
}
public void lockBoxes()
{
foreach (Control box in panel2.Controls)
{
if (box is TextBox)
{
box.Enabled = false;
}
}
}
public void unlockBoxes()
{
foreach (Control box in panel2.Controls)
{
if (box is TextBox)
{
box.Enabled = true;
}
}
}
public void clearBoxes()
{
foreach (Control box in panel2.Controls)
{
if (box is TextBox)
{
box.Text = "";
}
}
}
private async void BtnNew_Click(object sender, EventArgs e)
{
int checkedTotal = checkEmptyBox();
if (checkedTotal == 6)
{
Task<int> task = new Task<int>(SaveDetails);
holding.Visible = true;
lockBoxes();
btnNew.Enabled = false;
task.Start();
int result = await task;
if (result == 1)
{
string heading = "Registration Successful";
string body = "The new customer has been addded successfully to the system.";
NoAction noAction = new NoAction(title: heading, message: body);
noAction.BringToFront();
noAction.ShowDialog();
clearBoxes();
customersList.loadCustomerOutNOut();
}
else
{
string heading = "Registration Failed";
string body = "An error occurred while adding the new customer to the system, please try again later.";
NoAction noAction = new NoAction(title: heading, message: body);
noAction.BringToFront();
noAction.ShowDialog();
}
holding.Visible = false;
btnNew.Enabled = true;
unlockBoxes();
}
else
{
string heading = "Operation Denied";
string body = "You must fill out all spaces to continue!!";
NoAction noAction = new NoAction(title: heading, message: body);
noAction.BringToFront();
noAction.ShowDialog();
}
}
public int UpdateCustomers()
{
try
{
cn.Open();
lblCustomerID.Invoke(new Action(() =>
{
cm = new SqlCommand("Update tblCustomers set Firstname = @firstname, Surname = @surname,address = @address, tin = @tin," +
"telephone = @phone,email = @email where customerID = @customerNumber", cn);
cm.Parameters.AddWithValue("@firstname", txtFirstname.Text);
cm.Parameters.AddWithValue("@surname", txtSurname.Text);
cm.Parameters.AddWithValue("@address", txtAddress.Text);
cm.Parameters.AddWithValue("@tin", txtTIN.Text);
cm.Parameters.AddWithValue("@phone", txtPhone.Text);
cm.Parameters.AddWithValue("@email", txtEmail.Text);
cm.Parameters.AddWithValue("@customerNumber", lblCustomerID.Text);
cm.ExecuteNonQuery();
}));
cn.Close();
return 1;
}
catch
{
cn.Close();
return 0;
}
}
private async void BtnUpdate_Click(object sender, EventArgs e)
{
int checkedTotal = checkEmptyBox();
if (checkedTotal == 6)
{
Task<int> task = new Task<int>(UpdateCustomers);
holding.Visible = true;
lockBoxes();
btnUpdate.Enabled = false;
task.Start();
int result = await task;
if (result == 1)
{
string heading = "Update Successful";
string body = "Customer details has been updated successfully....";
NoAction noAction = new NoAction(title: heading, message: body);
noAction.BringToFront();
noAction.ShowDialog();
customersList.loadCustomerOutNOut();
}
else
{
string heading = "Update Failed";
string body = "An error occurred while updating customer details , please try again later.";
NoAction noAction = new NoAction(title: heading, message: body);
noAction.BringToFront();
noAction.ShowDialog();
}
holding.Visible = false;
btnUpdate.Enabled = true;
unlockBoxes();
}
else
{
string heading = "Operation Denied";
string body = "You must fill out all spaces to continue!!";
NoAction noAction = new NoAction(title: heading, message: body);
noAction.BringToFront();
noAction.ShowDialog();
}
}
}
}