using System.Threading.Tasks; using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Wms.Store.Domain.Acl.Location; namespace Win_in.Sfs.Wms.Store.Event; public static class IHasLocationExtensions { public static async Task TrySetLocationAsync(this IHasLocation hasLocation, ILocationAclService locationAclService, string locationCode) { if (string.IsNullOrEmpty(hasLocation.LocationErpCode)) { var location = await locationAclService.GetByCodeAsync(locationCode).ConfigureAwait(false); if (location != null) { hasLocation.LocationErpCode = location.ErpLocationCode; hasLocation.WarehouseCode = location.WarehouseCode; hasLocation.LocationArea = location.AreaCode; hasLocation.LocationGroup = location.LocationGroupCode; } } } public static async Task TrySetLocationAsync(this IHasFromToLocation hasFromTolocation, ILocationAclService locationAclService) { if (string.IsNullOrEmpty(hasFromTolocation.FromLocationErpCode)) { var location = await locationAclService.GetByCodeAsync(hasFromTolocation.FromLocationCode).ConfigureAwait(false); if (location != null) { hasFromTolocation.FromLocationErpCode = location.ErpLocationCode; hasFromTolocation.FromLocationGroup = location.LocationGroupCode; hasFromTolocation.FromLocationArea = location.AreaCode; if (string.IsNullOrEmpty(hasFromTolocation.FromWarehouseCode)) { hasFromTolocation.FromWarehouseCode = location.WarehouseCode; } } } if (string.IsNullOrEmpty(hasFromTolocation.ToLocationErpCode)) { var location = await locationAclService.GetByCodeAsync(hasFromTolocation.ToLocationCode).ConfigureAwait(false); if (location != null) { hasFromTolocation.ToLocationArea = location.AreaCode; hasFromTolocation.ToLocationGroup = location.LocationGroupCode; hasFromTolocation.ToLocationErpCode = location.ErpLocationCode; if (string.IsNullOrEmpty(hasFromTolocation.ToWarehouseCode)) { hasFromTolocation.ToWarehouseCode = location.WarehouseCode; } } } } }