feat: detect active registered machine users for skip logic

Active serial lookup used before device enrollment.
main
SYED MUSTUFA AHMED NAQVI 2026-09-04 12:41:24 +05:00
parent b9f2216207
commit 2719e53338
1 changed files with 55 additions and 0 deletions

View File

@ -122,6 +122,61 @@ namespace HanvonF710XAttendanceService
} }
} }
/// <summary>
/// True when attendance_machine_user has an active row for this machine + device serial.
/// </summary>
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<string> GetActiveSerialNumbersForMachine(MySqlConnection connection, string machineId)
{
var serials = new HashSet<string>(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<AttendanceMachineUser> getDBUsers(MySqlDataReader reader) private List<AttendanceMachineUser> getDBUsers(MySqlDataReader reader)
{ {
List<AttendanceMachineUser> DbUsers = new List<AttendanceMachineUser>(); List<AttendanceMachineUser> DbUsers = new List<AttendanceMachineUser>();