Fixed an issue when requesting a collection that we have partially available, it would show as an error, but still add the remaining requests #3832

This commit is contained in:
tidusjar 2021-06-16 08:50:53 +01:00
parent 11527e332c
commit e63524c6e4
9 changed files with 78 additions and 12 deletions

View file

@ -1,4 +1,5 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Ombi.Core.Models.Requests;
using Ombi.Core.Models.UI;
@ -11,6 +12,7 @@ namespace Ombi.Core.Engine.Interfaces
Task<RequestEngineResult> RequestMovie(MovieRequestViewModel model);
Task<IEnumerable<MovieRequests>> SearchMovieRequest(string search);
Task<RequestEngineResult> RequestCollection(int collectionId, CancellationToken cancellationToken);
Task RemoveMovieRequest(int requestId);
Task RemoveAllMovieRequests();

View file

@ -559,6 +559,30 @@ namespace Ombi.Core.Engine
return await ProcessSendingMovie(request);
}
public async Task<RequestEngineResult> RequestCollection(int collectionId, CancellationToken cancellationToken)
{
var langCode = await DefaultLanguageCode(null);
var collections = await Cache.GetOrAdd($"GetCollection{collectionId}{langCode}",
async () => await MovieApi.GetCollection(langCode, collectionId, cancellationToken), DateTime.Now.AddDays(1), cancellationToken);
var results = new List<RequestEngineResult>();
foreach (var collection in collections.parts)
{
results.Add(await RequestMovie(new MovieRequestViewModel
{
TheMovieDbId = collection.id
}));
}
if (results.All(x => x.IsError))
{
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};
}
private async Task<RequestEngineResult> ProcessSendingMovie(MovieRequests request)
{
if (request.Approved)
@ -642,7 +666,7 @@ namespace Ombi.Core.Engine
public async Task<RequestEngineResult> ReProcessRequest(int requestId, CancellationToken cancellationToken)
{
var request = await MovieRepository.Find(requestId);
var request = await MovieRepository.Find(requestId);
if (request == null)
{
return new RequestEngineResult

View file

@ -16,7 +16,7 @@ namespace Ombi.Core.Models.Search.V2
public string Overview { get; set; }
public string PosterPath { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public DateTime? ReleaseDate { get; set; }
public override RequestType Type => RequestType.Movie;