pull/4185/head
tidusjar 3 years ago
parent 50af2b8482
commit 64c0fc17cc

@ -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…
Cancel
Save