using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using PIEDAL.DTO.QC; using PIEDAL.Query.QC; namespace PIEDAL.CustomCode.QC; /// /// PIE QC sub-domain — read-only DAL implementation. /// Queries MPIEVARIANT × MPIEVARIANTIMPLICATION for behavior matrix; /// MPIEUATSCENARIO for test templates. /// public class PIEQcDAL : IPIEQcDAL { private readonly IQueryExecutor _QueryExecutor; public PIEQcDAL(IQueryExecutor queryExecutor) { _QueryExecutor = queryExecutor; } public async Task GetBehaviorMatrixHeaderAsync( Guid moduleId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QuerySingleAsync( login, PIEQcQB.GET_BEHAVIOR_MATRIX_HEADER, new { ModuleId = moduleId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task> GetBehaviorMatrixRowsAsync( Guid moduleId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, PIEQcQB.GET_BEHAVIOR_MATRIX, new { ModuleId = moduleId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); public async Task> GetTestTemplatesAsync( Guid moduleId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, PIEQcQB.GET_TEST_TEMPLATES, new { ModuleId = moduleId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); }