using Fitness_core_BE.DTOs; using Fitness_core_BE.DTOs.AccessDevice; using Fitness_core_BE.Models; namespace Fitness_core_BE.Interfaces.Services { public interface IAccessDeviceService { Task AddDevice(object payload); Task RemoveDevice(object payload); Task GeneratePairingCode(object payload); Task WhiteListMember(Guid memberId); Task BlackListMember(Guid memberId); // Manual/auto lock (req 7) — wraps WhiteListMember/BlackListMember and mirrors the // result onto Customer.IsLocked/LockReason/LockedAt. Task LockCustomer(Guid customerId, string reason); Task UnlockCustomer(Guid customerId); Task UpdateDeviceProfile(Customer customer); Task AddUser(CustomerAccess cusDevice); // Dedup + persist attendance. Reused by the agent attendance ingestion endpoint. Task SaveAttendanceRecords(Guid clientId, List attendanceList); // Fingerprint-enrolled-directly-on-device reconciliation (req 3). Task> GetUnlinkedFingerprintsAsync(Guid clientId); Task LinkFingerprintAsync(Guid clientId, Guid customerId, Guid unlinkedEnrollmentId); Task EnsureAccessProfileAsync( Guid clientId, Guid userId, string personType, string displayName, bool queueProvisioning = true); Task ProvisionProfilesToDeviceAsync(AccessDevice device); Task SetUserAccessAsync(Guid clientId, Guid userId, bool enabled, string? reason); Task SetCustomerAccessAsync(Guid clientId, Guid customerId, bool enabled, string? reason); /// /// Queues a face photo for enrolment into the gym's Hikvision terminals. The image /// travels in the command payload only -- it is purged once a terminal confirms. /// Task SetCustomerFacePhotoAsync(Guid clientId, Guid customerId, string base64Jpeg); Task SetStaffAccessAsync(Guid clientId, Guid staffId, bool enabled, string? reason); Task LinkDevicePersonAsync( Guid clientId, Guid userId, string personType, string displayName, Guid unlinkedEnrollmentId); Task LinkStaffFingerprintAsync( Guid clientId, Guid staffId, Guid unlinkedEnrollmentId); Task GetAccessStatusAsync(Guid clientId, Guid userId); } }