document template user flag rules should use the creator user for flag assignment

This commit is contained in:
Gary Sharp
2023-04-16 15:14:14 +10:00
parent cfe4c4b912
commit 937508c440
8 changed files with 191 additions and 337 deletions
@@ -272,7 +272,7 @@ namespace Disco.Services.Documents.AttachmentImport
foreach ( var rule in rules)
{
rule.Apply(Database, Identifier.Target);
rule.Apply(Database, Identifier.Target, creatorUser);
}
}
}
@@ -195,10 +195,9 @@ namespace Disco.Services
public static OnImportUserFlagRule AddDetails(this OnImportUserFlagRule rule, DiscoDataContext database)
{
rule.User = database.Users.FirstOrDefault(u => u.UserId == rule.UserId);
rule.UserFlag = database.UserFlags.FirstOrDefault(f => f.Id == rule.FlagId);
if (rule.User == null || rule.UserFlag == null)
if (rule.UserFlag == null)
return null;
else
return rule;
@@ -213,11 +212,6 @@ namespace Disco.Services
else
rules = JsonConvert.DeserializeObject<List<OnImportUserFlagRule>>(template.OnImportUserFlagRules);
// validate user id
rule.User = database.Users.FirstOrDefault(u => u.UserId == rule.UserId);
if (rule.User == null)
throw new ArgumentException("Unknown rule user id", nameof(rule));
// validate user flag
rule.UserFlag = database.UserFlags.FirstOrDefault(f => f.Id == rule.FlagId);
if (rule.UserFlag == null)
@@ -256,7 +250,7 @@ namespace Disco.Services
return true;
}
public static void Apply(this OnImportUserFlagRule rule, DiscoDataContext database, IAttachmentTarget target)
public static void Apply(this OnImportUserFlagRule rule, DiscoDataContext database, IAttachmentTarget target, User techUser)
{
string userId;
if (target is User targetUser)
@@ -276,9 +270,12 @@ namespace Disco.Services
if (user == null)
return;
var techUser = database.Users.FirstOrDefault(u => u.UserId == rule.UserId);
if (techUser == null)
return;
{
techUser = database.Users.FirstOrDefault(u => u.UserId == rule.UserId);
if (techUser == null)
return;
}
// remove flag
if (!rule.AddFlag)