Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
JafarMirzaie committed Aug 5, 2022
2 parents 45ccd06 + adb373d commit a359d8c
Show file tree
Hide file tree
Showing 21 changed files with 404 additions and 156 deletions.
12 changes: 9 additions & 3 deletions Signum.Engine.Extensions/Alerts/AlertLogic.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ public static void Start(SchemaBuilder sb, params Type[] registerExpressionsFor)
a.Title,
Text = a.Text!.Etc(100),
a.Target,
a.ParentTarget,
a.Recipient,
a.CreationDate,
a.CreatedBy,
Expand Down Expand Up @@ -294,12 +295,12 @@ public static void RegisterAlertType(AlertTypeSymbol alertType, AlertTypeOptions
SystemAlertTypes.Add(alertType, options ?? new AlertTypeOptions());
}

public static AlertEntity? CreateAlert(this IEntity entity, AlertTypeSymbol alertType, string? text = null, string?[]? textArguments = null, DateTime? alertDate = null, Lite<IUserEntity>? createdBy = null, string? title = null, Lite<IUserEntity>? recipient = null)
public static AlertEntity? CreateAlert(this IEntity entity, AlertTypeSymbol alertType, string? text = null, string?[]? textArguments = null, DateTime? alertDate = null, Lite<IUserEntity>? createdBy = null, string? title = null, Lite<IUserEntity>? recipient = null, Lite<Entity>? parentTarget = null)
{
return CreateAlert(entity.ToLiteFat(), alertType, text, textArguments, alertDate, createdBy, title, recipient);
return CreateAlert(entity.ToLiteFat(), alertType, text, textArguments, alertDate, createdBy, title, recipient, parentTarget);
}

public static AlertEntity? CreateAlert(this Lite<IEntity> entity, AlertTypeSymbol alertType, string? text = null, string?[]? textArguments = null, DateTime? alertDate = null, Lite<IUserEntity>? createdBy = null, string? title = null, Lite<IUserEntity>? recipient = null)
public static AlertEntity? CreateAlert(this Lite<IEntity> entity, AlertTypeSymbol alertType, string? text = null, string?[]? textArguments = null, DateTime? alertDate = null, Lite<IUserEntity>? createdBy = null, string? title = null, Lite<IUserEntity>? recipient = null, Lite<Entity>? parentTarget = null)
{
if (Started == false)
return null;
Expand All @@ -314,6 +315,7 @@ public static void RegisterAlertType(AlertTypeSymbol alertType, AlertTypeOptions
TextArguments = textArguments?.ToString("\n###\n"),
TextField = text,
Target = (Lite<Entity>)entity,
ParentTarget = parentTarget,
AlertType = alertType,
Recipient = recipient
};
Expand Down Expand Up @@ -413,6 +415,10 @@ public static void DeleteAllAlerts(Lite<Entity> target)
Database.Query<AlertEntity>()
.Where(a => a.Target.Is(target))
.UnsafeDelete();

Database.Query<AlertEntity>()
.Where(a => a.ParentTarget.Is(target))
.UnsafeDelete();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,11 +212,13 @@ public virtual UserEntity CreateUserInternal(IAutoCreateUserContext ctx)
var config = GetConfig();
if (ctx is DirectoryServiceAutoCreateUserContext ds)
{
var groups = ds.GetUserPrincipal().GetGroups(ds.PrincipalContext);
var groups = ds.GetUserPrincipal().GetGroups(ds.PrincipalContext).ToList();
var role = config.RoleMapping.FirstOrDefault(m =>
{
Guid.TryParse(m.ADNameOrGuid, out var guid);
return groups.Any(g => g.Name == m.ADNameOrGuid || g.Guid == guid);
var found = groups.Any(g => g.Name == m.ADNameOrGuid || g.Guid == guid);

return found;
})?.Role ?? config.DefaultRole;

if (role != null)
Expand Down
48 changes: 31 additions & 17 deletions Signum.Engine.Extensions/UserQueries/UserQueryLogic.cs
Original file line number Diff line number Diff line change
Expand Up @@ -253,19 +253,19 @@ public static void RegisterRoleTypeCondition(SchemaBuilder sb, TypeConditionSymb
{
using (DelayedConsole.Delay(() => Console.WriteLine(" Filters:")))
{
foreach (var item in uq.Filters.ToList())
foreach (var filter in uq.Filters.ToList())
{
if (item.Token == null)
if (filter.Token == null)
continue;

QueryTokenEmbedded token = item.Token;
switch (QueryTokenSynchronizer.FixToken(replacements, ref token, qd, options | SubTokensOptions.CanAnyAll, " {0} {1}".FormatWith(item.Operation, item.ValueString), allowRemoveToken: true, allowReCreate: false))
QueryTokenEmbedded token = filter.Token;
switch (QueryTokenSynchronizer.FixToken(replacements, ref token, qd, options | SubTokensOptions.CanAnyAll, " {0} {1}".FormatWith(filter.Operation, filter.ValueString), allowRemoveToken: true, allowReCreate: false))
{
case FixTokenResult.Nothing: break;
case FixTokenResult.DeleteEntity: return table.DeleteSqlSync(uq, u => u.Guid == uq.Guid);
case FixTokenResult.RemoveToken: uq.Filters.Remove(item); break;
case FixTokenResult.RemoveToken: uq.Filters.Remove(filter); break;
case FixTokenResult.SkipEntity: return null;
case FixTokenResult.Fix: item.Token = token; break;
case FixTokenResult.Fix: filter.Token = token; break;
default: break;
}
}
Expand All @@ -276,18 +276,32 @@ public static void RegisterRoleTypeCondition(SchemaBuilder sb, TypeConditionSymb
{
using (DelayedConsole.Delay(() => Console.WriteLine(" Columns:")))
{
foreach (var item in uq.Columns.ToList())
foreach (var col in uq.Columns.ToList())
{
QueryTokenEmbedded token = item.Token;
switch (QueryTokenSynchronizer.FixToken(replacements, ref token, qd, options, item.DisplayName.HasText() ? " '{0}'".FormatWith(item.DisplayName) : null, allowRemoveToken: true, allowReCreate: false))
QueryTokenEmbedded token = col.Token;
switch (QueryTokenSynchronizer.FixToken(replacements, ref token, qd, options, col.DisplayName.HasText() ? " '{0}' (Summary)".FormatWith(col.DisplayName) : null, allowRemoveToken: true, allowReCreate: false))
{
case FixTokenResult.Nothing: break;
case FixTokenResult.DeleteEntity:; return table.DeleteSqlSync(uq, u => u.Guid == uq.Guid);
case FixTokenResult.RemoveToken: uq.Columns.Remove(item); break;
case FixTokenResult.DeleteEntity: return table.DeleteSqlSync(uq, u => u.Guid == uq.Guid);
case FixTokenResult.RemoveToken: uq.Columns.Remove(col); break;
case FixTokenResult.SkipEntity: return null;
case FixTokenResult.Fix: item.Token = token; break;
case FixTokenResult.Fix: col.Token = token; break;
default: break;
}

if(col.SummaryToken != null)
{
QueryTokenEmbedded sumToken = col.SummaryToken;
switch (QueryTokenSynchronizer.FixToken(replacements, ref sumToken, qd, options | SubTokensOptions.CanAggregate, col.DisplayName.HasText() ? " '{0}'".FormatWith(col.DisplayName) : null, allowRemoveToken: true, allowReCreate: false))
{
case FixTokenResult.Nothing: break;
case FixTokenResult.DeleteEntity: return table.DeleteSqlSync(uq, u => u.Guid == uq.Guid);
case FixTokenResult.RemoveToken: col.SummaryToken = null; break;
case FixTokenResult.SkipEntity: return null;
case FixTokenResult.Fix: col.SummaryToken = sumToken; break;
default: break;
}
}
}
}
}
Expand All @@ -296,16 +310,16 @@ public static void RegisterRoleTypeCondition(SchemaBuilder sb, TypeConditionSymb
{
using (DelayedConsole.Delay(() => Console.WriteLine(" Orders:")))
{
foreach (var item in uq.Orders.ToList())
foreach (var ord in uq.Orders.ToList())
{
QueryTokenEmbedded token = item.Token;
switch (QueryTokenSynchronizer.FixToken(replacements, ref token, qd, options, " " + item.OrderType.ToString(), allowRemoveToken: true, allowReCreate: false))
QueryTokenEmbedded token = ord.Token;
switch (QueryTokenSynchronizer.FixToken(replacements, ref token, qd, options, " " + ord.OrderType.ToString(), allowRemoveToken: true, allowReCreate: false))
{
case FixTokenResult.Nothing: break;
case FixTokenResult.DeleteEntity: return table.DeleteSqlSync(uq, u => u.Guid == uq.Guid);
case FixTokenResult.RemoveToken: uq.Orders.Remove(item); break;
case FixTokenResult.RemoveToken: uq.Orders.Remove(ord); break;
case FixTokenResult.SkipEntity: return null;
case FixTokenResult.Fix: item.Token = token; break;
case FixTokenResult.Fix: ord.Token = token; break;
default: break;
}
}
Expand Down
Loading

0 comments on commit a359d8c

Please sign in to comment.