using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using MMDAL.DTO.PartLevel; using MMDAL.Query.PartLevel; namespace MMDAL.CustomCode.PartLevel { public class PartLevelWorkbenchDAL : IPartLevelWorkbenchDAL { private readonly IQueryExecutor _QueryExecutor; public PartLevelWorkbenchDAL(IQueryExecutor queryExecutor) => _QueryExecutor = queryExecutor; public async Task> GetPartLevelWorkbench( PartLevelWorkbenchCriteriaDTO criteria, LoginDTO loginDTO, CancellationToken ct) { var (dataSql, countSql, p) = PartLevelWorkbenchQB.BuildWorkbench(criteria); var items = await _QueryExecutor .QueryAsync(loginDTO, dataSql, p, cancellationToken: ct) .ConfigureAwait(false); var total = await _QueryExecutor .ExecuteScalarAsync(loginDTO, countSql, p, cancellationToken: ct) .ConfigureAwait(false); return new PagedResult { Items = items?.ToList() ?? [], TotalCount = total }; } public async Task> GetPartLevelWIPSummary( int? allocationId, LoginDTO loginDTO, CancellationToken ct) { var p = new Dapper.DynamicParameters(); string extra = string.Empty; if (allocationId.HasValue) { extra = "AND pd.ALLOCATIONID = @AllocationId"; p.Add("AllocationId", allocationId.Value); } string sql = string.Format(PartLevelWorkbenchQB.GET_PART_LEVEL_WIP_SUMMARY, extra); return await _QueryExecutor .QueryAsync(loginDTO, sql, p, cancellationToken: ct) .ConfigureAwait(false) ?? []; } public async Task> GetAllocationPriorityView( LoginDTO loginDTO, CancellationToken ct) => await _QueryExecutor .QueryAsync( loginDTO, PartLevelWorkbenchQB.GET_ALLOCATION_PRIORITY_VIEW, null, cancellationToken: ct) .ConfigureAwait(false) ?? []; } }