diff --git a/products/ASC.Files/Core/ApiModels/RequestDto/LinkRequestDto.cs b/products/ASC.Files/Core/ApiModels/RequestDto/LinkRequestDto.cs index 63adbf501c..14ead26dd6 100644 --- a/products/ASC.Files/Core/ApiModels/RequestDto/LinkRequestDto.cs +++ b/products/ASC.Files/Core/ApiModels/RequestDto/LinkRequestDto.cs @@ -31,7 +31,7 @@ public class LinkRequestDto public Guid LinkId { get; set; } public string Title { get; set; } public FileShare Access { get; set; } - public ApiDateTime ExpirationDate { get; set; } + public DateTime? ExpirationDate { get; set; } public LinkType LinkType { get; set; } public string Password { get; set; } public bool Disabled { get; set; } diff --git a/products/ASC.Files/Core/Core/FileStorageService.cs b/products/ASC.Files/Core/Core/FileStorageService.cs index 0c143ad176..0c4e5a4661 100644 --- a/products/ASC.Files/Core/Core/FileStorageService.cs +++ b/products/ASC.Files/Core/Core/FileStorageService.cs @@ -89,6 +89,7 @@ public class FileStorageService //: IFileStorageService private readonly TenantQuotaFeatureStatHelper _tenantQuotaFeatureStatHelper; private readonly QuotaSocketManager _quotaSocketManager; private readonly ExternalShare _externalShare; + private readonly TenantUtil _tenantUtil; public FileStorageService( Global global, @@ -147,7 +148,8 @@ public class FileStorageService //: IFileStorageService StudioNotifyService studioNotifyService, TenantQuotaFeatureStatHelper tenantQuotaFeatureStatHelper, QuotaSocketManager quotaSocketManager, - ExternalShare externalShare) + ExternalShare externalShare, + TenantUtil tenantUtil) { _global = global; _globalStore = globalStore; @@ -206,6 +208,7 @@ public class FileStorageService //: IFileStorageService _tenantQuotaFeatureStatHelper = tenantQuotaFeatureStatHelper; _quotaSocketManager = quotaSocketManager; _externalShare = externalShare; + _tenantUtil = tenantUtil; } public async Task> GetFolderAsync(T folderId) @@ -3346,9 +3349,11 @@ public class FileStorageService //: IFileStorageService DenyDownload = denyDownload }; - if (expirationDate != DateTime.MinValue && expirationDate > DateTime.UtcNow) + var expirationDateUtc = _tenantUtil.DateTimeToUtc(expirationDate); + + if (expirationDateUtc != DateTime.MinValue && expirationDateUtc > DateTime.UtcNow) { - options.ExpirationDate = expirationDate; + options.ExpirationDate = expirationDateUtc; } if (!string.IsNullOrEmpty(password)) diff --git a/products/ASC.Files/Server/Api/VirtualRoomsController.cs b/products/ASC.Files/Server/Api/VirtualRoomsController.cs index 87b22cc6e6..b715b654e5 100644 --- a/products/ASC.Files/Server/Api/VirtualRoomsController.cs +++ b/products/ASC.Files/Server/Api/VirtualRoomsController.cs @@ -407,7 +407,7 @@ public abstract class VirtualRoomsController : ApiControllerBase { LinkType.Invitation => await _fileStorageService.SetInvitationLinkAsync(id, inDto.LinkId, inDto.Title, inDto.Access), LinkType.External => await _fileStorageService.SetExternalLinkAsync(id, FileEntryType.Folder, inDto.LinkId, inDto.Title, - inDto.Access is not (FileShare.Read or FileShare.None) ? FileShare.Read : inDto.Access , inDto.ExpirationDate, inDto.Password, inDto.Disabled, inDto.DenyDownload), + inDto.Access is not (FileShare.Read or FileShare.None) ? FileShare.Read : inDto.Access , inDto.ExpirationDate ?? default, inDto.Password, inDto.Disabled, inDto.DenyDownload), _ => throw new InvalidOperationException() };