Fix colony attendance

main
muhammad.faique 2025-04-04 10:42:42 +05:00
parent a8837c4a10
commit fc3823feb8
10 changed files with 98 additions and 93 deletions

Binary file not shown.

View File

@ -113,10 +113,10 @@ namespace ZktecoAttendenceService
return responses; return responses;
} }
bool Bconnect = false; bool Bconnect = false;
public void DeleteFaceTemplate(AttendanceMachine machine, int Emp_ID, List<string> responses) public void DeleteFaceTemplate(zkemkeeper.CZKEMClass axCZKEM1, AttendanceMachine machine, int Emp_ID, List<string> responses)
{ {
Bconnect = axCZKEM1.Connect_Net(machine.MachineIp, machine.PortNumber); //Bconnect = axCZKEM1.Connect_Net(machine.MachineIp, machine.PortNumber);
axCZKEM1.EnableDevice(Convert.ToInt32(machine.MachineId), false);//disable the device //axCZKEM1.EnableDevice(Convert.ToInt32(machine.MachineId), false);//disable the device
try try
{ {
@ -128,9 +128,9 @@ namespace ZktecoAttendenceService
responses.Add(Emp_ID + " removed from " + machine.MachineId); responses.Add(Emp_ID + " removed from " + machine.MachineId);
MachineOutput = true; MachineOutput = true;
axCZKEM1.EnableDevice(Convert.ToInt32(machine.MachineId), true); //axCZKEM1.EnableDevice(Convert.ToInt32(machine.MachineId), true);
axCZKEM1.Disconnect(); //axCZKEM1.Disconnect();
} }
else else
{ {
@ -148,7 +148,7 @@ namespace ZktecoAttendenceService
public List<string> DeleteFromDbAndMachine(List<string> objDetail_Final, AttendanceMachine machine, MySqlConnection connection) public List<string> DeleteFromDbAndMachine(zkemkeeper.CZKEMClass cZKEM,List<string> objDetail_Final, AttendanceMachine machine, MySqlConnection connection)
{ {
List<string> responses = new List<string>(); List<string> responses = new List<string>();
@ -174,7 +174,7 @@ namespace ZktecoAttendenceService
if (dr["is_deletion_requested"].ToString() == "1") if (dr["is_deletion_requested"].ToString() == "1")
{ {
//removing face template //removing face template
DeleteFaceTemplate(machine, Convert.ToInt32(serial_no), responses); DeleteFaceTemplate(cZKEM, machine, Convert.ToInt32(serial_no), responses);
//Updating flag in db //Updating flag in db

View File

@ -65,88 +65,90 @@ namespace ZktecoAttendenceService
{ {
try try
{ {
List<string> responses = new List<string>();
AttendanceMachineDAO attendanceMachineDAO = new AttendanceMachineDAO();
AttendanceMachineUserDAO attendanceMachineUserDAO = new AttendanceMachineUserDAO();
using (var connection = ObjConnectionClass.Connection())
{ List<string> responses = new List<string>();
if (ObjConnectionClass.OpenConnection(connection)) AttendanceMachineDAO attendanceMachineDAO = new AttendanceMachineDAO();
AttendanceMachineUserDAO attendanceMachineUserDAO = new AttendanceMachineUserDAO();
using (var connection = ObjConnectionClass.Connection())
{ {
var machines = attendanceMachineDAO.getAttendanceMachines(connection, "0"); if (ObjConnectionClass.OpenConnection(connection))
foreach (var machine in machines)
{ {
var machines = attendanceMachineDAO.getAttendanceMachines(connection, "0");
//if (machine.MachineIp == "192.168.52.16") foreach (var machine in machines)
{ {
bool isConnected = axCZKEM1.Connect_Net(machine.MachineIp, Convert.ToInt32(machine.PortNumber));
if (isConnected) //if (machine.MachineIp == "192.168.50.8")
{ {
axCZKEM1.EnableDevice(Convert.ToInt32(machine.MachineId), false); bool isConnected = axCZKEM1.Connect_Net(machine.MachineIp, Convert.ToInt32(machine.PortNumber));
if (isConnected)
if (machine.MachineId != "100")
{ {
axCZKEM1.EnableDevice(Convert.ToInt32(machine.MachineId), false);
machine.Status = "SYNCING"; if (machine.MachineId != "100")
attendanceMachineDAO.update(machine, connection);
responses.AddRange(poolMachineData(machine.MachineIp, machine.PortNumber, Convert.ToInt16(machine.MachineId), connection));
machine.Status = "IDLE";
DateTime now = DateTime.Now.AddMinutes(-5);
machine.LastSyncDate = now;
Console.WriteLine(machine.MachineId + " => " + machine.LastSyncDate);
attendanceMachineDAO.update(machine, connection);
List<string> newResponses = new List<string>();
GetAllFaceInfo(machine);
attendanceMachineUserDAO.UpdateTotalEmpInMachines(machine.MachineId, empList.Count, connection);
newResponses = attendanceMachineUserDAO.DeleteFromDbAndMachine(empList, machine, connection);
if (newResponses.Count != 0)
{ {
responses.AddRange(newResponses);
machine.Status = "SYNCING";
attendanceMachineDAO.update(machine, connection);
responses.AddRange(poolMachineData(machine.MachineIp, machine.PortNumber, Convert.ToInt16(machine.MachineId), connection));
machine.Status = "IDLE";
DateTime now = DateTime.Now.AddMinutes(-5);
machine.LastSyncDate = now;
Console.WriteLine(machine.MachineId + " => " + machine.LastSyncDate);
attendanceMachineDAO.update(machine, connection);
List<string> newResponses = new List<string>();
GetAllFaceInfo(axCZKEM1, machine);
attendanceMachineUserDAO.UpdateTotalEmpInMachines(machine.MachineId, empList.Count, connection);
newResponses = attendanceMachineUserDAO.DeleteFromDbAndMachine(axCZKEM1, empList, machine, connection);
if (newResponses.Count != 0)
{
responses.AddRange(newResponses);
}
//Saving the templates to the database
//SaveTemplateDb saveTemplateDb = new SaveTemplateDb();
//saveTemplateDb.InsertFaceIntoDb(machine, connection, axCZKEM1);
empList = new List<string>();
axCZKEM1.EnableDevice(Convert.ToInt32(machine.MachineId), true);
Cursor = Cursors.Default;
axCZKEM1.Disconnect();
} }
else
{
machine.Status = "SYNCING";
attendanceMachineDAO.updateColony(machine, connection);
responses.AddRange(poolMachineDataColony(machine.MachineIp, machine.PortNumber, Convert.ToInt16(machine.MachineId),connection));
machine.Status = "IDLE";
//Saving the templates to the database DateTime now = DateTime.Now.AddMinutes(-5);
//SaveTemplateDb saveTemplateDb = new SaveTemplateDb(); machine.LastSyncDate = now;
//saveTemplateDb.InsertFaceIntoDb(machine, connection,axCZKEM1); Console.WriteLine(machine.MachineId + " => " + machine.LastSyncDate);
attendanceMachineDAO.updateColony(machine, connection);
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(); }
} }
else else
{ {
machine.Status = "SYNCING"; responses.Add("MACHINE : " + machine.MachineIp + " : NOT CONNECTED");
attendanceMachineDAO.updateColony(machine, connection); machine.Status = "NOT CONNECTED";
responses.AddRange(poolMachineDataColony(machine.MachineIp, machine.PortNumber, Convert.ToInt16(machine.MachineId))); attendanceMachineDAO.update(machine, connection);
machine.Status = "IDLE";
DateTime now = DateTime.Now.AddMinutes(-5);
machine.LastSyncDate = now;
Console.WriteLine(machine.MachineId + " => " + machine.LastSyncDate);
attendanceMachineDAO.updateColony(machine, connection);
axCZKEM1.EnableDevice(Convert.ToInt32(machine.MachineId), true);
Cursor = Cursors.Default;
axCZKEM1.Disconnect();
} }
} }
else
{
responses.Add("MACHINE : " + machine.MachineIp + " : NOT CONNECTED");
machine.Status = "NOT CONNECTED";
attendanceMachineDAO.update(machine, connection);
}
} }
} }
} }
}
return responses; return responses;
} }
catch catch
{ {
@ -155,7 +157,7 @@ namespace ZktecoAttendenceService
} }
} }
public List<string> poolMachineDataColony(string ip, int port, int machineId) public List<string> poolMachineDataColony(string ip, int port, int machineId, MySqlConnection connection)
{ {
List<string> responses = new List<string>(); List<string> responses = new List<string>();
@ -258,7 +260,7 @@ namespace ZktecoAttendenceService
//if(axCZKEM1.ReadGeneralLogData(machineId)) //if(axCZKEM1.ReadGeneralLogData(machineId))
if(axCZKEM1.ReadAllGLogData(machineId)) if (axCZKEM1.ReadAllGLogData(machineId))
// Connect and read attendance records // Connect and read attendance records
//if (axCZKEM1.ReadTimeGLogData(machineId, startTimeFormatted, endTimeFormatted)) // read all the attendance records into memory //if (axCZKEM1.ReadTimeGLogData(machineId, startTimeFormatted, endTimeFormatted)) // read all the attendance records into memory
@ -305,7 +307,8 @@ namespace ZktecoAttendenceService
axCZKEM1.GetLastError(ref errorCode); // Get the last error code axCZKEM1.GetLastError(ref errorCode); // Get the last error code
responses.Add($"MACHINE: {ip} - No data available."); responses.Add($"MACHINE: {ip} - No data available.");
//MessageBox.Show(errorCode.ToString()); //MessageBox.Show(errorCode.ToString());
; } ;
}
return responses; return responses;
} }
@ -317,26 +320,26 @@ namespace ZktecoAttendenceService
} }
public List<string> GetAllFaceInfo(AttendanceMachine machine) public List<string> GetAllFaceInfo(zkemkeeper.CZKEMClass axCZKEM1, AttendanceMachine machine)
{ {
bool Bconnect = false; bool Bconnect = false;
string sdwEnrollNumber = string.Empty, sName = string.Empty, sPassword = string.Empty; string sdwEnrollNumber = string.Empty, sName = string.Empty, sPassword = string.Empty;
int iPrivilege = 0, iFaceIndex = 0, iFlag = 0, iTmpLength = 0; int iPrivilege = 0, iFaceIndex = 0, iFlag = 0, iTmpLength = 0;
bool bEnabled = false; bool bEnabled = false;
Bconnect = axCZKEM1.Connect_Net(machine.MachineIp, Convert.ToInt32(machine.PortNumber)); //Bconnect = axCZKEM1.Connect_Net(machine.MachineIp, Convert.ToInt32(machine.PortNumber));
axCZKEM1.EnableDevice(Convert.ToInt16(machine.MachineId), false);//disable the device //axCZKEM1.EnableDevice(Convert.ToInt16(machine.MachineId), false);//disable the device
if (Bconnect == true) //if (Bconnect == true)
//{
//objZkeeper.ReadAllUserID(machineNumber);
axCZKEM1.ReadAllTemplate(Convert.ToInt16(machine.MachineId));
while (axCZKEM1.SSR_GetAllUserInfo(Convert.ToInt16(machine.MachineId), out sdwEnrollNumber, out sName, out sPassword, out iPrivilege, out bEnabled))
{ {
//objZkeeper.ReadAllUserID(machineNumber); empList.Add(sdwEnrollNumber);
axCZKEM1.ReadAllTemplate(Convert.ToInt16(machine.MachineId));
while (axCZKEM1.SSR_GetAllUserInfo(Convert.ToInt16(machine.MachineId), out sdwEnrollNumber, out sName, out sPassword, out iPrivilege, out bEnabled))
{
empList.Add(sdwEnrollNumber);
}
} }
//}
return empList; return empList;
} }
public string GetTotalFromMachine(int MachineID) public string GetTotalFromMachine(int MachineID)

View File

@ -31,6 +31,8 @@ namespace ZktecoAttendenceService
List<(string, string,long,long)> empTemplateList = new List<(string, string,long,long)>(); List<(string, string,long,long)> empTemplateList = new List<(string, string,long,long)>();
// Get all emp // Get all emp
while (axCZKEM1.SSR_GetAllUserInfo(machineNo, out empID, out sName, out sPassword, out iPrivilege, out bEnabled)) while (axCZKEM1.SSR_GetAllUserInfo(machineNo, out empID, out sName, out sPassword, out iPrivilege, out bEnabled))
{ {
{ {