using AccountsDAL.CustomCode.Warehouse; using GB5Shared.DTO.Framework.Login; namespace AccountsBLL.Warehouse { // Admin ETL for DIMOU — see WarehouseDimQB.POPULATE_DIMOU for the source-chain rationale. This // is a one-time/repeatable full-dimension refresh (MERGE upsert), not CRUD — DIMOU has no // natural single-row create/edit UI use case, per the GB5 Data Warehouse developer guide // section 09.2. public class WarehouseDimBLL : IWarehouseDimBLL { private readonly IWarehouseDimDAL _warehouseDimDAL; public WarehouseDimBLL(IWarehouseDimDAL warehouseDimDAL) { _warehouseDimDAL = warehouseDimDAL; } public async Task PopulateDimOuAsync(LoginDTO loginDTO, CancellationToken ct) { var actions = await _warehouseDimDAL.PopulateDimOuAsync(loginDTO, ct).ConfigureAwait(false); return new WarehouseDimPopulateResultDTO { InsertedCount = actions.Count(a => string.Equals(a, "INSERT", StringComparison.OrdinalIgnoreCase)), UpdatedCount = actions.Count(a => string.Equals(a, "UPDATE", StringComparison.OrdinalIgnoreCase)), TotalRows = actions.Count }; } } }