1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00
Artemis/src/Artemis.Core/Models/Profile/Conditions/DisplayConditionGroup.cs
2020-07-09 20:04:14 +02:00

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
}
}