using MySql.Data.MySqlClient; namespace HikvisionAttendanceManager.App.Services; public sealed class AttendanceMachineRepository { public async Task GetLastSyncDateAsync(string machineIp, CancellationToken cancellationToken) { await using var connection = HrmsConnectionFactory.CreateConnection(); await connection.OpenAsync(cancellationToken); await using var command = new MySqlCommand( "SELECT last_sync_date FROM hrms.attendance_machine WHERE machine_ip=@machine_ip LIMIT 1", connection); command.Parameters.AddWithValue("@machine_ip", machineIp); var value = await command.ExecuteScalarAsync(cancellationToken); return value is null or DBNull ? null : Convert.ToDateTime(value); } public async Task UpdateLastSyncDateAsync(string machineIp, DateTime lastSyncDate, CancellationToken cancellationToken) { await using var connection = HrmsConnectionFactory.CreateConnection(); await connection.OpenAsync(cancellationToken); await using var command = new MySqlCommand( "UPDATE hrms.attendance_machine SET last_sync_date=@last_sync_date WHERE machine_ip=@machine_ip", connection); command.Parameters.AddWithValue("@last_sync_date", lastSyncDate); command.Parameters.AddWithValue("@machine_ip", machineIp); await command.ExecuteNonQueryAsync(cancellationToken); } }