Add save tempate in db feature
parent
32cff1392e
commit
f64e75970c
Binary file not shown.
|
@ -12,6 +12,7 @@ namespace ZktecoAttendenceService
|
||||||
|
|
||||||
public void update(AttendanceMachine attendanceMachine, MySqlConnection connection)
|
public void update(AttendanceMachine attendanceMachine, MySqlConnection connection)
|
||||||
{
|
{
|
||||||
|
connection.Open();
|
||||||
string query = "UPDATE `hrms`.`attendance_machine` SET `machine_ip` = @machine_ip, `port_number` = @port_number, `machine_name` = @machine_name, `site_id` = @site_id, `status` = @status, `last_sync_date` = @last_sync_date WHERE `machine_id` = @machine_id";
|
string query = "UPDATE `hrms`.`attendance_machine` SET `machine_ip` = @machine_ip, `port_number` = @port_number, `machine_name` = @machine_name, `site_id` = @site_id, `status` = @status, `last_sync_date` = @last_sync_date WHERE `machine_id` = @machine_id";
|
||||||
MySqlCommand cmd = new MySqlCommand(query, connection);
|
MySqlCommand cmd = new MySqlCommand(query, connection);
|
||||||
cmd.Parameters.AddWithValue("@machine_ip", attendanceMachine.MachineIp);
|
cmd.Parameters.AddWithValue("@machine_ip", attendanceMachine.MachineIp);
|
||||||
|
@ -23,6 +24,7 @@ namespace ZktecoAttendenceService
|
||||||
cmd.Parameters.AddWithValue("@machine_id", attendanceMachine.MachineId);
|
cmd.Parameters.AddWithValue("@machine_id", attendanceMachine.MachineId);
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
|
connection.Close();
|
||||||
}
|
}
|
||||||
public void updateColony(AttendanceMachine attendanceMachine, MySqlConnection connection)
|
public void updateColony(AttendanceMachine attendanceMachine, MySqlConnection connection)
|
||||||
{
|
{
|
||||||
|
|
|
@ -216,16 +216,20 @@ namespace ZktecoAttendenceService
|
||||||
|
|
||||||
public void UpdateTotalEmpInMachines(string machine_id, int total_users, MySqlConnection connection)
|
public void UpdateTotalEmpInMachines(string machine_id, int total_users, MySqlConnection connection)
|
||||||
{
|
{
|
||||||
|
connection.Open();
|
||||||
string query = "UPDATE `hrms`.`attendance_machine` SET `total_users` =" + total_users + " WHERE `machine_id` = '" + machine_id + "'";
|
string query = "UPDATE `hrms`.`attendance_machine` SET `total_users` =" + total_users + " WHERE `machine_id` = '" + machine_id + "'";
|
||||||
MySqlCommand cmd = new MySqlCommand(query, connection);
|
MySqlCommand cmd = new MySqlCommand(query, connection);
|
||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
|
connection.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateFlag_InMachineUsers(string machine_id, string serial_no, MySqlConnection connection)
|
public void UpdateFlag_InMachineUsers(string machine_id, string serial_no, MySqlConnection connection)
|
||||||
{
|
{
|
||||||
|
connection.Open();
|
||||||
string query = "UPDATE `hrms`.`attendance_machine_user` SET `is_deleted` = 1 WHERE `machine_id` = '" + machine_id + "' and serial_number = " + serial_no + "";
|
string query = "UPDATE `hrms`.`attendance_machine_user` SET `is_deleted` = 1 WHERE `machine_id` = '" + machine_id + "' and serial_number = " + serial_no + "";
|
||||||
MySqlCommand cmd = new MySqlCommand(query, connection);
|
MySqlCommand cmd = new MySqlCommand(query, connection);
|
||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
|
connection.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,46 +57,38 @@ namespace ZktecoAttendenceService
|
||||||
Application.Exit();
|
Application.Exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public List<string> StartPooling()
|
public List<string> StartPooling()
|
||||||
{
|
{
|
||||||
List<string> responses = new List<string>();
|
List<string> responses = new List<string>();
|
||||||
|
AttendanceMachineDAO attendanceMachineDAO = new AttendanceMachineDAO();
|
||||||
|
AttendanceMachineUserDAO attendanceMachineUserDAO = new AttendanceMachineUserDAO();
|
||||||
|
|
||||||
try
|
using (var connection = ObjConnectionClass.Connection())
|
||||||
{
|
{
|
||||||
//timer1.Enabled = false;
|
if (ObjConnectionClass.OpenConnection(connection))
|
||||||
|
|
||||||
Ping ping = new Ping();
|
|
||||||
string mIp = string.Empty;
|
|
||||||
Int16 mMacID = 0;
|
|
||||||
string mInOut = string.Empty;
|
|
||||||
|
|
||||||
connection = ObjConnectionClass.Connection();
|
|
||||||
if (ObjConnectionClass.OpenConnection(connection) == true)
|
|
||||||
{
|
{
|
||||||
AttendanceMachineDAO attendanceMachineDAO = new AttendanceMachineDAO();
|
var machines = attendanceMachineDAO.getAttendanceMachines(connection, "0");
|
||||||
List<AttendanceMachine> machines = attendanceMachineDAO.getAttendanceMachines(connection, "0");
|
|
||||||
|
|
||||||
foreach (var machine in machines)
|
foreach (var machine in machines)
|
||||||
{
|
{
|
||||||
|
|
||||||
//if (machine.MachineIp == "192.168.52.17")
|
// if (machine.MachineIp == "192.168.85.202")
|
||||||
{
|
{
|
||||||
|
bool isConnected = axCZKEM1.Connect_Net(machine.MachineIp, Convert.ToInt32(machine.PortNumber));
|
||||||
|
if (isConnected)
|
||||||
bool Bconnect = false;
|
|
||||||
|
|
||||||
Bconnect = axCZKEM1.Connect_Net(machine.MachineIp, Convert.ToInt32(machine.PortNumber));
|
|
||||||
axCZKEM1.EnableDevice(Convert.ToInt32(machine.MachineId), false);//disable the device
|
|
||||||
|
|
||||||
|
|
||||||
if (Bconnect == true)
|
|
||||||
{
|
{
|
||||||
|
axCZKEM1.EnableDevice(Convert.ToInt32(machine.MachineId), false);
|
||||||
|
|
||||||
if (machine.MachineId != "100")
|
if (machine.MachineId != "100")
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
//Saving the templates to the database
|
||||||
|
SaveTemplateDb saveTemplateDb = new SaveTemplateDb();
|
||||||
|
saveTemplateDb.InsertFaceIntoDb(machine, connection,axCZKEM1);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
machine.Status = "SYNCING";
|
machine.Status = "SYNCING";
|
||||||
attendanceMachineDAO.update(machine, connection);
|
attendanceMachineDAO.update(machine, connection);
|
||||||
|
|
||||||
|
@ -108,27 +100,25 @@ namespace ZktecoAttendenceService
|
||||||
Console.WriteLine(machine.MachineId + " => " + machine.LastSyncDate);
|
Console.WriteLine(machine.MachineId + " => " + machine.LastSyncDate);
|
||||||
attendanceMachineDAO.update(machine, connection);
|
attendanceMachineDAO.update(machine, connection);
|
||||||
|
|
||||||
|
List<string> newResponses = new List<string>();
|
||||||
List<string> Newresponses = new List<string>();
|
|
||||||
GetAllFaceInfo(machine);
|
GetAllFaceInfo(machine);
|
||||||
|
|
||||||
//Delete from machine and db
|
|
||||||
attendanceMachineUserDAO.UpdateTotalEmpInMachines(machine.MachineId, empList.Count, connection);
|
attendanceMachineUserDAO.UpdateTotalEmpInMachines(machine.MachineId, empList.Count, connection);
|
||||||
|
|
||||||
Newresponses = (attendanceMachineUserDAO.DeleteFromDbAndMachine(empList, machine, connection));
|
newResponses = attendanceMachineUserDAO.DeleteFromDbAndMachine(empList, machine, connection);
|
||||||
if (Newresponses.Count != 0)
|
if (newResponses.Count != 0)
|
||||||
{
|
{
|
||||||
responses.AddRange(Newresponses);
|
responses.AddRange(newResponses);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
empList = new List<string>();
|
empList = new List<string>();
|
||||||
axCZKEM1.EnableDevice(Convert.ToInt32(machine.MachineId), true);
|
axCZKEM1.EnableDevice(Convert.ToInt32(machine.MachineId), true);
|
||||||
Cursor = Cursors.Default;
|
Cursor = Cursors.Default;
|
||||||
axCZKEM1.Disconnect();
|
axCZKEM1.Disconnect();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//for colony attendance
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
machine.Status = "SYNCING";
|
machine.Status = "SYNCING";
|
||||||
|
@ -145,36 +135,18 @@ namespace ZktecoAttendenceService
|
||||||
axCZKEM1.Disconnect();
|
axCZKEM1.Disconnect();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
responses.Add("MACHINE : " + machine.MachineIp + " : NOT CONNECTED");
|
responses.Add("MACHINE : " + machine.MachineIp + " : NOT CONNECTED");
|
||||||
// return responses;
|
|
||||||
machine.Status = "NOT CONNECTED";
|
machine.Status = "NOT CONNECTED";
|
||||||
attendanceMachineDAO.update(machine, connection);
|
attendanceMachineDAO.update(machine, connection);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
ObjConnectionClass.CloseConnection(connection);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return responses;
|
|
||||||
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
return responses;
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
ObjConnectionClass.CloseConnection(connection);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return responses;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<string> poolMachineDataColony(string ip, int port, int machineId)
|
public List<string> poolMachineDataColony(string ip, int port, int machineId)
|
||||||
|
|
|
@ -0,0 +1,144 @@
|
||||||
|
using MySql.Data.MySqlClient;
|
||||||
|
using Org.BouncyCastle.Crypto.IO;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Data;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ZktecoAttendenceService
|
||||||
|
{
|
||||||
|
internal class SaveTemplateDb
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
string empID;
|
||||||
|
string template;
|
||||||
|
int length = 0;
|
||||||
|
long empExist; long templateExist;
|
||||||
|
public void InsertFaceIntoDb(AttendanceMachine attendanceMachine, MySqlConnection connection, zkemkeeper.CZKEMClass axCZKEM1)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string sName;
|
||||||
|
string sPassword;
|
||||||
|
int iPrivilege;
|
||||||
|
bool bEnabled;
|
||||||
|
int machineNo = Convert.ToInt32(attendanceMachine.MachineId);
|
||||||
|
|
||||||
|
// Create a list to store emp ID and template
|
||||||
|
|
||||||
|
List<(string, string,long,long)> empTemplateList = new List<(string, string,long,long)>();
|
||||||
|
// Get all emp
|
||||||
|
while (axCZKEM1.SSR_GetAllUserInfo(machineNo, out empID, out sName, out sPassword, out iPrivilege, out bEnabled))
|
||||||
|
{
|
||||||
|
{
|
||||||
|
|
||||||
|
( empExist, templateExist) = CheckEmpInDb(empID, connection);
|
||||||
|
|
||||||
|
|
||||||
|
if (templateExist == 0 )
|
||||||
|
{
|
||||||
|
|
||||||
|
if (axCZKEM1.GetUserFaceStr(machineNo, empID, 50, ref template, ref length))
|
||||||
|
{
|
||||||
|
Console.WriteLine("User ID: " + empID + " Name: " + sName + " Template: " + template + " Length: " + length);
|
||||||
|
// Store emp ID and template in the list
|
||||||
|
empTemplateList.Add((empID, template,empExist, templateExist));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
axCZKEM1.EnableDevice(machineNo, true);
|
||||||
|
axCZKEM1.Disconnect();
|
||||||
|
|
||||||
|
|
||||||
|
SaveInDb(empTemplateList, connection);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Handle exception
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//save template to db with emp id and template parameter
|
||||||
|
public void SaveInDb(List<(string, string, long, long)> empTemplateList, MySqlConnection connection)
|
||||||
|
{
|
||||||
|
|
||||||
|
foreach (var item in empTemplateList)
|
||||||
|
{
|
||||||
|
|
||||||
|
long empExist = item.Item3;
|
||||||
|
long empTemplateExist = item.Item4;
|
||||||
|
if (empExist == 0 && empTemplateExist == 0)
|
||||||
|
{
|
||||||
|
string insertQuery = "INSERT INTO attendance_machine_face_templates (serial_no, template_zkteco, created_date) VALUES (@emp_id, @template, @created_date)";
|
||||||
|
|
||||||
|
MySqlCommand command = new MySqlCommand(insertQuery, connection);
|
||||||
|
|
||||||
|
command.Parameters.AddWithValue("@emp_id", item.Item1);
|
||||||
|
command.Parameters.AddWithValue("@template", item.Item2);
|
||||||
|
command.Parameters.AddWithValue("@created_date", DateTime.Now);
|
||||||
|
command.ExecuteNonQuery();
|
||||||
|
command.Parameters.Clear();
|
||||||
|
Console.WriteLine("Emp id " + item.Item1 + " Inserted");
|
||||||
|
}
|
||||||
|
if (empExist == 1 && empTemplateExist == 0)
|
||||||
|
{
|
||||||
|
string updateQuery = "UPDATE attendance_machine_face_templates set template_zkteco = @template where serial_no = @emp_id and is_active = 1";
|
||||||
|
MySqlCommand command = new MySqlCommand(updateQuery, connection);
|
||||||
|
|
||||||
|
command.Parameters.AddWithValue("@emp_id", item.Item1);
|
||||||
|
command.Parameters.AddWithValue("@template", item.Item2);
|
||||||
|
command.Parameters.AddWithValue("@created_date", DateTime.Now);
|
||||||
|
command.ExecuteNonQuery();
|
||||||
|
command.Parameters.Clear();
|
||||||
|
Console.WriteLine("Employee already exist");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
connection.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public (long EmpExist, long TemplateExist) CheckEmpInDb(string empId, MySqlConnection connection)
|
||||||
|
{
|
||||||
|
string query = @"
|
||||||
|
SELECT
|
||||||
|
COUNT(*) AS EmpExist,
|
||||||
|
CASE
|
||||||
|
WHEN COUNT(*) = 0 THEN 0 -- If no employee exists, set TemplateExist to 0
|
||||||
|
ELSE SUM(CASE WHEN template_zkteco IS NULL THEN 0 ELSE 1 END)
|
||||||
|
END AS TemplateExist
|
||||||
|
FROM attendance_machine_face_templates
|
||||||
|
WHERE is_active = 1 AND serial_no = @emp_id";
|
||||||
|
|
||||||
|
using (MySqlCommand command = new MySqlCommand(query, connection))
|
||||||
|
{
|
||||||
|
command.Parameters.AddWithValue("@emp_id", empId);
|
||||||
|
|
||||||
|
if (connection.State != ConnectionState.Open)
|
||||||
|
{
|
||||||
|
connection.Open();
|
||||||
|
}
|
||||||
|
|
||||||
|
using (MySqlDataReader reader = command.ExecuteReader())
|
||||||
|
{
|
||||||
|
if (reader.Read())
|
||||||
|
{
|
||||||
|
long empExist = reader.GetInt64(0); // First column (EmpExist)
|
||||||
|
long templateExist = reader.GetInt64(1); // Second column (TemplateExist)
|
||||||
|
|
||||||
|
return (empExist, templateExist);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//close connection
|
||||||
|
connection.Close();
|
||||||
|
return (0, 0); // Return (0, 0) if no data is found
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -134,6 +134,7 @@
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="MachineUsers\AttendanceMachineUserDAO.cs" />
|
<Compile Include="MachineUsers\AttendanceMachineUserDAO.cs" />
|
||||||
<Compile Include="MachineUsers\AttendanceMachineUsers.cs" />
|
<Compile Include="MachineUsers\AttendanceMachineUsers.cs" />
|
||||||
|
<Compile Include="SaveTemplate\SaveTemplateDb.cs" />
|
||||||
<Compile Include="WriteToTxtFile.cs" />
|
<Compile Include="WriteToTxtFile.cs" />
|
||||||
<EmbeddedResource Include="Polling.resx">
|
<EmbeddedResource Include="Polling.resx">
|
||||||
<DependentUpon>Polling.cs</DependentUpon>
|
<DependentUpon>Polling.cs</DependentUpon>
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1 +1 @@
|
||||||
e624d2b121c7896fcfa753a70d1d65c9f169c918
|
a4ea5cb743704c01c21ff9b787f6590f17ead844
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue