From 2719e533389c2c6ab8287458ea00f446c705fbbb Mon Sep 17 00:00:00 2001 From: Syed Mustafa Ahmed Naqvi Date: Fri, 4 Sep 2026 12:41:24 +0500 Subject: [PATCH] feat: detect active registered machine users for skip logic Active serial lookup used before device enrollment. --- AttendanceMachineUserDAO.cs | 55 +++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/AttendanceMachineUserDAO.cs b/AttendanceMachineUserDAO.cs index 999ebf6..a4d0556 100644 --- a/AttendanceMachineUserDAO.cs +++ b/AttendanceMachineUserDAO.cs @@ -122,6 +122,61 @@ namespace HanvonF710XAttendanceService } } + /// + /// True when attendance_machine_user has an active row for this machine + device serial. + /// + public bool IsActiveRegistered(MySqlConnection connection, string machineId, string serialNumber) + { + if (string.IsNullOrWhiteSpace(machineId) || string.IsNullOrWhiteSpace(serialNumber)) + { + return false; + } + + const string query = + "SELECT 1 FROM hrms.attendance_machine_user " + + "WHERE machine_id = @MachineId AND serial_number = @SerialNumber AND is_deleted = 0 LIMIT 1"; + using (var cmd = new MySqlCommand(query, connection)) + { + cmd.CommandTimeout = 60; + cmd.Parameters.AddWithValue("@MachineId", machineId); + cmd.Parameters.AddWithValue("@SerialNumber", serialNumber.Trim()); + var result = cmd.ExecuteScalar(); + return result != null && result != DBNull.Value; + } + } + + public HashSet GetActiveSerialNumbersForMachine(MySqlConnection connection, string machineId) + { + var serials = new HashSet(StringComparer.OrdinalIgnoreCase); + if (string.IsNullOrWhiteSpace(machineId)) + { + return serials; + } + + const string query = + "SELECT serial_number FROM hrms.attendance_machine_user " + + "WHERE machine_id = @MachineId AND is_deleted = 0"; + using (var cmd = new MySqlCommand(query, connection)) + { + cmd.CommandTimeout = 120; + cmd.Parameters.AddWithValue("@MachineId", machineId); + using (var reader = cmd.ExecuteReader()) + { + while (reader.Read()) + { + if (reader.IsDBNull(0)) continue; + var s = reader.GetString(0)?.Trim(); + if (!string.IsNullOrWhiteSpace(s)) + { + serials.Add(s); + } + } + } + } + + return serials; + } + private List getDBUsers(MySqlDataReader reader) { List DbUsers = new List();