Skip to content

Commit

Permalink
fix(request-limits): 🐛 Fixed the issue where we were calculating Tv R…
Browse files Browse the repository at this point in the history
…equest limit reset date incorrectly
  • Loading branch information
tidusjar committed Sep 28, 2021
1 parent e302cf6 commit ceaec3f
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 20 deletions.
19 changes: 10 additions & 9 deletions src/Ombi.Core.Tests/Engine/TvRequestLimitsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using Ombi.Core.Engine;
using Ombi.Core.Models;
using Ombi.Core.Services;
using Ombi.Helpers;
using Ombi.Store.Entities;
using Ombi.Store.Entities.Requests;
using Ombi.Store.Repository;
Expand Down Expand Up @@ -277,7 +278,7 @@ public async Task UserPassedIn_TvLimit_Set_Limit_Daily_OneRequestsToday()
.With.Property(nameof(RequestQuotaCountModel.HasLimit)).EqualTo(true)
.And.Property(nameof(RequestQuotaCountModel.Limit)).EqualTo(2)
.And.Property(nameof(RequestQuotaCountModel.Remaining)).EqualTo(1)
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(today.AddDays(1).AddHours(-1))
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(today.AddDays(1).Date)
);
}

Expand Down Expand Up @@ -318,7 +319,7 @@ public async Task UserPassedIn_TvLimit_Set_Limit_Daily_AllRequestsToday()
.With.Property(nameof(RequestQuotaCountModel.HasLimit)).EqualTo(true)
.And.Property(nameof(RequestQuotaCountModel.Limit)).EqualTo(2)
.And.Property(nameof(RequestQuotaCountModel.Remaining)).EqualTo(0)
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(today.AddDays(1).AddHours(-2))
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(today.AddDays(1).Date)
);
}

Expand Down Expand Up @@ -359,7 +360,7 @@ public async Task UserPassedIn_TvLimit_Set_Limit_Daily_MultipleEpisodeRequests()
.With.Property(nameof(RequestQuotaCountModel.HasLimit)).EqualTo(true)
.And.Property(nameof(RequestQuotaCountModel.Limit)).EqualTo(10)
.And.Property(nameof(RequestQuotaCountModel.Remaining)).EqualTo(1)
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(today.AddDays(1).AddHours(-2))
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(today.AddDays(1).Date)
);
}

Expand Down Expand Up @@ -426,7 +427,7 @@ public async Task UserPassedIn_TvLimit_Set_Limit_Weekly_OneRequestsWeek()
.With.Property(nameof(RequestQuotaCountModel.HasLimit)).EqualTo(true)
.And.Property(nameof(RequestQuotaCountModel.Limit)).EqualTo(2)
.And.Property(nameof(RequestQuotaCountModel.Remaining)).EqualTo(1)
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(today.AddDays(7))
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(today.FirstDateInWeek().AddDays(7).Date)
);
}

Expand Down Expand Up @@ -467,7 +468,7 @@ public async Task UserPassedIn_TvLimit_Set_Limit_Weekly_AllRequestsWeek()
.With.Property(nameof(RequestQuotaCountModel.HasLimit)).EqualTo(true)
.And.Property(nameof(RequestQuotaCountModel.Limit)).EqualTo(2)
.And.Property(nameof(RequestQuotaCountModel.Remaining)).EqualTo(0)
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(today.AddDays(6))
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(today.FirstDateInWeek().AddDays(7).Date)
);
}

Expand Down Expand Up @@ -508,7 +509,7 @@ public async Task UserPassedIn_TvLimit_Set_Limit_Weekly_MultipleEpisodeRequests(
.With.Property(nameof(RequestQuotaCountModel.HasLimit)).EqualTo(true)
.And.Property(nameof(RequestQuotaCountModel.Limit)).EqualTo(10)
.And.Property(nameof(RequestQuotaCountModel.Remaining)).EqualTo(1)
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(today.AddDays(6))
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(today.FirstDateInWeek().AddDays(7).Date)
);
}

Expand Down Expand Up @@ -575,7 +576,7 @@ public async Task UserPassedIn_TvLimit_Set_Limit_Monthly_OneRequests()
.With.Property(nameof(RequestQuotaCountModel.HasLimit)).EqualTo(true)
.And.Property(nameof(RequestQuotaCountModel.Limit)).EqualTo(2)
.And.Property(nameof(RequestQuotaCountModel.Remaining)).EqualTo(1)
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(today.AddMonths(1))
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(new DateTime(today.Year, today.Month, 1).AddMonths(1).Date)
);
}

Expand Down Expand Up @@ -616,7 +617,7 @@ public async Task UserPassedIn_TvLimit_Set_Limit_Monthly_AllRequests()
.With.Property(nameof(RequestQuotaCountModel.HasLimit)).EqualTo(true)
.And.Property(nameof(RequestQuotaCountModel.Limit)).EqualTo(2)
.And.Property(nameof(RequestQuotaCountModel.Remaining)).EqualTo(0)
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(today.AddMonths(1).AddDays(-1))
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(new DateTime(today.Year, today.Month, 1).AddMonths(1).Date)
);
}

Expand Down Expand Up @@ -657,7 +658,7 @@ public async Task UserPassedIn_TvLimit_Set_Limit_Monthly_MultipleEpisodeReuests(
.With.Property(nameof(RequestQuotaCountModel.HasLimit)).EqualTo(true)
.And.Property(nameof(RequestQuotaCountModel.Limit)).EqualTo(10)
.And.Property(nameof(RequestQuotaCountModel.Remaining)).EqualTo(1)
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(today.AddMonths(1).AddDays(-1))
.And.Property(nameof(RequestQuotaCountModel.NextRequest)).EqualTo(new DateTime(today.Year, today.Month, 1).AddMonths(1).Date)
);

}
Expand Down
5 changes: 0 additions & 5 deletions src/Ombi.Core/Rule/Rules/Request/RequestLimitRule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,11 @@
// ************************************************************************/
#endregion

using System;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Ombi.Core.Authentication;
using Ombi.Core.Rule.Interfaces;
using Ombi.Core.Services;
using Ombi.Store.Entities;
using Ombi.Store.Entities.Requests;
using Ombi.Store.Repository;

namespace Ombi.Core.Rule.Rules.Request
{
Expand Down
12 changes: 6 additions & 6 deletions src/Ombi.Core/Services/RequestLimitService.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
using Microsoft.EntityFrameworkCore;
using Ombi.Core.Authentication;
using Ombi.Core.Engine.Interfaces;
using Ombi.Core.Models;
using Ombi.Core.Rule.Interfaces;
using Ombi.Helpers;
using Ombi.Store.Entities;
using Ombi.Store.Entities.Requests;
Expand Down Expand Up @@ -246,6 +244,7 @@ public async Task<RequestQuotaCountModel> GetRemainingTvRequests(OmbiUser user)
};
}

var now = DateTime.UtcNow;
switch (user.EpisodeRequestLimitType)
{
case RequestLimitType.Day:
Expand All @@ -260,10 +259,10 @@ public async Task<RequestQuotaCountModel> GetRemainingTvRequests(OmbiUser user)
.OrderBy(x => x.RequestDate)
.Select(x => x.RequestDate)
.FirstOrDefaultAsync();
nextRequest = oldestRequestedAt.AddDays(1);
nextRequest = oldestRequestedAt.AddDays(1).Date;
break;
case RequestLimitType.Week:

var fdow = now.FirstDateInWeek();
filteredLog = log.Where(x => x.RequestDate >= DateTime.UtcNow.Date.AddDays(-7));
// Needed, due to a bug which would cause all episode counts to be 0
zeroEpisodeCount = await filteredLog.Where(x => x.EpisodeCount == 0).Select(x => x.EpisodeCount).CountAsync();
Expand All @@ -274,9 +273,10 @@ public async Task<RequestQuotaCountModel> GetRemainingTvRequests(OmbiUser user)
.OrderBy(x => x.RequestDate)
.Select(x => x.RequestDate)
.FirstOrDefaultAsync();
nextRequest = oldestRequestedAt.AddDays(7);
nextRequest = fdow.AddDays(7).Date;
break;
case RequestLimitType.Month:
var firstDayOfMonth = new DateTime(now.Year, now.Month, 1);
filteredLog = log.Where(x => x.RequestDate >= DateTime.UtcNow.Date.AddMonths(-1));
// Needed, due to a bug which would cause all episode counts to be 0
zeroEpisodeCount = await filteredLog.Where(x => x.EpisodeCount == 0).Select(x => x.EpisodeCount).CountAsync();
Expand All @@ -287,7 +287,7 @@ public async Task<RequestQuotaCountModel> GetRemainingTvRequests(OmbiUser user)
.OrderBy(x => x.RequestDate)
.Select(x => x.RequestDate)
.FirstOrDefaultAsync();
nextRequest = oldestRequestedAt.AddMonths(1);
nextRequest = firstDayOfMonth.AddMonths(1).Date;
break;
}

Expand Down

0 comments on commit ceaec3f

Please sign in to comment.