using GB5Shared.DTO.Framework.Login; using PIEDAL.CustomCode.QC; using PIEDAL.DTO.QC; namespace PIEBLL.QC; /// /// PIE QC sub-domain — business logic. /// Assembles the behavior matrix (header + rows) and delegates test template retrieval. /// Read-only: no writes, no transactions, no cache invalidation. /// public class PIEQcBLL : IPIEQcBLL { private readonly IPIEQcDAL _PIEQcDAL; public PIEQcBLL(IPIEQcDAL pieQcDAL) { _PIEQcDAL = pieQcDAL; } /// public async Task GetPIEBehaviorMatrixAsync( Guid moduleId, LoginDTO login, CancellationToken ct) { // Fetch header and rows in parallel var headerTask = _PIEQcDAL.GetBehaviorMatrixHeaderAsync(moduleId, login, ct); var rowsTask = _PIEQcDAL.GetBehaviorMatrixRowsAsync(moduleId, login, ct); await Task.WhenAll(headerTask, rowsTask).ConfigureAwait(false); var header = await headerTask; if (header is null) return null; // Module not found header.Rows = (await rowsTask).ToList(); return header; } /// public async Task> GetPIETestTemplatesAsync( Guid moduleId, LoginDTO login, CancellationToken ct) => await _PIEQcDAL.GetTestTemplatesAsync(moduleId, login, ct).ConfigureAwait(false); }