Browse Source

feat: Add my time zone settings

pull/1443/head
colin 5 days ago
parent
commit
e869f4d435
  1. 6
      aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/ITimeZoneSettingsAppService.cs
  2. 9
      aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/IUserTimeZoneSettingsAppService.cs
  3. 32
      aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/TimeZoneSettingsAppService.cs
  4. 19
      aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.HttpApi/LINGYUN/Abp/SettingManagement/TimeZoneSettingsController.cs

6
aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/ITimeZoneSettingsAppService.cs

@ -0,0 +1,6 @@
using IVoloTimeZoneSettingsAppService = Volo.Abp.SettingManagement.ITimeZoneSettingsAppService;
namespace LINGYUN.Abp.SettingManagement;
public interface ITimeZoneSettingsAppService : IVoloTimeZoneSettingsAppService, IUserTimeZoneSettingsAppService
{
}

9
aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/IUserTimeZoneSettingsAppService.cs

@ -0,0 +1,9 @@
using System.Threading.Tasks;
namespace LINGYUN.Abp.SettingManagement;
public interface IUserTimeZoneSettingsAppService
{
Task<string> GetMyTimezoneAsync();
Task SetMyTimezoneAsync(string timezone);
}

32
aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.Application/LINGYUN/Abp/SettingManagement/TimeZoneSettingsAppService.cs

@ -3,19 +3,25 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.DependencyInjection;
using Volo.Abp.MultiTenancy; using Volo.Abp.MultiTenancy;
using Volo.Abp.SettingManagement; using Volo.Abp.SettingManagement;
using Volo.Abp.Timing; using Volo.Abp.Timing;
using IVoloTimeZoneSettingsAppService = Volo.Abp.SettingManagement.ITimeZoneSettingsAppService;
namespace LINGYUN.Abp.SettingManagement; namespace LINGYUN.Abp.SettingManagement;
[Authorize(Volo.Abp.SettingManagement.SettingManagementPermissions.TimeZone)] [Authorize]
[ExposeServices(
typeof(ITimeZoneSettingsAppService),
typeof(IUserTimeZoneSettingsAppService),
typeof(IVoloTimeZoneSettingsAppService))]
public class TimeZoneSettingsAppService : SettingManagementAppServiceBase, ITimeZoneSettingsAppService public class TimeZoneSettingsAppService : SettingManagementAppServiceBase, ITimeZoneSettingsAppService
{ {
protected ISettingManager SettingManager { get; } protected ISettingManager SettingManager { get; }
protected ITimezoneProvider TimezoneProvider { get; } protected ITimezoneProvider TimezoneProvider { get; }
private const string UnspecifiedTimeZone = "Unspecified"; internal const string UnspecifiedTimeZone = "Unspecified";
public TimeZoneSettingsAppService(ISettingManager settingManager, ITimezoneProvider timezoneProvider) public TimeZoneSettingsAppService(ISettingManager settingManager, ITimezoneProvider timezoneProvider)
{ {
@ -23,7 +29,24 @@ public class TimeZoneSettingsAppService : SettingManagementAppServiceBase, ITime
TimezoneProvider = timezoneProvider; TimezoneProvider = timezoneProvider;
} }
public virtual async Task<string> GetAsync() public async virtual Task<string> GetMyTimezoneAsync()
{
return await SettingManager.GetOrNullForCurrentUserAsync(TimingSettingNames.TimeZone)
?? UnspecifiedTimeZone;
}
public async virtual Task SetMyTimezoneAsync(string timezone)
{
if (timezone.Equals(UnspecifiedTimeZone, StringComparison.OrdinalIgnoreCase))
{
timezone = null;
}
await SettingManager.SetForCurrentUserAsync(TimingSettingNames.TimeZone, timezone);
}
[Authorize(Volo.Abp.SettingManagement.SettingManagementPermissions.TimeZone)]
public async virtual Task<string> GetAsync()
{ {
var timezone = CurrentTenant.GetMultiTenancySide() == MultiTenancySides.Host var timezone = CurrentTenant.GetMultiTenancySide() == MultiTenancySides.Host
? await SettingManager.GetOrNullGlobalAsync(TimingSettingNames.TimeZone) ? await SettingManager.GetOrNullGlobalAsync(TimingSettingNames.TimeZone)
@ -48,7 +71,8 @@ public class TimeZoneSettingsAppService : SettingManagementAppServiceBase, ITime
return Task.FromResult(timezones); return Task.FromResult(timezones);
} }
public virtual async Task UpdateAsync(string timezone) [Authorize(Volo.Abp.SettingManagement.SettingManagementPermissions.TimeZone)]
public async virtual Task UpdateAsync(string timezone)
{ {
if (timezone.Equals(UnspecifiedTimeZone, StringComparison.OrdinalIgnoreCase)) if (timezone.Equals(UnspecifiedTimeZone, StringComparison.OrdinalIgnoreCase))
{ {

19
aspnet-core/modules/settings/LINGYUN.Abp.SettingManagement.HttpApi/LINGYUN/Abp/SettingManagement/TimeZoneSettingsController.cs

@ -4,14 +4,13 @@ using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.SettingManagement;
namespace LINGYUN.Abp.SettingManagement; namespace LINGYUN.Abp.SettingManagement;
[RemoteService(Name = AbpSettingManagementRemoteServiceConsts.RemoteServiceName)] [RemoteService(Name = AbpSettingManagementRemoteServiceConsts.RemoteServiceName)]
[Area(AbpSettingManagementRemoteServiceConsts.ModuleName)] [Area(AbpSettingManagementRemoteServiceConsts.ModuleName)]
[Route("api/setting-management/timezone")] [Route("api/setting-management/timezone")]
[Authorize(Volo.Abp.SettingManagement.SettingManagementPermissions.TimeZone)] [Authorize]
public class TimeZoneSettingsController : AbpControllerBase, ITimeZoneSettingsAppService public class TimeZoneSettingsController : AbpControllerBase, ITimeZoneSettingsAppService
{ {
private readonly ITimeZoneSettingsAppService _service; private readonly ITimeZoneSettingsAppService _service;
@ -22,11 +21,19 @@ public class TimeZoneSettingsController : AbpControllerBase, ITimeZoneSettingsAp
} }
[HttpGet] [HttpGet]
[Authorize(Volo.Abp.SettingManagement.SettingManagementPermissions.TimeZone)]
public virtual Task<string> GetAsync() public virtual Task<string> GetAsync()
{ {
return _service.GetAsync(); return _service.GetAsync();
} }
[HttpGet]
[Route("my-timezone")]
public virtual Task<string> GetMyTimezoneAsync()
{
return _service.GetMyTimezoneAsync();
}
[HttpGet] [HttpGet]
[Route("timezones")] [Route("timezones")]
public virtual Task<List<NameValue>> GetTimezonesAsync() public virtual Task<List<NameValue>> GetTimezonesAsync()
@ -35,6 +42,14 @@ public class TimeZoneSettingsController : AbpControllerBase, ITimeZoneSettingsAp
} }
[HttpPost] [HttpPost]
[Route("my-timezone")]
public virtual Task SetMyTimezoneAsync(string timezone)
{
return _service.SetMyTimezoneAsync(timezone);
}
[HttpPost]
[Authorize(Volo.Abp.SettingManagement.SettingManagementPermissions.TimeZone)]
public virtual Task UpdateAsync(string timezone) public virtual Task UpdateAsync(string timezone)
{ {
return _service.UpdateAsync(timezone); return _service.UpdateAsync(timezone);

Loading…
Cancel
Save