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();