mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-14 01:02:57 -07:00
Fixed #4152
This commit is contained in:
parent
50af2b8482
commit
64c0fc17cc
8 changed files with 21 additions and 11 deletions
|
@ -59,9 +59,9 @@ namespace Ombi.Core.Engine.Interfaces
|
|||
var ruleResults = await Rules.StartSearchRules(model);
|
||||
return ruleResults;
|
||||
}
|
||||
public async Task<RuleResult> RunSpecificRule(object model, SpecificRules rule)
|
||||
public async Task<RuleResult> RunSpecificRule(object model, SpecificRules rule, string requestOnBehalf)
|
||||
{
|
||||
var ruleResults = await Rules.StartSpecificRules(model, rule);
|
||||
var ruleResults = await Rules.StartSpecificRules(model, rule, requestOnBehalf);
|
||||
return ruleResults;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ namespace Ombi.Core.Engine
|
|||
var canRequestOnBehalf = model.RequestOnBehalf.HasValue();
|
||||
|
||||
var isAdmin = await UserManager.IsInRoleAsync(userDetails, OmbiRoles.PowerUser) || await UserManager.IsInRoleAsync(userDetails, OmbiRoles.Admin);
|
||||
if (model.RequestOnBehalf.HasValue() && !isAdmin)
|
||||
if (canRequestOnBehalf && !isAdmin)
|
||||
{
|
||||
return new RequestEngineResult
|
||||
{
|
||||
|
@ -703,7 +703,7 @@ namespace Ombi.Core.Engine
|
|||
{
|
||||
await MovieRepository.Add(model);
|
||||
|
||||
var result = await RunSpecificRule(model, SpecificRules.CanSendNotification);
|
||||
var result = await RunSpecificRule(model, SpecificRules.CanSendNotification, requestOnBehalf);
|
||||
if (result.Success)
|
||||
{
|
||||
await NotificationHelper.NewRequest(model);
|
||||
|
|
|
@ -9,6 +9,6 @@ namespace Ombi.Core.Rule.Interfaces
|
|||
{
|
||||
Task<IEnumerable<RuleResult>> StartRequestRules(BaseRequest obj);
|
||||
Task<IEnumerable<RuleResult>> StartSearchRules(SearchViewModel obj);
|
||||
Task<RuleResult> StartSpecificRules(object obj, SpecificRules selectedRule);
|
||||
Task<RuleResult> StartSpecificRules(object obj, SpecificRules selectedRule, string requestOnBehalf);
|
||||
}
|
||||
}
|
|
@ -5,7 +5,7 @@ namespace Ombi.Core.Rule.Interfaces
|
|||
{
|
||||
public interface ISpecificRule<T> where T : new()
|
||||
{
|
||||
Task<RuleResult> Execute(T obj);
|
||||
Task<RuleResult> Execute(T obj, string requestOnBehalf);
|
||||
SpecificRules Rule { get; }
|
||||
}
|
||||
}
|
|
@ -58,13 +58,13 @@ namespace Ombi.Core.Rule
|
|||
return results;
|
||||
}
|
||||
|
||||
public async Task<RuleResult> StartSpecificRules(object obj, SpecificRules selectedRule)
|
||||
public async Task<RuleResult> StartSpecificRules(object obj, SpecificRules selectedRule, string requestOnBehalf)
|
||||
{
|
||||
foreach (var rule in SpecificRules)
|
||||
{
|
||||
if (selectedRule == rule.Rule)
|
||||
{
|
||||
var result = await rule.Execute(obj);
|
||||
var result = await rule.Execute(obj, requestOnBehalf);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ namespace Ombi.Core.Rule.Rules.Search
|
|||
// If we have all the episodes for this season, then this season is available
|
||||
if (season.Episodes.All(x => x.Available))
|
||||
{
|
||||
season.SeasonAvailable = true;
|
||||
season.SeasonAvailable = true;
|
||||
}
|
||||
}
|
||||
if (search.SeasonRequests.All(x => x.Episodes.All(e => e.Available)))
|
||||
|
|
|
@ -8,7 +8,7 @@ using Ombi.Store.Repository;
|
|||
|
||||
namespace Ombi.Core.Rule.Rules.Search
|
||||
{
|
||||
public class LidarrArtistCacheRule : SpecificRule, ISpecificRule<object>
|
||||
public class LidarrArtistCacheRule : SpecificRule, IRules<object>
|
||||
{
|
||||
public LidarrArtistCacheRule(IExternalRepository<LidarrArtistCache> db)
|
||||
{
|
||||
|
@ -30,6 +30,7 @@ namespace Ombi.Core.Rule.Rules.Search
|
|||
return Task.FromResult(Success());
|
||||
}
|
||||
|
||||
|
||||
public override SpecificRules Rule => SpecificRules.LidarrArtist;
|
||||
}
|
||||
}
|
|
@ -22,11 +22,20 @@ namespace Ombi.Core.Rule.Rules.Specific
|
|||
private OmbiUserManager UserManager { get; }
|
||||
private ISettingsService<OmbiSettings> Settings { get; }
|
||||
|
||||
public async Task<RuleResult> Execute(object obj)
|
||||
public async Task<RuleResult> Execute(object obj, string requestOnBehalf)
|
||||
{
|
||||
var req = (BaseRequest)obj;
|
||||
var canRequestonBehalf = requestOnBehalf.HasValue();
|
||||
var settings = await Settings.GetSettingsAsync();
|
||||
var sendNotification = true;
|
||||
|
||||
if (settings.DoNotSendNotificationsForAutoApprove && canRequestonBehalf)
|
||||
{
|
||||
return new RuleResult
|
||||
{
|
||||
Success = false
|
||||
};
|
||||
}
|
||||
var requestedUser = await UserManager.Users.FirstOrDefaultAsync(x => x.Id == req.RequestedUserId);
|
||||
if (req.RequestType == RequestType.Movie)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue