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);
}