mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-13 16:52:56 -07:00
feat(request-limits): ✨ Added in the main logic for the new request limits
This commit is contained in:
parent
f73bccbea7
commit
70d5bf52bf
10 changed files with 2706 additions and 39 deletions
|
@ -566,7 +566,7 @@ namespace Ombi.Core.Engine
|
|||
{
|
||||
var langCode = await DefaultLanguageCode(null);
|
||||
var collections = await Cache.GetOrAddAsync($"GetCollection{collectionId}{langCode}",
|
||||
() => MovieApi.GetCollection(langCode, collectionId, cancellationToken), DateTimeOffset.Now.AddDays(1));
|
||||
() => MovieApi.GetCollection(langCode, collectionId, cancellationToken), DateTimeOffset.Now.AddDays(1));
|
||||
|
||||
var results = new List<RequestEngineResult>();
|
||||
foreach (var collection in collections.parts)
|
||||
|
@ -583,7 +583,7 @@ namespace Ombi.Core.Engine
|
|||
new RequestEngineResult { Result = false, ErrorMessage = $"The whole collection {collections.name} Is already monitored or requested!" };
|
||||
}
|
||||
|
||||
return new RequestEngineResult { Result = true, Message = $"The collection {collections.name} has been successfully added!", RequestId = results.FirstOrDefault().RequestId};
|
||||
return new RequestEngineResult { Result = true, Message = $"The collection {collections.name} has been successfully added!", RequestId = results.FirstOrDefault().RequestId };
|
||||
}
|
||||
|
||||
private async Task<RequestEngineResult> ProcessSendingMovie(MovieRequests request)
|
||||
|
@ -782,19 +782,65 @@ namespace Ombi.Core.Engine
|
|||
|
||||
IQueryable<RequestLog> log = _requestLog.GetAll().Where(x => x.UserId == user.Id && x.RequestType == RequestType.Movie);
|
||||
|
||||
int count = limit - await log.CountAsync(x => x.RequestDate >= DateTime.UtcNow.AddDays(-7));
|
||||
|
||||
DateTime oldestRequestedAt = await log.Where(x => x.RequestDate >= DateTime.UtcNow.AddDays(-7))
|
||||
int count = 0;
|
||||
DateTime oldestRequestedAt = DateTime.Now;
|
||||
DateTime nextRequest = DateTime.Now;
|
||||
|
||||
if (!user.MovieRequestLimitType.HasValue)
|
||||
{
|
||||
count = limit - await log.CountAsync(x => x.RequestDate >= DateTime.UtcNow.AddDays(-7));
|
||||
|
||||
oldestRequestedAt = await log.Where(x => x.RequestDate >= DateTime.UtcNow.AddDays(-7))
|
||||
.OrderBy(x => x.RequestDate)
|
||||
.Select(x => x.RequestDate)
|
||||
.FirstOrDefaultAsync();
|
||||
|
||||
return new RequestQuotaCountModel()
|
||||
{
|
||||
HasLimit = true,
|
||||
Limit = limit,
|
||||
Remaining = count < 0 ? 0 : count,
|
||||
NextRequest = DateTime.SpecifyKind(oldestRequestedAt.AddDays(7), DateTimeKind.Utc),
|
||||
};
|
||||
}
|
||||
|
||||
switch (user.MovieRequestLimitType)
|
||||
{
|
||||
case RequestLimitType.Day:
|
||||
count = limit - await log.CountAsync(x => x.RequestDate >= DateTime.UtcNow.Date);
|
||||
oldestRequestedAt = await log.Where(x => x.RequestDate >= DateTime.UtcNow.Date)
|
||||
.OrderBy(x => x.RequestDate)
|
||||
.Select(x => x.RequestDate)
|
||||
.FirstOrDefaultAsync();
|
||||
nextRequest = oldestRequestedAt.AddDays(1);
|
||||
break;
|
||||
case RequestLimitType.Week:
|
||||
count = limit - await log.CountAsync(x => x.RequestDate >= DateTime.UtcNow.Date.AddDays(-7));
|
||||
oldestRequestedAt = await log.Where(x => x.RequestDate >= DateTime.UtcNow.Date.AddDays(-7))
|
||||
.OrderBy(x => x.RequestDate)
|
||||
.Select(x => x.RequestDate)
|
||||
.FirstOrDefaultAsync();
|
||||
nextRequest = oldestRequestedAt.AddDays(7);
|
||||
break;
|
||||
case RequestLimitType.Month:
|
||||
count = limit - await log.CountAsync(x => x.RequestDate >= DateTime.UtcNow.Date.AddMonths(-1));
|
||||
oldestRequestedAt = await log.Where(x => x.RequestDate >= DateTime.UtcNow.Date.AddMonths(-1))
|
||||
.OrderBy(x => x.RequestDate)
|
||||
.Select(x => x.RequestDate)
|
||||
.FirstOrDefaultAsync();
|
||||
nextRequest = oldestRequestedAt.AddMonths(1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return new RequestQuotaCountModel()
|
||||
{
|
||||
HasLimit = true,
|
||||
Limit = limit,
|
||||
Remaining = count,
|
||||
NextRequest = DateTime.SpecifyKind(oldestRequestedAt.AddDays(7), DateTimeKind.Utc),
|
||||
Remaining = count < 0 ? 0 : count,
|
||||
NextRequest = DateTime.SpecifyKind(nextRequest, DateTimeKind.Utc),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue