using System.Data.Common; using EntitlementDAL.DTOs; using GB5Shared.DTO.Framework.Login; namespace EntitlementDAL.Interfaces; public interface IDemoDAL { Task GetVariantByIdAsync(int demoVariantId, LoginDTO login, CancellationToken ct); Task> GetVariantListAsync(LoginDTO login, CancellationToken ct); Task SaveVariantAsync(DemoVariantDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task UpdateVariantAsync(DemoVariantDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task GetPoolInstanceByIdAsync(int demoPoolInstanceId, LoginDTO login, CancellationToken ct); Task> GetPoolInstancesByVariantAsync(int demoVariantId, LoginDTO login, CancellationToken ct); Task GetOneAvailablePoolInstanceAsync(int demoVariantId, LoginDTO login, CancellationToken ct); Task SavePoolInstanceAsync(DemoPoolInstanceDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task UpdatePoolInstanceAsync(DemoPoolInstanceDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task UpdatePoolInstanceStateAsync(int demoPoolInstanceId, byte poolState, LoginDTO login, DbTransaction tx, CancellationToken ct); /// Optimistic claim — only actually flips the row if it's still Available at write /// time. Returns true iff this call is the one that won the race. Task TryClaimPoolInstanceAsync(int demoPoolInstanceId, LoginDTO login, DbTransaction tx, CancellationToken ct); Task GetSessionByIdAsync(int demoSessionId, LoginDTO login, CancellationToken ct); Task> GetSessionListByOwnerAsync(int ownerUserId, LoginDTO login, CancellationToken ct); Task> GetSessionsApproachingExpiryAsync(DateTime warningThreshold, LoginDTO login, CancellationToken ct); Task> GetExpiredSessionsAsync(DateTime now, LoginDTO login, CancellationToken ct); Task SaveSessionAsync(DemoSessionDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task RequestExtensionAsync(int demoSessionId, DateTime requestedOn, string? comment, LoginDTO login, DbTransaction tx, CancellationToken ct); Task ApproveExtensionAsync(int demoSessionId, DateTime newExpiresOn, int approvedById, DateTime approvedOn, LoginDTO login, DbTransaction tx, CancellationToken ct); Task RejectExtensionAsync(int demoSessionId, int rejectedById, DateTime rejectedOn, LoginDTO login, DbTransaction tx, CancellationToken ct); Task MarkWarningIssuedAsync(int demoSessionId, LoginDTO login, DbTransaction tx, CancellationToken ct); Task MarkExpiredAsync(int demoSessionId, LoginDTO login, DbTransaction tx, CancellationToken ct); Task MarkTornDownAsync(int demoSessionId, LoginDTO login, DbTransaction tx, CancellationToken ct); Task InsertSessionEventAsync(DemoSessionEventDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task> GetSessionEventsAsync(int demoSessionId, LoginDTO login, CancellationToken ct); /// Tracker §49 Decision 9 — one row per ClientId, captured at registration. Task GetPreferenceByClientIdAsync(int clientId, LoginDTO login, CancellationToken ct); Task SavePreferenceAsync(DemoPreferenceDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); }