using System;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Localization;
using Volo.Abp.Settings;
namespace Sozsoft.Notifications.Domain;
///
/// Bildirim metninin (tarih, sayi, dil anahtari) uretildigi kultur. Istek disinda (worker) is
/// parcaciginin kulturu surec varsayilanidir; alicinin kendi dil tercihi platformda saklanmaz
/// (dil istekte Accept-Language ile gelir), bu yuzden ulasilabilen en yakin deger
/// kiracinin Abp.Localization.DefaultLanguage ayaridir (kiraci → global → varsayilan).
///
public interface INotificationCulture
{
Task UseAsync();
}
public class NotificationCulture(ISettingProvider settingProvider) : INotificationCulture, ITransientDependency
{
public async Task UseAsync()
{
var culture = await settingProvider.GetOrNullAsync(LocalizationSettingNames.DefaultLanguage);
return culture.IsNullOrWhiteSpace() || !CultureHelper.IsValidCultureCode(culture!)
? NullDisposable.Instance
: CultureHelper.Use(culture!);
}
}