mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-15 17:52:57 -07:00
Fixed the issues where the DB was being disposed too early
This commit is contained in:
parent
47f323fcdd
commit
96e3e88261
16 changed files with 86 additions and 91 deletions
|
@ -156,10 +156,10 @@ namespace Ombi.Core.Engine
|
|||
.ThenInclude(x => x.Episodes)
|
||||
.OrderByDescending(x => x.ChildRequests.Select(y => y.RequestedDate).FirstOrDefault())
|
||||
.Skip(position).Take(count).ToListAsync();
|
||||
|
||||
}
|
||||
|
||||
allRequests.ForEach(async r => { await CheckForSubscription(shouldHide, r); });
|
||||
}
|
||||
await CheckForSubscription(shouldHide, allRequests);
|
||||
allRequests.ForEach(async r => { });
|
||||
|
||||
return new RequestsViewModel<TvRequests>
|
||||
{
|
||||
|
@ -194,7 +194,8 @@ namespace Ombi.Core.Engine
|
|||
{
|
||||
return new RequestsViewModel<TvRequests>();
|
||||
}
|
||||
allRequests.ForEach(async r => { await CheckForSubscription(shouldHide, r); });
|
||||
|
||||
await CheckForSubscription(shouldHide, allRequests);
|
||||
|
||||
return new RequestsViewModel<TvRequests>
|
||||
{
|
||||
|
@ -216,7 +217,7 @@ namespace Ombi.Core.Engine
|
|||
allRequests = await TvRepository.Get().ToListAsync();
|
||||
}
|
||||
|
||||
allRequests.ForEach(async r => { await CheckForSubscription(shouldHide, r); });
|
||||
await CheckForSubscription(shouldHide, allRequests);
|
||||
return allRequests;
|
||||
}
|
||||
|
||||
|
@ -236,7 +237,7 @@ namespace Ombi.Core.Engine
|
|||
allRequests = await TvRepository.GetLite().ToListAsync();
|
||||
}
|
||||
|
||||
allRequests.ForEach(async r => { await CheckForSubscription(shouldHide, r); });
|
||||
await CheckForSubscription(shouldHide, allRequests);
|
||||
return allRequests;
|
||||
}
|
||||
|
||||
|
@ -255,7 +256,7 @@ namespace Ombi.Core.Engine
|
|||
request = await TvRepository.Get().Where(x => x.Id == requestId).FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
await CheckForSubscription(shouldHide, request);
|
||||
await CheckForSubscription(shouldHide, new List<TvRequests>{request});
|
||||
return request;
|
||||
}
|
||||
|
||||
|
@ -304,7 +305,7 @@ namespace Ombi.Core.Engine
|
|||
allRequests = await TvRepository.GetChild().Include(x => x.SeasonRequests).Where(x => x.ParentRequestId == tvId).ToListAsync();
|
||||
}
|
||||
|
||||
allRequests.ForEach(async r => { await CheckForSubscription(shouldHide, r); });
|
||||
await CheckForSubscription(shouldHide, allRequests);
|
||||
|
||||
return allRequests;
|
||||
}
|
||||
|
@ -323,7 +324,7 @@ namespace Ombi.Core.Engine
|
|||
}
|
||||
var results = await allRequests.Where(x => x.Title.Contains(search, CompareOptions.IgnoreCase)).ToListAsync();
|
||||
|
||||
results.ForEach(async r => { await CheckForSubscription(shouldHide, r); });
|
||||
await CheckForSubscription(shouldHide, results);
|
||||
return results;
|
||||
}
|
||||
|
||||
|
@ -420,7 +421,7 @@ namespace Ombi.Core.Engine
|
|||
|
||||
public async Task<ChildRequests> UpdateChildRequest(ChildRequests request)
|
||||
{
|
||||
await TvRepository.UpdateChild(request);
|
||||
await TvRepository.UpdateChild(request);
|
||||
return request;
|
||||
}
|
||||
|
||||
|
@ -438,14 +439,14 @@ namespace Ombi.Core.Engine
|
|||
// Delete the parent
|
||||
TvRepository.Db.TvRequests.Remove(parent);
|
||||
}
|
||||
|
||||
|
||||
await TvRepository.Db.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task RemoveTvRequest(int requestId)
|
||||
{
|
||||
var request = await TvRepository.Get().FirstOrDefaultAsync(x => x.Id == requestId);
|
||||
await TvRepository.Delete(request);
|
||||
await TvRepository.Delete(request);
|
||||
}
|
||||
|
||||
public async Task<bool> UserHasRequest(string userId)
|
||||
|
@ -520,26 +521,32 @@ namespace Ombi.Core.Engine
|
|||
}
|
||||
}
|
||||
|
||||
private async Task CheckForSubscription(HideResult shouldHide, TvRequests x)
|
||||
private async Task CheckForSubscription(HideResult shouldHide, List<TvRequests> x)
|
||||
{
|
||||
foreach (var tv in x.ChildRequests)
|
||||
foreach (var tvRequest in x)
|
||||
{
|
||||
await CheckForSubscription(shouldHide, tv);
|
||||
await CheckForSubscription(shouldHide, tvRequest.ChildRequests);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task CheckForSubscription(HideResult shouldHide, ChildRequests x)
|
||||
private async Task CheckForSubscription(HideResult shouldHide, List<ChildRequests> childRequests)
|
||||
{
|
||||
if (shouldHide.UserId == x.RequestedUserId)
|
||||
var sub = _subscriptionRepository.GetAll();
|
||||
var childIds = childRequests.Select(x => x.Id);
|
||||
var relevantSubs = await sub.Where(s =>
|
||||
s.UserId == shouldHide.UserId && childIds.Contains(s.Id) && s.RequestType == RequestType.TvShow).ToListAsync();
|
||||
foreach (var x in childRequests)
|
||||
{
|
||||
x.ShowSubscribe = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
x.ShowSubscribe = true;
|
||||
var sub = await _subscriptionRepository.GetAll().FirstOrDefaultAsync(s =>
|
||||
s.UserId == shouldHide.UserId && s.RequestId == x.Id && s.RequestType == RequestType.TvShow);
|
||||
x.Subscribed = sub != null;
|
||||
if (shouldHide.UserId == x.RequestedUserId)
|
||||
{
|
||||
x.ShowSubscribe = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
x.ShowSubscribe = true;
|
||||
var result = relevantSubs.FirstOrDefault(s => s.RequestId == x.Id);
|
||||
x.Subscribed = result != null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -560,7 +567,7 @@ namespace Ombi.Core.Engine
|
|||
return await AfterRequest(model.ChildRequests.FirstOrDefault());
|
||||
}
|
||||
|
||||
private static List<ChildRequests> SortEpisodes(List<ChildRequests> items)
|
||||
private static List<ChildRequests> SortEpisodes(List<ChildRequests> items)
|
||||
{
|
||||
foreach (var value in items)
|
||||
{
|
||||
|
@ -597,7 +604,7 @@ namespace Ombi.Core.Engine
|
|||
var result = await TvSender.Send(model);
|
||||
if (result.Success)
|
||||
{
|
||||
return new RequestEngineResult { Result = true, RequestId = model.Id};
|
||||
return new RequestEngineResult { Result = true, RequestId = model.Id };
|
||||
}
|
||||
return new RequestEngineResult
|
||||
{
|
||||
|
@ -650,10 +657,10 @@ namespace Ombi.Core.Engine
|
|||
DateTime oldestRequestedAt = await log.OrderBy(x => x.RequestDate)
|
||||
.Select(x => x.RequestDate)
|
||||
.FirstOrDefaultAsync();
|
||||
|
||||
|
||||
return new RequestQuotaCountModel()
|
||||
{
|
||||
HasLimit = true,
|
||||
HasLimit = true,
|
||||
Limit = limit,
|
||||
Remaining = count,
|
||||
NextRequest = DateTime.SpecifyKind(oldestRequestedAt.AddDays(7), DateTimeKind.Utc),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue