Quota: check recalculate quota

This commit is contained in:
Nikolay Rechkin 2022-09-02 11:25:27 +03:00
parent 120c9b3bdb
commit 56102771ee
2 changed files with 19 additions and 17 deletions

View File

@ -335,24 +335,15 @@ public class SettingsController : BaseSettingsController
public void RecalculateQuota()
{
_permissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);
_quotaSyncOperation.RunJob(_tenantManager.GetCurrentTenant());
_quotaSyncOperation.RecalculateQuota(_tenantManager.GetCurrentTenant());
}
//[HttpGet("checkrecalculatequota")]
//public bool CheckRecalculateQuota()
//{
// PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);
// var task = quotaTasks.GetTasks().FirstOrDefault(t => t.GetProperty<int>(QuotaSync.IdKey) == Tenant.Id);
// if (task != null && task.Status == DistributedTaskStatus.Completed)
// {
// quotaTasks.RemoveTask(task.Id);
// return false;
// }
// return task != null;
//}
[HttpGet("checkrecalculatequota")]
public bool CheckRecalculateQuota()
{
_permissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);
return _quotaSyncOperation.CheckRecalculateQuota(_tenantManager.GetCurrentTenant());
}
[HttpGet("logo")]
public object GetLogo()

View File

@ -43,7 +43,7 @@ public class QuotaSyncOperation
_progressQueue = queueFactory.CreateQueue(CUSTOM_DISTRIBUTED_TASK_QUEUE_NAME);
}
public void RunJob(Tenant tenant)
public void RecalculateQuota(Tenant tenant)
{
var item = _progressQueue.GetAllTasks<QuotaSyncJob>().FirstOrDefault(t => t.TenantId == tenant.Id);
if (item != null && item.IsCompleted)
@ -62,6 +62,17 @@ public class QuotaSyncOperation
item.PublishChanges();
}
public bool CheckRecalculateQuota(Tenant tenant)
{
var item = _progressQueue.GetAllTasks<QuotaSyncJob>().FirstOrDefault(t => t.TenantId == tenant.Id);
if (item != null && item.IsCompleted)
{
_progressQueue.DequeueTask(item.Id);
return false;
}
return item != null;
}
public static class QuotaSyncOperationExtension
{