using GB5Shared.GenerateAutoNumber; namespace IceImportBLL.FieldResolvers; // ValueType = 7 (Auto Number). IceMapDetailsSourceFieldName carries the AutoNumber entity code to // allocate against (falls back to the row's own EntityCode/DestinationMemberMemberName), mirroring // how ValueType=1 overloads the same source field for a different purpose. public class AutoNumberResolver : IIceFieldValueResolver { public int ValueType => 7; private readonly AutoNumber _autoNumber; public AutoNumberResolver(AutoNumber autoNumber) => _autoNumber = autoNumber; public async Task ResolveAsync(FieldResolutionContext ctx, CancellationToken ct) { var entityCode = !string.IsNullOrWhiteSpace(ctx.DetailConfig.IceMapDetailsSourceFieldName) ? ctx.DetailConfig.IceMapDetailsSourceFieldName! : ctx.DetailConfig.EntityCode ?? ctx.DetailConfig.DestinationMemberMemberName ?? "ICEIMPORT"; var allocated = await _autoNumber.GetAutoNumber(1, entityCode, ctx.Login).ConfigureAwait(false); return FieldResolutionResult.Ok(allocated.StartNumber); } }