| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- using System;
- using Abp.Configuration;
- using Abp.Dependency;
- namespace Abp.Timing.Timezone
- {
- /// <summary>
- /// Time zone converter class
- /// </summary>
- public class TimeZoneConverter : ITimeZoneConverter, ITransientDependency
- {
- private readonly ISettingManager _settingManager;
- /// <summary>
- /// Constructor
- /// </summary>
- /// <param name="settingManager"></param>
- public TimeZoneConverter(ISettingManager settingManager)
- {
- _settingManager = settingManager;
- }
- /// <inheritdoc/>
- public DateTime? Convert(DateTime? date, int? tenantId, long userId)
- {
- if (!date.HasValue)
- {
- return null;
- }
- if (!Clock.SupportsMultipleTimezone)
- {
- return date;
- }
- var usersTimezone = _settingManager.GetSettingValueForUser(TimingSettingNames.TimeZone, tenantId, userId);
- if(string.IsNullOrEmpty(usersTimezone))
- {
- return date;
- }
-
- return TimezoneHelper.ConvertFromUtc(date.Value.ToUniversalTime(), usersTimezone);
- }
- /// <inheritdoc/>
- public DateTime? Convert(DateTime? date, int tenantId)
- {
- if (!date.HasValue)
- {
- return null;
- }
- if (!Clock.SupportsMultipleTimezone)
- {
- return date;
- }
- var tenantsTimezone = _settingManager.GetSettingValueForTenant(TimingSettingNames.TimeZone, tenantId);
- if (string.IsNullOrEmpty(tenantsTimezone))
- {
- return date;
- }
- return TimezoneHelper.ConvertFromUtc(date.Value.ToUniversalTime(), tenantsTimezone);
- }
-
- /// <inheritdoc/>
- public DateTime? Convert(DateTime? date)
- {
- if (!date.HasValue)
- {
- return null;
- }
- if (!Clock.SupportsMultipleTimezone)
- {
- return date;
- }
- var applicationsTimezone = _settingManager.GetSettingValueForApplication(TimingSettingNames.TimeZone);
- if (string.IsNullOrEmpty(applicationsTimezone))
- {
- return date;
- }
- return TimezoneHelper.ConvertFromUtc(date.Value.ToUniversalTime(), applicationsTimezone);
- }
- }
- }
|