using EAIAdminDAL.DTO; using GB5Shared.DTO.Framework.Login; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace EAIAdminDAL.CustomCode { public interface IEAIContextSettingDAL { Task> GetSettingListAsync( int contextKeyDefinitionId, LoginDTO login, CancellationToken ct = default); Task GetSettingAsync( int contextSettingId, LoginDTO login, CancellationToken ct = default); Task InsertSettingAsync( EAIContextSettingDTO dto, int ownerTenantId, LoginDTO login, CancellationToken ct = default); Task UpdateSettingAsync( EAIContextSettingDTO dto, LoginDTO login, CancellationToken ct = default); Task DeleteSettingAsync( int contextSettingId, LoginDTO login, CancellationToken ct = default); /// Resolver read path — every MEAICONTEXTSETTING row that could possibly match /// this request (Global + this tenant's matching ClientAttribute/Client/Role/OU/User /// rows). Ranking/composition happens in IEAIContextResolver, not here. Task> GetCandidateSettingsForResolutionAsync( int tenantId, int roleId, int workOUId, int userId, IReadOnlyList classificationValues, LoginDTO login, CancellationToken ct = default); Task> GetClassificationValuesForTenantAsync( int tenantId, LoginDTO login, CancellationToken ct = default); /// Local MUSER lookup — the resolver's only dependency on user identity beyond /// what the caller already supplies. Not FrameworkDAL.IUserDAL: that lives in a separate, /// standalone host process not referenced by PlatformHost (same boundary that made /// EAIAdmin its own module in Part 1). Returns null if the user doesn't exist in this /// tenant. Task GetUserRoleAndOuAsync( int userId, int tenantId, LoginDTO login, CancellationToken ct = default); } }