mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-14 01:02:57 -07:00
When a users requests content and the voting is enabled, the user who requested is an automatic +1 vote.
This commit is contained in:
parent
870a07de9d
commit
4508f79a5f
7 changed files with 68 additions and 14 deletions
|
@ -483,7 +483,7 @@ namespace Ombi.Core.Engine
|
||||||
RequestType = RequestType.Movie,
|
RequestType = RequestType.Movie,
|
||||||
});
|
});
|
||||||
|
|
||||||
return new RequestEngineResult {Result = true, Message = $"{movieName} has been successfully added!"};
|
return new RequestEngineResult {Result = true, Message = $"{movieName} has been successfully added!", RequestId = model.Id};
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<RequestQuotaCountModel> GetRemainingRequests(OmbiUser user)
|
public async Task<RequestQuotaCountModel> GetRemainingRequests(OmbiUser user)
|
||||||
|
|
|
@ -495,7 +495,7 @@ namespace Ombi.Core.Engine
|
||||||
RequestType = RequestType.Album,
|
RequestType = RequestType.Album,
|
||||||
});
|
});
|
||||||
|
|
||||||
return new RequestEngineResult { Result = true, Message = $"{model.Title} has been successfully added!" };
|
return new RequestEngineResult { Result = true, Message = $"{model.Title} has been successfully added!", RequestId = model.Id };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,5 +6,6 @@
|
||||||
public string Message { get; set; }
|
public string Message { get; set; }
|
||||||
public bool IsError => !string.IsNullOrEmpty(ErrorMessage);
|
public bool IsError => !string.IsNullOrEmpty(ErrorMessage);
|
||||||
public string ErrorMessage { get; set; }
|
public string ErrorMessage { get; set; }
|
||||||
|
public int RequestId { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -604,15 +604,16 @@ namespace Ombi.Core.Engine
|
||||||
var result = await TvSender.Send(model);
|
var result = await TvSender.Send(model);
|
||||||
if (result.Success)
|
if (result.Success)
|
||||||
{
|
{
|
||||||
return new RequestEngineResult { Result = true };
|
return new RequestEngineResult { Result = true, RequestId = model.Id};
|
||||||
}
|
}
|
||||||
return new RequestEngineResult
|
return new RequestEngineResult
|
||||||
{
|
{
|
||||||
ErrorMessage = result.Message
|
ErrorMessage = result.Message,
|
||||||
|
RequestId = model.Id
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return new RequestEngineResult { Result = true };
|
return new RequestEngineResult { Result = true, RequestId = model.Id };
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<RequestQuotaCountModel> GetRemainingRequests(OmbiUser user)
|
public async Task<RequestQuotaCountModel> GetRemainingRequests(OmbiUser user)
|
||||||
|
|
|
@ -149,13 +149,17 @@ namespace Ombi.Core.Engine
|
||||||
|
|
||||||
public async Task<VoteEngineResult> UpVote(int requestId, RequestType requestType)
|
public async Task<VoteEngineResult> UpVote(int requestId, RequestType requestType)
|
||||||
{
|
{
|
||||||
|
var voteSettings = await _voteSettings.GetSettingsAsync();
|
||||||
|
if (!voteSettings.Enabled)
|
||||||
|
{
|
||||||
|
return new VoteEngineResult {Result = true};
|
||||||
|
}
|
||||||
// How many votes does this have?!
|
// How many votes does this have?!
|
||||||
var currentVotes = GetVotes(requestId, requestType);
|
var currentVotes = GetVotes(requestId, requestType);
|
||||||
var voteSettings = await _voteSettings.GetSettingsAsync();
|
|
||||||
|
|
||||||
// Does this user have a downvote? If so we should revert it and make it an upvote
|
|
||||||
var user = await GetUser();
|
var user = await GetUser();
|
||||||
|
|
||||||
|
// Does this user have a downvote? If so we should revert it and make it an upvote
|
||||||
var currentVote = await GetVoteForUser(requestId, user.Id);
|
var currentVote = await GetVoteForUser(requestId, user.Id);
|
||||||
if (currentVote != null && currentVote.VoteType == VoteType.Upvote)
|
if (currentVote != null && currentVote.VoteType == VoteType.Upvote)
|
||||||
{
|
{
|
||||||
|
@ -206,7 +210,7 @@ namespace Ombi.Core.Engine
|
||||||
{
|
{
|
||||||
return new VoteEngineResult
|
return new VoteEngineResult
|
||||||
{
|
{
|
||||||
ErrorMessage = "Voted succesfully but could not approve movie!"
|
ErrorMessage = "Voted succesfully but could not approve!"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -218,6 +222,11 @@ namespace Ombi.Core.Engine
|
||||||
|
|
||||||
public async Task<VoteEngineResult> DownVote(int requestId, RequestType requestType)
|
public async Task<VoteEngineResult> DownVote(int requestId, RequestType requestType)
|
||||||
{
|
{
|
||||||
|
var voteSettings = await _voteSettings.GetSettingsAsync();
|
||||||
|
if (!voteSettings.Enabled)
|
||||||
|
{
|
||||||
|
return new VoteEngineResult { Result = true };
|
||||||
|
}
|
||||||
var user = await GetUser();
|
var user = await GetUser();
|
||||||
var currentVote = await GetVoteForUser(requestId, user.Id);
|
var currentVote = await GetVoteForUser(requestId, user.Id);
|
||||||
if (currentVote != null && currentVote.VoteType == VoteType.Downvote)
|
if (currentVote != null && currentVote.VoteType == VoteType.Downvote)
|
||||||
|
|
|
@ -4,10 +4,13 @@ using Ombi.Core.Engine;
|
||||||
using Ombi.Core.Models.Requests;
|
using Ombi.Core.Models.Requests;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
using Ombi.Store.Entities.Requests;
|
using Ombi.Store.Entities.Requests;
|
||||||
using Ombi.Attributes;
|
using Ombi.Attributes;
|
||||||
using Ombi.Core.Models;
|
using Ombi.Core.Models;
|
||||||
using Ombi.Core.Models.UI;
|
using Ombi.Core.Models.UI;
|
||||||
|
using Ombi.Store.Entities;
|
||||||
|
using ILogger = Microsoft.Extensions.Logging.ILogger;
|
||||||
|
|
||||||
namespace Ombi.Controllers
|
namespace Ombi.Controllers
|
||||||
{
|
{
|
||||||
|
@ -16,12 +19,16 @@ namespace Ombi.Controllers
|
||||||
[Produces("application/json")]
|
[Produces("application/json")]
|
||||||
public class MusicRequestController : Controller
|
public class MusicRequestController : Controller
|
||||||
{
|
{
|
||||||
public MusicRequestController(IMusicRequestEngine engine)
|
public MusicRequestController(IMusicRequestEngine engine, IVoteEngine voteEngine, ILogger<MusicRequestController> log)
|
||||||
{
|
{
|
||||||
_engine = engine;
|
_engine = engine;
|
||||||
|
_voteEngine = voteEngine;
|
||||||
|
_log = log;
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly IMusicRequestEngine _engine;
|
private readonly IMusicRequestEngine _engine;
|
||||||
|
private readonly IVoteEngine _voteEngine;
|
||||||
|
private readonly ILogger _log;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets album requests.
|
/// Gets album requests.
|
||||||
|
@ -66,9 +73,19 @@ namespace Ombi.Controllers
|
||||||
/// <param name="album">The album.</param>
|
/// <param name="album">The album.</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<RequestEngineResult> Request([FromBody] MusicAlbumRequestViewModel album)
|
public async Task<RequestEngineResult> RequestAlbum([FromBody] MusicAlbumRequestViewModel album)
|
||||||
{
|
{
|
||||||
return await _engine.RequestAlbum(album);
|
var result = await _engine.RequestAlbum(album);
|
||||||
|
if (result.Result)
|
||||||
|
{
|
||||||
|
var voteResult = await _voteEngine.UpVote(result.RequestId, RequestType.Album);
|
||||||
|
if (voteResult.IsError)
|
||||||
|
{
|
||||||
|
_log.LogError("Couldn't automatically add the vote for the album {0} because {1}", album.ForeignAlbumId, voteResult.ErrorMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -8,6 +8,7 @@ using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Ombi.Store.Entities.Requests;
|
using Ombi.Store.Entities.Requests;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
using Ombi.Attributes;
|
using Ombi.Attributes;
|
||||||
using Ombi.Core.Models.UI;
|
using Ombi.Core.Models.UI;
|
||||||
using Ombi.Models;
|
using Ombi.Models;
|
||||||
|
@ -21,14 +22,19 @@ namespace Ombi.Controllers
|
||||||
[Produces("application/json")]
|
[Produces("application/json")]
|
||||||
public class RequestController : Controller
|
public class RequestController : Controller
|
||||||
{
|
{
|
||||||
public RequestController(IMovieRequestEngine engine, ITvRequestEngine tvRequestEngine)
|
public RequestController(IMovieRequestEngine engine, ITvRequestEngine tvRequestEngine, IVoteEngine vote,
|
||||||
|
ILogger<RequestController> log)
|
||||||
{
|
{
|
||||||
MovieRequestEngine = engine;
|
MovieRequestEngine = engine;
|
||||||
TvRequestEngine = tvRequestEngine;
|
TvRequestEngine = tvRequestEngine;
|
||||||
|
VoteEngine = vote;
|
||||||
|
Log = log;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IMovieRequestEngine MovieRequestEngine { get; }
|
private IMovieRequestEngine MovieRequestEngine { get; }
|
||||||
private ITvRequestEngine TvRequestEngine { get; }
|
private ITvRequestEngine TvRequestEngine { get; }
|
||||||
|
private IVoteEngine VoteEngine { get; }
|
||||||
|
private ILogger Log { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets movie requests.
|
/// Gets movie requests.
|
||||||
|
@ -75,7 +81,17 @@ namespace Ombi.Controllers
|
||||||
[HttpPost("movie")]
|
[HttpPost("movie")]
|
||||||
public async Task<RequestEngineResult> RequestMovie([FromBody] MovieRequestViewModel movie)
|
public async Task<RequestEngineResult> RequestMovie([FromBody] MovieRequestViewModel movie)
|
||||||
{
|
{
|
||||||
return await MovieRequestEngine.RequestMovie(movie);
|
var result = await MovieRequestEngine.RequestMovie(movie);
|
||||||
|
if (result.Result)
|
||||||
|
{
|
||||||
|
var voteResult = await VoteEngine.UpVote(result.RequestId, RequestType.Movie);
|
||||||
|
if (voteResult.IsError)
|
||||||
|
{
|
||||||
|
Log.LogError("Couldn't automatically add the vote for the movie {0} because {1}", movie.TheMovieDbId, voteResult.ErrorMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -249,7 +265,17 @@ namespace Ombi.Controllers
|
||||||
[HttpPost("tv")]
|
[HttpPost("tv")]
|
||||||
public async Task<RequestEngineResult> RequestTv([FromBody] TvRequestViewModel tv)
|
public async Task<RequestEngineResult> RequestTv([FromBody] TvRequestViewModel tv)
|
||||||
{
|
{
|
||||||
return await TvRequestEngine.RequestTvShow(tv);
|
var result = await TvRequestEngine.RequestTvShow(tv);
|
||||||
|
if (result.Result)
|
||||||
|
{
|
||||||
|
var voteResult = await VoteEngine.UpVote(result.RequestId, RequestType.TvShow);
|
||||||
|
if (voteResult.IsError)
|
||||||
|
{
|
||||||
|
Log.LogError("Couldn't automatically add the vote for the tv {0} because {1}", tv.TvDbId, voteResult.ErrorMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue