29 lines
1.4 KiB
C#
29 lines
1.4 KiB
C#
using MySql.Data.MySqlClient;
|
|
|
|
namespace HikvisionAttendanceManager.App.Services;
|
|
|
|
public sealed class AttendanceMachineRepository
|
|
{
|
|
public async Task<DateTime?> 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);
|
|
}
|
|
}
|