using System; using System.Collections.Generic; namespace HikvisionAttendanceService.Data; internal interface IHrmsDbConnectionFactory { string BuildConnectionStringMasked(); bool TryBuildConnectionString(out string connectionString, out string error); } internal interface IAttendanceMachineRepository { List GetActiveMachines(string? machineTypeFilter, out string error); void UpdateMachineSyncState(string machineIp, string status, DateTime? lastSyncDate, int? totalUsers, out string error); bool TryGetMachineLastSyncDate(string machineIp, out DateTime? lastSyncDate, out string error); bool UpdateMachineLastSyncDate(string machineIp, DateTime lastSyncDate, out string error); } internal interface IAttendanceLogRepository { bool UpsertAttendance( string acNo, DateTime checkTime, int processed, string machineId, int inOutTypeId, string machineIp, DateTime dateOnly, out string error); } internal interface IAttendanceMachineUserRepository { List GetActiveUsersByMachine(string machineId, out string error); List GetPendingDeletionUsersByMachine(string machineId, out string error); bool UpsertMachineUser(string machineId, string serialNumber, string employeeName, out string error); bool MarkDeleted(string machineId, string serialNumber, string updatedBy, out string error); } internal interface IAttendanceMachineFaceTemplateRepository { bool UpsertFaceTemplate(string serialNo, byte[] template, DateTime createdDate, bool isActive, out string error); bool TryGetActiveFaceTemplateBySerial(string serialNo, out AttendanceMachineFaceTemplateRow? row, out string error); }