erp-platform/api/src/Erp.Platform.Domain/Queries/DefaultValueHelper.cs
2025-11-12 15:59:31 +03:00

67 lines
2.2 KiB
C#

using System;
using System.Globalization;
using Erp.Platform;
using Volo.Abp.DependencyInjection;
using Volo.Abp.MultiTenancy;
using Volo.Abp.Timing;
using Volo.Abp.Users;
public class DefaultValueHelper : ITransientDependency
{
private readonly ICurrentUser _currentUser;
private readonly ICurrentTenant _currentTenant;
private readonly IClock _clock;
public DefaultValueHelper(
ICurrentUser currentUser,
ICurrentTenant currentTenant,
IClock clock
)
{
_currentUser = currentUser;
_currentTenant = currentTenant;
_clock = clock;
}
public string GetDefaultValue(string strValue)
{
if (string.IsNullOrEmpty(strValue))
return strValue;
var now = _clock.Now;
var result = strValue
.Replace(PlatformConsts.DefaultValues.UserId, _currentUser.Id?.ToString() ?? Guid.Empty.ToString())
.Replace(PlatformConsts.DefaultValues.UserName, _currentUser.UserName ?? string.Empty)
.Replace(PlatformConsts.DefaultValues.Roles, string.Join("','", _currentUser.Roles ?? []))
.Replace(PlatformConsts.DefaultValues.Now, now.ToString("O", CultureInfo.InvariantCulture))
.Replace(PlatformConsts.DefaultValues.Day, now.Day.ToString(CultureInfo.InvariantCulture))
.Replace(PlatformConsts.DefaultValues.Month, now.Month.ToString(CultureInfo.InvariantCulture))
.Replace(PlatformConsts.DefaultValues.Year, now.Year.ToString(CultureInfo.InvariantCulture));
// 🔹 TenantId özel durumu: NULL => IS NULL, varsa => = 'GUID'
if (_currentTenant?.Id.HasValue == true)
{
result = result.Replace(
$"= '{PlatformConsts.DefaultValues.TenantId}'",
$"= '{_currentTenant.Id}'"
).Replace(
PlatformConsts.DefaultValues.TenantId,
_currentTenant.Id.ToString()
);
}
else
{
result = result.Replace(
$"= '{PlatformConsts.DefaultValues.TenantId}'",
"IS NULL"
).Replace(
PlatformConsts.DefaultValues.TenantId,
"NULL"
);
}
return result;
}
}