mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
52 lines
1.7 KiB
C#
52 lines
1.7 KiB
C#
using System;
|
|
using Artemis.Core.Models.Profile.Conditions.Abstract;
|
|
using Artemis.Storage.Entities.Profile;
|
|
|
|
namespace Artemis.Core.Models.Profile.Conditions
|
|
{
|
|
public class DisplayConditionGroup : DisplayConditionPart
|
|
{
|
|
public DisplayConditionGroup(DisplayConditionPart parent)
|
|
{
|
|
Parent = parent;
|
|
EntityId = Guid.NewGuid();
|
|
}
|
|
|
|
public DisplayConditionGroup(DisplayConditionPart parent, DisplayConditionGroupEntity entity)
|
|
{
|
|
DisplayConditionGroupEntity = entity;
|
|
Parent = parent;
|
|
EntityId = DisplayConditionGroupEntity.Id;
|
|
BooleanOperator = (BooleanOperator) DisplayConditionGroupEntity.BooleanOperator;
|
|
|
|
foreach (var childEntity in DisplayConditionGroupEntity.Children)
|
|
{
|
|
if (childEntity is DisplayConditionGroupEntity groupEntity)
|
|
AddChild(new DisplayConditionGroup(this, groupEntity));
|
|
if (childEntity is DisplayConditionPredicateEntity predicateEntity)
|
|
AddChild(new DisplayConditionPredicate(this, predicateEntity));
|
|
}
|
|
}
|
|
|
|
public BooleanOperator BooleanOperator { get; set; }
|
|
public DisplayConditionGroupEntity DisplayConditionGroupEntity { get; set; }
|
|
|
|
public override void ApplyToEntity()
|
|
{
|
|
DisplayConditionGroupEntity.Id = EntityId;
|
|
DisplayConditionGroupEntity.ParentId = Parent?.EntityId ?? new Guid();
|
|
DisplayConditionGroupEntity.BooleanOperator = (int) BooleanOperator;
|
|
|
|
foreach (var child in Children)
|
|
child.ApplyToEntity();
|
|
}
|
|
}
|
|
|
|
public enum BooleanOperator
|
|
{
|
|
And,
|
|
Or,
|
|
AndNot,
|
|
OrNot
|
|
}
|
|
} |